A modern, real-time Service Level Objective (SLO) monitoring system with intelligent alerting and beautiful web interface.
- Real-time SLO Monitoring: Track service reliability metrics in real-time
- Error Budget Tracking: Monitor and manage your error budgets effectively
- Smart Alerting: Get notified on Slack when SLOs are breached or budgets are exhausted
- Beautiful Web Interface: Modern React-based dashboard with glassmorphism design
- Multi-SLI Support: Monitor multiple Service Level Indicators per service
- PromQL Integration: Use Prometheus queries for flexible metric collection
- Personal Slack Integration: Each user configures their own Slack webhook
- Guided Onboarding: Step-by-step setup process for new users
- Go 1.19 or higher
- Node.js 16 or higher
- npm or yarn
- Prometheus (for metrics collection)
-
Clone the repository
git clone https://github.com/yourusername/slogguard.git cd slogguard -
Build the frontend
cd frontend npm install npm run build cd ..
-
Build and run the backend
go build -o slogguard cmd/main.go ./slogguard
-
Access the application Open your browser and navigate to
http://localhost:8080
- Complete Onboarding: Follow the guided setup to configure your Slack webhook
- Add Services: Configure your first service with SLIs and targets
- Monitor: Watch your SLO dashboard and receive alerts when needed
- Total Services count with animated counters
- Healthy vs Alerting services breakdown
- Average error budget remaining
- Total SLO breaches
- Live service health indicators
- Error budget progress bars
- SLI performance metrics
- Quick service management
- White, blue, and black color scheme
- Glassmorphism effects and smooth animations
- Responsive design for all devices
- Dark mode support
Configure services via the web interface or API:
{
"service_name": "payment-api",
"target": 99.9,
"time_window": "30d",
"metrics_endpoint": "http://payment-api:8080/metrics",
"slis": [
{
"name": "availability",
"query": "sum(rate(http_requests_total{status!~\"5..\"}[5m])) / sum(rate(http_requests_total[5m])) * 100",
"target": 99.9
},
{
"name": "latency_p95",
"query": "histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) * 1000",
"target": 200
}
]
}Set up Slack alerts through the onboarding process:
{
"slack": {
"webhook_url": "https://hooks.slack.com/services/...",
"channel": "#sloguard-alerts",
"username": "SLOGuard",
"icon_emoji": ":warning:",
"enabled": true
},
"base_url": "http://localhost:8080",
"enabled": true,
"alert_cooldown": "5m"
}GET /configs/{service}- Get service configurationPOST /configs- Create/update service configurationGET /status- Get all service SLO statusesGET /status/{service}- Get specific service status
GET /budget- Get all error budgetsGET /budget/{service}- Get specific service budgetGET /breaches/{service}- Get service breach history
GET /alerts/config- Get alert configurationPOST /alerts/config- Update alert configurationPOST /alerts/test- Send test alertGET /alerts/stats- Get alerting statistics
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β React Frontend β β Go Backend β β Prometheus β
β β β β β β
β β’ Dashboard βββββΊβ β’ API Server βββββΊβ β’ Metrics β
β β’ Service Mgmt β β β’ SLO Monitor β β β’ Time Series β
β β’ Alerts Config β β β’ Alert Manager β β β’ PromQL β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Slack API β
β β
β β’ Webhooks β
β β’ Notifications β
βββββββββββββββββββ
SLOGuard sends intelligent alerts for:
- SLO Breach: When service SLI drops below target
- Service Recovery: When service returns to healthy state
- Budget Warning: When error budget drops below 20%
- Budget Critical: When error budget drops below 5%
- Budget Exhausted: When error budget is completely consumed
# Run with hot reload
go run cmd/main.go
# Run tests
go test ./...
# Build for production
go build -o slogguard cmd/main.gocd frontend
# Start development server
npm start
# Run tests
npm test
# Build for production
npm run buildslogguard/
βββ cmd/
β βββ main.go # Application entry point
βββ internal/
β βββ api/ # HTTP handlers and routes
β βββ alert/ # Alert management system
β βββ budget/ # Error budget calculations
β βββ config/ # Configuration management
β βββ monitor/ # SLO monitoring logic
β βββ prometheus/ # Prometheus integration
β βββ types/ # Shared data structures
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ services/ # API service layer
β β βββ types/ # TypeScript interfaces
β βββ public/ # Static assets
βββ go.mod # Go dependencies
βββ go.sum # Go dependency checksums
βββ README.md # This file
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Go and React
- UI components from Material-UI
- Metrics collection via Prometheus
- Alerting through Slack API
- π§ Email: support@sloguard.dev
- π¬ Slack: Join our community
- π Issues: GitHub Issues
- π Docs: Documentation
SLOGuard - Keep your services reliable, one SLO at a time! π‘οΈβ¨