Four Golden Signals
SRE · Observability
Проблема
Дашборд сервиса — сборная солянка: CPU, память, количество логов, случайные бизнес-метрики. При инциденте непонятно, куда смотреть первым делом. При ревью дашбордов разных команд — у каждой своя философия, общие KPI отсутствуют.
Решение
Метрики Four Golden Signals из Google SRE Book — минимально достаточный набор для любого user-facing сервиса:
| Signal | Что меряет | Пример для HTTP-сервиса |
|---|---|---|
| Latency | Сколько времени занимает запрос (отдельно успех и ошибки!) | p50 / p95 / p99 времени ответа |
| Traffic | Сколько сервис обслуживает, в натуральных единицах | RPS, сообщений в очереди в секунду |
| Errors | Доля неуспешных запросов | Error rate = 5xx / total |
| Saturation | Насколько забит ресурс, ближайший к узкому месту | CPU %, очередь worker'ов, heap util |
Правило: если эти четыре графика в норме — пользователь не страдает. Если один из них «красный» — вот куда смотреть.
Пример
Prometheus + Grafana для HTTP-сервиса с http_requests_total и http_request_duration_seconds:
# Latency — p95 по всем успешным запросам
histogram_quantile(0.95,
sum by (le) (rate(http_request_duration_seconds_bucket{status!~"5.."}[5m]))
)
# Traffic
sum(rate(http_requests_total[5m]))
# Errors — доля 5xx
sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
# Saturation — утилизация CPU пода
sum by (pod) (rate(container_cpu_usage_seconds_total[5m]))
/
sum by (pod) (kube_pod_container_resource_limits{resource="cpu"})
Бонус — recording rules, чтобы тяжёлые запросы не пересчитывались на каждом обновлении дашборда:
# prometheus/rules/golden.yml
groups:
- name: golden-signals
interval: 30s
rules:
- record: job:http_request_duration_seconds:p95_5m
expr: histogram_quantile(0.95,
sum by (job, le) (rate(http_request_duration_seconds_bucket[5m])))
- record: job:http_errors:ratio_5m
expr: sum by (job) (rate(http_requests_total{status=~"5.."}[5m]))
/
sum by (job) (rate(http_requests_total[5m]))
Когда применять
- Всегда, как только у сервиса появляется пользователь (внутренний или внешний).
- До любых «красивых» бизнес-дашбордов. Сначала Golden, потом уже revenue/funnel.
Источник
- Google SRE Book — Monitoring Distributed Systems
- dastergon/awesome-sre — раздел Monitoring & Observability
- binhnguyennus/awesome-scalability — разбор реальных дашбордов
Как применить у себя
- Для каждого user-facing сервиса — отдельная Grafana-дашборд-страница из 4 панелей.
- Вынести Prometheus-запросы в recording rules.
- Алерты — только на два сигнала, которые действительно будят человека: errors > X% и latency p95 > Y ms.
- После того как дежурный смог локализовать реальный инцидент за 1–2 минуты по Golden Signals — статус Изучено.