Метрики и SLO: RED, USE, алерты

↑ 7.2 Observability: логи, метрики, трейсинг, OpenTelemetry · ← Предыдущая

Желательно~3 мин чтенияУровень: senior

Зачем это на собесе

Что считается «здоровьем» сервиса и когда будить дежурного.

Объяснение

МетодДля чегоМетрики
REDсервисы (запросы)Rate — запросов/с; Errors — доля ошибок; Duration — задержка (p50/p95/p99)
USEресурсы (CPU, диск, пул)Utilization, Saturation, Errors
Golden signals (Google)обобщениеlatency, traffic, errors, saturation

SLI — измеряемый показатель («доля успешных запросов быстрее 300 мс»). SLO — цель («99,9% за 30 дней»). SLA — договорное обязательство. Error budget — допустимая доля отказов (100% − SLO = 0,1% ≈ 43 минуты в месяц).

SLOДопустимая недоступность в месяц
99%~7,3 ч
99,9%~43 мин
99,99%~4,3 мин

Алерты:

  • Алерт на симптомы для пользователя (ошибки, задержка), а не на причины (CPU 80%).
  • Burn rate: сколько бюджета сжигается: быстрое сгорание (14× за 1 час) — критично, медленное (2× за 6 часов) — тикет.
  • Каждый алерт — действие, срочность и runbook. Алерты без действий убирайте (alert fatigue).
- alert: HighErrorBudgetBurn
  expr: (sum(rate(http_requests_total{status=~"5.."}[1h])) / sum(rate(http_requests_total[1h]))) > 14 * 0.001
  for: 5m
  labels: { severity: page }
  annotations: { runbook: "https://wiki/runbooks/orders-5xx" }

Нюансы и подводные камни

  • Средняя задержка скрывает хвосты: используйте перцентили и гистограммы.
  • Перцентили нельзя усреднять между инстансами — агрегируйте гистограммы.
  • SLO должно опираться на опыт пользователя, а не на удобство измерения.
  • Слишком жёсткое SLO замедляет разработку; слишком мягкое обесценивает надёжность.

Практика

  1. Определите SLI/SLO для критичного эндпоинта.
  2. Настройте алерты по burn rate.
  3. Посчитайте error budget за месяц и решите, можно ли выкатывать риск.

Вопросы с ответами

Связанные темы