Реалізація SLA-дашборда (Uptime, Response Time, Error Rate)
SLA-дашборд — це одне вікно, де бізнес та розроблення бачать одні й ті ж цифри про стан сервісу. Ключова вимога: дашборд повинен відповісти на питання «виконуємо ли ми SLA прямо зараз» за 5 секунд перегляду.
Структура SLA-дашборда
Хороший дашборд має три рівні детальності:
Верхня панель (статус прямо зараз):
- Поточний uptime за місяць (наприклад, 99.94%)
- Залишок error budget у хвилинах/годинах
- Статус сервісу: OK / DEGRADED / DOWN (великий кольоровий індикатор)
Середня панель (тренди за період):
- Графік uptime за останні 30/90 днів
- P50/P95/P99 response time — часовий ряд
- Error rate — часовий ряд з анотаціями інцидентів
Нижня панель (деталізація):
- Breakdown по ендпоінтам: які найповільніші
- Breakdown по регіонам/ДЦ
- Останні інциденти з тривалістю
Реалізація у Grafana
{
"panels": [
{
"title": "SLO Availability (30d)",
"type": "stat",
"targets": [{
"expr": "avg_over_time(job:availability:ratio_rate5m[30d]) * 100",
"legendFormat": "Availability %"
}],
"thresholds": [
{"color": "red", "value": 99.0},
{"color": "yellow", "value": 99.9},
{"color": "green", "value": 99.95}
]
},
{
"title": "Error Budget Remaining",
"type": "gauge",
"targets": [{
"expr": "slo_error_budget_remaining_minutes"
}]
}
]
}
Змінні дашборда для фільтрування: $service, $environment, $time_range. Один дашборд для всіх сервісів.
Ключові метрики та їх обчислення
Uptime %:
(1 - sum(increase(http_requests_total{status=~"5.."}[30d]))
/ sum(increase(http_requests_total[30d]))) * 100
P95 Response Time:
histogram_quantile(0.95,
rate(http_request_duration_seconds_bucket[5m])
)
Error Budget Burn Rate (1h):
(
rate(http_requests_total{status=~"5.."}[1h])
/ rate(http_requests_total[1h])
) / (1 - 0.999)
Burn rate > 14.4 означає: при поточному темпі весь місячний error budget згорить за 2 дні.
Дашборд для різних аудиторій
Технічний дашборд (для розробників): детальні метрики, розбивка по сервісам та ендпоінтам, stack traces з Sentry/Jaeger, кореляція з деплоями.
Управлінський дашборд (для бізнесу): uptime у відсотках, кількість інцидентів, тренд. Мінімум цифр, максимум контексту. Можна зробити read-only Grafana snapshot, оновлюваний раз на добу.
Публічна Status Page (для користувачів) — окрема реалізація (Cachet, Statuspage.io, self-hosted).
Інтеграція з алертингом
На дашборді повинні бути видні: активні alerts прямо зараз, історія alerts за період. Grafana Alerting або Alertmanager (при Prometheus) інтегрується напрямку. Кожен alert на дашборді — анотація на графіках (вертикальна лінія з описом).
Терміни реалізації
- Базові панелі (uptime, response time, error rate) — 1-2 дні
- Error budget + burn rate — 1 день
- Анотації інцидентів + історія — 1 день
- Управлінський дашборд — 1-2 дні







