Реализация 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).
Интеграция с алертингом
На дашборде должны быть видны: активные алерты прямо сейчас, история алертов за период. Grafana Alerting или Alertmanager (при Prometheus) интегрируется напрямую. Каждый алерт на дашборде — аннотация на графиках (вертикальная линия с описанием).
Сроки реализации
- Базовые панели (uptime, response time, error rate) — 1-2 дня
- Error budget + burn rate — 1 день
- Аннотации инцидентов + история — 1 день
- Управленческий дашборд — 1-2 дня







