Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → Четыре золотых сигнала мониторинга

Четыре золотых сигнала Google SRE: latency, traffic, errors, saturation

Что такое четыре золотых сигнала мониторинга из Google SRE: задержка, трафик, ошибки и насыщенность, как их измерять и строить вокруг них алерты и дашборды.

Прямой ответ

Четыре золотых сигнала (Four Golden Signals) — минимальный набор метрик для мониторинга сервиса из книги Google SRE (golden signals — «латентность, трафик, ошибки, насыщенность» — golden signals — метрики — «если следить только за четырьмя — то за этими» — golden signals), зачем: минимум для понимания здоровья сервиса (golden signals — «не тонуть в сотнях метрик» — golden signals — метрики — «четыре сигнала покрывают главное» — golden signals — техдолг); 1. Latency (задержка) (golden signals — «сколько времени занимает запрос» — golden signals — метрики — важно: разделять успех и ошибки (golden signals — «ошибка может вернуться быстро — не смешивать с успехом» — golden signals — метрики — измерять: процентили (метрики — p50/p95/p99 — не среднее — метрики — histogram — «хвосты важнее среднего» — golden signals); 2. Traffic (трафик) (golden signals — «насколько нагружен сервис» — golden signals — метрики — измерять: RPS (golden signals — «запросов в секунду» — golden signals — ёмкость — «нагрузка на сервис» — golden signals — для веб — RPS, для стримов — сообщений/с (golden signals — «трафик по типу» — golden signals); 3. Errors (ошибки) (golden signals — «частота явных и скрытых ошибок» — golden signals — метрики — явные (golden signals — «HTTP 500, исключения» — golden signals — метрики — скрытые (golden signals — «200, но неверные данные/деградация» — golden signals — метрики — измерять: error rate (golden signals — «процент ошибок» — golden signals — метрики — SLO — «error budget» — SLO); 4. Saturation (насыщенность) (golden signals — «насколько ресурс близок к пределу» — golden signals — метрики — измерять: utilization (golden signals — «CPU/память/диск/пулы» — golden signals — use-метод — «utilization/saturation» — use-метод — «насыщенность — опережающий сигнал» — golden signals — «CPU 90% — скоро деградация» — golden signals); связь с SLO (SLO): golden signals → SLI (SLO — «latency p95 < 300 мс, error < 0.1%» — SLO — golden signals — «сигналы — основа SLO» — SLO — golden signals — error budget (SLO — «ошибки в рамках бюджета» — SLO — golden signals); golden signals vs USE (use-метод): golden signals — для сервисов/запросов (golden signals — «латентность/трафик/ошибки/насыщенность сервиса» — golden signals), USE — для ресурсов (use-метод — «utilization/saturation/errors CPU/памяти/диска» — use-метод — «golden signals — сервис, USE — железо» — use-метод — дополняют друг друга (golden signals — use-метод — «оба нужны» — use-метод); когда golden signals: любой сервис (golden signals — «минимум для каждого сервиса» — golden signals — метрики — «стартовая точка мониторинга» — golden signals), основа SLO (SLO — «сигналы → SLI → SLO» — SLO — golden signals), алерты (алерты — «алерты по сигналам» — алерты — golden signals — «ошибки/латентность/насыщенность — алерт» — алерты); антипаттерны: только среднее (метрики — «среднее скрывает хвосты» — метрики — p95/p99 обязательны — метрики — golden signals), latency без разделения успех/ошибка (golden signals — «быстрая ошибка смешана с успехом» — golden signals — метрики — разделять — golden signals), сотни метрик без фокуса (golden signals — «тонуть в метриках» — golden signals — метрики — четыре сигнала — фокус — golden signals — техдолг).

Практика: golden signals в Prometheus

Latency (метрики: histogram (метрики — http_request_duration_seconds_bucket (метрики — golden signals — p95: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) (метрики — «p95 за 5 мин» — метрики — histogram); Traffic (метрики: RPS (метрики — rate(http_requests_total[5m]) (метрики — «запросов в секунду» — метрики — golden signals); Errors (метрики: error rate (метрики — rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) (метрики — «процент 5xx» — метрики — golden signals — SLO); Saturation (метрики: CPU (метрики — utilization (метрики — 1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) (метрики — use-метод — память/диск/пулы (use-метод — «utilization ресурсов» — use-метод); Дашборд (Grafana: четыре панели (Grafana — latency/traffic/errors/saturation (Grafana — golden signals — «один дашборд — четыре сигнала» — Grafana); Алерты (алерты: по сигналам (алерты — «p95 > 500 мс», «error rate > 1%», «CPU > 90%» — алерты — golden signals — incident).

Практический сценарий: мониторинг API по golden signals

Контекст: новый API (ёмкость), боль: мониторинг хаотичный (метрики — «сотни метрик, нет фокуса» — метрики — техдолг — «непонятно, здоров ли сервис» — метрики); решение — golden signals: (1) Latency (метрики — histogram (метрики — http_request_duration_seconds (метрики — p95 (метрики — histogram_quantile(0.95, ...) (метрики — histogram — разделение успех/ошибка (golden signals — «ошибки отдельно» — golden signals); (2) Traffic (метрики — RPS (метрики — rate(http_requests_total[5m]) (метрики — golden signals — ёмкость); (3) Errors (метрики — error rate (метрики — rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) (метрики — SLO — «error budget» — SLO); (4) Saturation (метрики — CPU/память/пулы (метрики — use-метод — «utilization» — use-метод — golden signals); (5) Дашборд (Grafana — четыре панели (Grafana — golden signals — «один дашборд — здоровье сервиса» — Grafana); (6) Алерты (алерты — «p95 > 500 мс», «error > 1%», «CPU > 90%» — алерты — golden signals — incident); (7) SLO (SLO — сигналы → SLI (SLO — «p95 < 300 мс, error < 0.1%» — SLO — golden signals); результат: фокус на четырёх сигналах (golden signals — «здоровье сервиса понятно» — golden signals — метрики — дашборд (Grafana — четыре панели (Grafana — алерты (алерты — по сигналам (алерты — golden signals — SLO (SLO — сигналы → SLI → SLO (SLO — golden signals); вывод: golden signals решили задачу (фокус на главном — golden signals — ADR — «среднее вместо процентилей» — антипаттерн — метрики — техдолг).

FAQ

Что такое четыре золотых сигнала и зачем они? Четыре золотых сигнала (golden signals — latency (golden signals — «задержка» — golden signals), traffic (golden signals — «трафик» — golden signals), errors (golden signals — «ошибки» — golden signals), saturation (golden signals — «насыщенность» — golden signals); зачем: минимум для здоровья сервиса (golden signals — «не тонуть в метриках» — golden signals — метрики — «четыре покрывают главное» — golden signals — техдолг); из Google SRE (golden signals — книга Google SRE — golden signals — SLO — «основа мониторинга» — golden signals); «сотни метрик без фокуса» — антипаттерн (тонуть в метриках — метрики — четыре сигнала — фокус — golden signals — ADR — техдолг).

Как измерять latency правильно и почему не среднее? Правильно: процентили (метрики — p50/p95/p99 (метрики — histogram — «p95 — 95% быстрее» — метрики — golden signals — разделение успех/ошибка (golden signals — «ошибки отдельно» — golden signals); почему не среднее: среднее скрывает хвосты (метрики — «среднее 100 мс, p99 5 с» — метрики — «5% страдают» — метрики — golden signals — «среднее — ложное спокойствие» — метрики); инструменты: histogram (метрики — histogram_quantile (метрики — histogram — «процентили из histogram» — метрики — golden signals); «среднее вместо процентилей» — антипаттерн (хвосты скрыты — метрики — p95/p99 обязательны — метрики — ADR — техдолг).

Чем golden signals отличаются от USE-метода и как их сочетать? Golden signals (golden signals — для сервисов/запросов (golden signals — «латентность/трафик/ошибки/насыщенность сервиса» — golden signals — «как сервис отвечает» — golden signals); USE (use-метод — для ресурсов (use-метод — «utilization/saturation/errors CPU/памяти/диска» — use-метод — «как железо» — use-метод); отличие: golden signals — сервис (golden signals — «внешний взгляд» — golden signals), USE — ресурсы (use-метод — «внутренний взгляд» — use-метод); как сочетать: golden signals — здоровье сервиса (golden signals — «сервис отвечает» — golden signals), USE — почему (use-метод — «сервис тормозит — CPU saturated» — use-метод — «saturation в golden signals — мост к USE» — golden signals — use-метод); «golden signals вместо USE» — нет (разные уровни — golden signals — use-метод — оба нужны — ADR — техдолг).

Как golden signals связаны с SLO и алертами? Golden signals → SLI (SLO — «latency p95, error rate — SLI» — SLO — golden signals — «сигналы — основа SLI» — SLO), SLI → SLO (SLO — «p95 < 300 мс, error < 0.1%» — SLO — golden signals — «SLO по сигналам» — SLO), SLO → error budget (SLO — «ошибки в рамках бюджета» — SLO — golden signals); Алерты (алерты — по сигналам (алерты — «p95 > 500 мс», «error > 1%», «CPU > 90%» — алерты — golden signals — «алерты на деградацию сигналов» — алерты — incident); «SLO без golden signals» — нет (SLO строится на сигналах — SLO — golden signals — сигналы → SLI → SLO → error budget — SLO — ADR — техдолг).

Источники: Google SRE book (monitoring), Prometheus instrumentation, Grafana docs — ссылки в шапке.