SLI / SLO / SLA basics
Тема дорожной карты · DevOps Engineer
Фреймворк надёжности, формализованный Google в SRE-книге: SLI (Service Level Indicator) — измеряемая метрика опыта пользователя (доля успешных запросов, p99-задержка, свежесть данных). SLO (Service Level Objective) — целевое значение SLI, которое вы себе ставите внутренне (например, «99,9% запросов успешны»). SLA (Service Level Agreement) — внешний контракт с последствиями при нарушении. Разрыв между SLO и 100% — это error budget, запас, который вы тратите на выкатку новых фич.
Как это работает
SLI / SLO / SLA basics — практика инструментирования систем так, чтобы можно было задавать произвольные вопросы об их состоянии и поведении. Три столпа: metrics (числовые временные ряды — Prometheus), logs (структурированные события — Loki / ELK) и traces (пути запросов между сервисами — Tempo / Jaeger). Современные стеки объединяют их в Grafana для визуализации, с alert-правилами в Prometheus / Alertmanager, срабатывающими на нарушения SLI. Термины SLI/SLO/SLA (популяризованные книгой Google SRE) дают observability бизнес-ориентированный язык: определите "достаточно хорошо", измерьте и распланируйте error budget.
Когда применять
Внедряйте SLI / SLO / SLA basics до прода — дебаг инцидента без метрик, логов и trace'ов — это гадание. Минимум: Prometheus + node-exporter + Grafana на одной VM, скрейпящие /metrics каждого сервиса. Логи (Loki + Promtail) добавьте в первый месяц. Distributed tracing окупается, когда у вас 5+ сервисов, общающихся друг с другом. Определите 1–2 SLI на каждый критичный user journey (например, "checkout p95 latency < 500мс") и алертите на burn rate, а не на point-in-time нарушения порога.
Типичные ошибки
Ловушки observability: alert fatigue (50 алертов/день = 0 actionable); cardinality-взрыв метрик (один label на user-id положит Prometheus OOM); неструктурированные логи (регулярки на "ERROR" не масштабируются); нет log retention (платите вечно); красивые дашборды, не отвечающие на конкретные вопросы инцидента; нет runbook к каждому алерту (просыпаться в 3 ночи на "high latency" без remediation-шагов — жестоко). Версионируйте дашборды в Git через Grafana provisioning.