Настройка 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])
)
# Алерт: 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 дня
- Внешние проверки + алерты — 1 день
- Настройка отчётности — 1-2 дня







