{"id":50711989,"url":"https://github.com/philyuchkoff/slozy-oss","last_synced_at":"2026-06-09T16:03:34.919Z","repository":{"id":337248015,"uuid":"1147787510","full_name":"philyuchkoff/slozy-oss","owner":"philyuchkoff","description":"Automated and simplified SLO creation for product teams and developers. Full alerting support, OpenSLO YAML format.","archived":false,"fork":false,"pushed_at":"2026-06-09T08:36:13.000Z","size":5601,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-09T10:03:14.663Z","etag":null,"topics":["monitoring","observability","openslo","reliability","reliability-engineering","reliability-tools","service-level-indicator","service-level-objectives","site-reliability-engineering","slo","slo-dashboard","slo-generator","slo-monitoring"],"latest_commit_sha":null,"homepage":"https://slozy.ru","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philyuchkoff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-02T07:53:13.000Z","updated_at":"2026-06-09T08:36:17.000Z","dependencies_parsed_at":"2026-02-17T17:00:54.718Z","dependency_job_id":"35142e71-71da-43f9-b106-e91970ee9555","html_url":"https://github.com/philyuchkoff/slozy-oss","commit_stats":null,"previous_names":["philyuchkoff/slozy"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/philyuchkoff/slozy-oss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philyuchkoff%2Fslozy-oss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philyuchkoff%2Fslozy-oss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philyuchkoff%2Fslozy-oss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philyuchkoff%2Fslozy-oss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philyuchkoff","download_url":"https://codeload.github.com/philyuchkoff/slozy-oss/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philyuchkoff%2Fslozy-oss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34114444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["monitoring","observability","openslo","reliability","reliability-engineering","reliability-tools","service-level-indicator","service-level-objectives","site-reliability-engineering","slo","slo-dashboard","slo-generator","slo-monitoring"],"created_at":"2026-06-09T16:03:34.373Z","updated_at":"2026-06-09T16:03:34.910Z","avatar_url":"https://github.com/philyuchkoff.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🦥 SLOzy OSS - [SLO made lazy and easy (Open Source)](https://slozy.ru/)\n\n**This is the open-source version of SLOzy. For the commercial version with real-time monitoring, database persistence, and advanced features, see [SLOzy Commercial](https://github.com/philyuchkoff/slozy).**\n\nA tool for creating Service Level Objectives (SLOs) and generating OpenSLO-compliant configuration files.\n\n## ⚠️ Important Notice\n\n**SLOzy OSS is being maintained in minimal maintenance mode.** The commercial version includes:\n\n- ✅ Real-time SLO monitoring (burn rate, error budget visualization)\n- ✅ Database persistence (PostgreSQL + versioning)\n- ✅ Authentication \u0026 Authorization (OAuth 2.0 + RBAC)\n- ✅ Prometheus \u0026 CloudWatch integration\n- ✅ GitOps workflow (GitHub/GitLab sync)\n- ✅ Anomaly detection \u0026 smart recommendations\n- ✅ Advanced dashboards \u0026 reporting\n\n**For production use, we recommend SLOzy Commercial.** This OSS version remains free-as-in-beer for those who prefer a simple YAML generator.\n\n---\n\n## ✨ Features\n\n### Core Features\n\n- 🎯 **SLO Creation** - Define service level objectives with targets\n- 📊 **Multiple Indicators** - Support for latency, availability, throughput\n- 🔔 **Integrated Alerting** - Generate Prometheus rules, AlertManager configs\n- 📈 **Grafana Dashboards** - Auto-generated dashboards for monitoring\n- 📝 **Documentation** - Automatically generate README files\n- 🎨 **Web UI** - Intuitive web interface for SLO management\n- 📋 **Templates** - Pre-built templates for common services\n\n### Advanced Features\n\n- 🏷️ **Autocompletion** – Smart hints for metrics, teams, owners\n- 📈 **Visualization** – Preview SLO burn rates before saving\n- 🎛 **Multi-file Generation** – All configs packaged in ZIP\n- 🌐 **CORS Support** – Direct integration with frontend\n- 📑 **Template Editor** – Edit existing or create new templates\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Go 1.22 or later\n- No external dependencies required for development\n- systemd and Nginx for production deployment\n\n### Installation\n\n#### Development Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/philyuchkoff/slozy-oss.git\ncd slozy-oss\n\n# Build the application\nmake build\n\n# Run in development mode\nmake run\n```\n\n#### Production Deployment\n\n##### 📦 Using Distribution Scripts (Recommended)\n\n```bash\n# Create distributable package\n./scripts/distribute.sh\n\n# Deploy to remote server\n./scripts/deploy.sh -s user@server.com dist/slozy-v1.4.0-abc123-20260429.zip -b -r\n\n# With custom options\n./scripts/deploy.sh \\\n  --server deploy@your-server.com \\\n  --path /opt/slozy \\\n  --name slozy \\\n  --backup \\\n  --restart \\\n  dist/slozy-v1.4.0-abc123-20260429.zip\n```\n\n##### Manual Deployment\n\n```bash\n# Clone the repository\ngit clone https://github.com/philyuchkoff/slozy-oss.git\ncd slozy-oss\n\n# Build for production\nmake build-prod\n\n# Install and configure\nsudo ./scripts/setup.sh\n\n# Configure environment\nsudo nano /opt/slozy/.env\n\n# Start service\nsudo systemctl start slozy\n```\n\n#### Docker Deployment\n\n```bash\n# Build the image\ndocker build -t slozy .\n\n# Run with persistent storage\ndocker run -d \\\n  --name slozy \\\n  -p 8080:8080 \\\n  -v $(pwd)/data:/app/data \\\n  slozy\n```\n\n#### Access Web Interface\n\nOpen your browser to: \u003chttp://localhost:8080\u003e (or your configured host/port)\n\n## 📖 Usage\n\n### 1. Creating SLOs\n\n#### Using Web UI (Recommended)\n\n1. Navigate to \u003chttp://localhost:8080\u003e\n2. Click \"Create SLO\"\n3. Fill in service information:\n   - Service name and description\n   - SLO name and description  \n   - Metric source and query\n   - Target percentage and threshold\n   - Team and labels\n4. Configure alerting:\n   - Enable alerting\n   - Set notification channels (Slack, email, PagerDuty, Telegram)\n   - Configure burn rate thresholds\n   - Set severity levels\n5. Click \"Generate \u0026 Download\"\n6. Receive ZIP archive with:\n   - OpenSLO YAML file\n   - Prometheus alert rules (optional)\n   - AlertManager config (optional)\n   - Grafana dashboard JSON (optional)\n   - README with instructions\n\n#### Using API\n\n```bash\ncurl -X POST http://localhost:8080/api/slo/create \\\n  -H \"Content-Type: application/json\" \\\n  -d @slo-config.json \\\n  -o slo-files.zip\n```\n\n### 2. Managing Templates\n\n#### Using Built-in Templates\n\nSLOzy includes pre-built templates:\n\n- **Web API** – Latency and availability for HTTP services\n- **Database** – Query latency and availability\n- **Kubernetes** – Infrastructure SLOs\n- **Message Queue** – Throughput and latency\n- **Load Balancer** – Request latency\n- **Cache System** – Response time\n- **Object Storage** – Availability and latency\n- **Mobile App** – Crash-free users and performance\n- **CI/CD Pipeline** – Build success rate\n- **IoT Devices** – Device availability\n- **Monitoring Systems** – Service uptime\n\n#### Creating Custom Templates\n\n1. Navigate to \u003chttp://localhost:8080\u003e\n2. Click \"Templates\" tab\n3. Click \"Create Template\"\n4. Fill in template details\n5. Save template - automatically available\n\n### 3. Advanced Configuration\n\n#### Environment Variables\n\n```bash\n# Server Configuration\nexport PORT=8080                         # Server port\nexport DATA_DIR=./data                       # Data directory\nexport TEMPLATES_DIR=./templates              # Templates directory\nexport STATIC_DIR=./static                      # Static files directory\n\n# Alerting Configuration\nexport TELEGRAM_BOT_TOKEN=your_bot_token     # Telegram bot token\nexport TELEGRAM_CHAT_ID=your_chat_id        # Telegram chat ID\nexport SMTP_HOST=localhost:25                  # SMTP server\nexport SMTP_FROM=slo-alerts@example.com         # Email from address\nexport GRAFANA_URL=https://grafana.example.com    # Grafana base URL\n```\n\n#### File Structure\n\n```\nslozy/\n├── cmd/slozy-server/          # Application source\n│   ├── internal/              # Internal packages\n│   │   ├── config/          # Configuration management\n│   │   ├── generators/       # File generators\n│   │   ├── handlers/        # HTTP handlers\n│   │   ├── middleware/       # HTTP middleware\n│   │   └── models/          # Data models\n│   └── main.go               # Application entry\n├── static/                   # Web UI assets\n├── templates/                # SLO templates\n├── data/                     # Generated SLO files\n├── bin/                      # Build output\n├── Makefile                  # Build commands\n└── README.md                 # This file\n```\n\n## 🧰 Development\n\n### Running in Development Mode\n\n```bash\nmake dev\n```\n\nRequires `air` for hot reload (`go install github.com/air-verse/air@latest`).\n\n### Available Commands\n\n```bash\nmake build      # Build application\nmake run        # Run application\nmake dev        # Run in development mode\nmake test       # Run tests\nmake clean      # Clean build artifacts\nmake install    # Install system-wide\nmake deps       # Download dependencies\nmake lint       # Run linter\ndocker-build   # Build Docker image\ndocker-run     # Run in Docker container\nmake web        # Open web interface\n```\n\n## 🐳 Docker Support\n\n```bash\n# Build image\ndocker build -t slozy:latest .\n\n# Run container\ndocker run -p 8080:8080 \\\n  -v $(PWD)/data:/app/data \\\n  slozy:latest\n```\n\nOr use docker-compose:\n\n```bash\ndocker-compose up\n```\n\n## 📊 Monitoring SLOs\n\nOnce SLOs are created:\n\n### 1. OpenSLO Files\n\nThe generated YAML files can be used with any OpenSLO-compatible tool.\n\n### 2. Prometheus Rules\n\nImport the generated alert rules into your Prometheus server:\n\n```bash\ncurl -X POST http://localhost:9090/api/v1/rules \\\n  -H \"Content-Type: application/yaml\" \\\n  --data-binary @service-slo-prometheus-alerts.yaml\n```\n\n### 3. Grafana Dashboards\n\nImport the JSON dashboard files:\n\n1. Navigate to Grafana\n2. Click \"+\" → \"Import\"\n3. Upload the dashboard JSON file\n4. Select data source\n5. Save dashboard\n\n### 4. AlertManager Configuration\n\nThe generated configuration includes:\n\n- Routes for different severity levels\n- Integration with Slack, email, PagerDuty, Telegram\n- Inhibition rules to prevent alert spam\n\n## 📋 Integration Examples\n\n### Kubernetes\n\n```yaml\napiVersion: v1\nkind: Deployment\nmetadata:\n  name: slozy\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: slozy\n  template:\n    metadata:\n      labels:\n        app: slozy\n    spec:\n      containers:\n      - name: slozy\n        image: slozy:latest\n        ports:\n        - containerPort: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: slozy-service\nspec:\n  selector:\n    app: slozy\n  ports:\n    - port: 80\n      targetPort: 8080\n```\n\n### Terraform\n\n```hcl\nresource \"docker_image\" \"slozy\" {\n  name = \"slozy\"\n  build_dir = \"${path.module}\"\n}\n\nresource \"docker_container\" \"slozy\" {\n  image = docker_image.slozy.latest\n  name  = \"slozy\"\n  ports {\n    internal = 8080\n    external = 8080\n  }\n}\n```\n\n## 🔧 Troubleshooting\n\n### Build Issues\n\n```bash\n# Clean build\nmake clean \u0026\u0026 make build\n\n# Update dependencies\ngo mod tidy\n\n# Verify Go version\ngo version  # Should be 1.21+\n```\n\n### Runtime Issues\n\n```bash\n# Check port usage\nlsof -i :8080\n\n# Use different port\nPORT=9090 ./bin/slozy\n\n# Check logs\n./bin/slozy 2\u003e\u00261 | tee slozy.log\n\n# Verify data directory permissions\nls -la data/\n```\n\n### Permission Issues\n\n```bash\n# macOS/Linux\nchmod +x ./bin/slozy\n\n# Windows\nicacls slozy.exe /grant Everyone:F\n```\n\n## 🏢 Architecture\n\nThe project follows Go project layout:\n\n- **cmd/** - Application entry points\n- **internal/** - Private application code\n- **static/** - Static assets\n- **templates/** - SLO templates\n- **examples/** - Usage examples\n\n### Key Components\n\n1. **Generators** (cmd/slozy-server/internal/generators/)\n   - `openslo.go` - OpenSLO YAML generation\n   - `prometheus.go` - Prometheus alert rules\n   - `alertmanager.go` - Alertmanager configuration\n   - `grafana.go` - Grafana dashboard JSON\n   - `readme.go` - Documentation generation\n\n2. **Handlers** (cmd/slozy-server/internal/handlers/)\n   - `slo.go` - SLO CRUD operations\n   - `template.go` - Template management\n\n3. **Models** (cmd/slozy-server/internal/models/)\n   - `slo.go` - Data structures\n   - `validator.go` - Input validation\n\n4. **Middleware** (cmd/slozy-server/internal/middleware/)\n   - `logging.go` - Request/response logging\n\n## 📄 OpenSLO Compatibility\n\nSLOzy generates fully compliant OpenSLO v1alpha files:\n\n- API version: openslo/v1alpha\n- SLO object with metadata and spec\n- Time windows with rolling/budgeting support\n- Indicator configuration based on type\n- Alert policies with burn rate conditions\n\n## 📦 Distribution and Deployment\n\n### Automated Scripts\n\nFor easy production deployment:\n\n```bash\n# Create distribution package\n./scripts/distribute.sh\n\n# Deploy to remote server  \n./scripts/deploy.sh -s user@server.com dist/slozy-*.zip -b -r\n\n# Full installation on clean server\nsudo ./scripts/setup.sh full\n```\n\nSee [scripts/README.md](scripts/README.md) for detailed instructions.\n\n### Production Features\n\n- ✅ Graceful shutdown with 30s timeout\n- ✅ Configurable rate limiting (5-10 req/s)\n- ✅ Structured JSON logging\n- ✅ Health monitoring endpoint\n- ✅ Security headers and CORS\n- ✅ Prometheus/Grafana integration\n- ✅ Systemd service management\n\n### Configuration\n\n```bash\n# Environment variables\nPORT=8080                         # Server port\nDATA_DIR=/opt/slozy/data           # Data directory\nTEMPLATES_DIR=/opt/slozy/templates   # Templates\nSTATIC_DIR=/opt/slozy/static         # Static files\n\n# Alerting (optional)  \nTELEGRAM_BOT_TOKEN=...              # Telegram bot token\nTELEGRAM_CHAT_ID=...               # Chat ID\nLOG_LEVEL=info                      # Logging level\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Make your changes\n4. Add tests if applicable\n5. Run linter: `make lint`\n6. Run tests: `make test`\n7. Submit pull request\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n## 🙏 Acknowledgments\n\nBuilt using Go with standard libraries only.\nOpenSLO specification by the OpenSLO community.\nIcons and visual design credit to original authors.\n\n---\n\n**Made with ❤️**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilyuchkoff%2Fslozy-oss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilyuchkoff%2Fslozy-oss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilyuchkoff%2Fslozy-oss/lists"}