Налаштування SLA-моніторингу для веб-додатку
SLA-моніторинг — це вимірювання того, виконує ли система взяті на себе зобов'язання щодо доступності та якості. Без інструментальної бази SLA залишається декларацією намірів. З моніторингом — це вимірюване та підтверджуване угода.
Що вимірюємо в SLA
Availability (доступність). Відсоток часу, протягом якого сервіс працює коректно. Формула: (total_time - downtime) / total_time * 100%. Для 99.9% SLA допустимо ~8.7 годин простоя на рік. Для 99.99% — 52 хвилини.
Response Time. P95 та P99 часів відповіді важливіше за середнє (mean). Середнє приховує хвіст повільних запитів, на які скаржаться користувачі. Типові цілі: P95 < 500ms, P99 < 2s для веб-додатку.
Error Rate. Відсоток відповідей з кодами 5xx. Ціль: < 0.1% для продакшену.
Throughput. Якщо у SLA включена пропускна спроможність — RPS або кількість транзакцій на одиницю часу.
Інструменти збору метрик
Prometheus + Grafana — стандартний стек для self-hosted. Prometheus scrapes метрики кожні 15-30 секунд. Grafana візуалізує та обчислює SLI/SLO.
Datadog / New Relic — managed-рішення, швидкий старт, вбудовані SLO dashboards.
Uptime Robot / Freshping — зовнішній моніторинг доступності (перевірки з різних точок планети), доповнює внутрішній моніторинг.
Налаштування SLI/SLO у Prometheus
# Правило для availability SLO (ціль: 99.9%)
- record: job:availability:ratio_rate5m
expr: |
1 - (
rate(http_requests_total{status=~"5.."}[5m])
/
rate(http_requests_total[5m])
)
# Alert: SLO під загрозою (burn rate > 14.4x за 1 годину)
- alert: SLOBurnRateTooHigh
expr: |
job:availability:ratio_rate5m < 0.999
and
rate(http_requests_total{status=~"5.."}[1h]) > 0
for: 2m
labels:
severity: critical
annotations:
summary: "SLO availability at risk"
Error Budget — ключова концепція. Для 99.9% SLO за 30 днів error budget = 0.1% = 43.2 хвилини. Моніторинг повинен показувати: скільки error budget витрачено, з якою швидкістю витрачається (burn rate).
Зовнішні перевірки доступності
Внутрішні метрики можуть бути зеленими, поки користувачі не можуть дістатися — наприклад, сбой DNS або CDN. Зовнішні HTTP-перевірки з кількох географічних точок:
- Pingdom, Uptime Robot, Checkly — 1-хвилинні перевірки з 5-20 точок світу
- Blackbox Exporter (Prometheus) — probe-перевірки HTTP, TCP, ICMP з власної інфраструктури
Мінімальний набір перевірок: головна сторінка, сторінка логіну, API health endpoint, сторінка після авторизації (для перевірки БД).
SLA-звітність
Автоматичний щомісячний звіт для бізнесу:
- Фактичний uptime vs цільовий
- Список інцидентів з тривалістю та причиною
- Використання error budget
- Тренд — покращується чи деградує
Grafana дозволяє генерувати PDF-звіти за розкладом. Для enterprise — Datadog SLO Reports або Statuspage.
Терміни налаштування
- Prometheus + Grafana + базові SLI — 2-3 дні
- SLO rules + error budget dashboard — 1-2 дні
- Зовнішні перевірки + alerts — 1 день
- Налаштування звітності — 1-2 дні







