Four Golden Signals

Тема дорожной карты · Observability

Четыре золотых сигнала — наиболее важные метрики для мониторинга любого пользовательского сервиса согласно книге Google SRE: задержка (Latency), трафик (Traffic), ошибки (Errors) и насыщение (Saturation). Задержка измеряет время обслуживания запроса, различая успешные и неудачные ответы, чтобы не маскировать проблемы. Трафик количественно выражает нагрузку на систему — измеряется в HTTP-запросах в секунду, запросах к базе данных в секунду или аналогичных показателях в зависимости от типа сервиса. Ошибки отслеживают частоту неудачных запросов — как явных (HTTP 5xx), так и неявных (неверные результаты, возвращённые со статусом 200). Насыщение описывает, насколько «заполнен» сервис: измерение загрузки CPU, давления памяти или глубины очереди позволяет предсказать деградацию производительности до наступления сбоев. Инструментирование всех четырёх золотых сигналов с помощью метрик Prometheus или OpenTelemetry и их визуализация на дашборде Grafana обеспечивают надёжную основу для определения SLO и реагирования на инциденты.

Как это работает

Four Golden Signals — числовые агрегаты по времени: counters, gauges, histograms. Дёшево хранить, быстро запрашивать, идеально для дашбордов + алертов. Стандарт: Prometheus (де факто), VictoriaMetrics (совместимый, часто проще эксплуатировать), формат OpenMetrics. Инструментируйте приложения client-библиотеками (prom-client для Node, prometheus_client для Python и т.д.). Конвенция имён: <namespace>_<subsystem>_<name>_<unit>. Labels = измерения; cardinality важна.

Когда применять

По дефолту Prometheus-формат метрик везде. 4 золотых сигнала (rate, error, latency-percentile, saturation) на каждый сервис. Histograms — для latency (per-replica + агрегируемые). Pre-aggregate через recording rules для дашбордов с частыми запросами. Cardinality labels ограниченная — высокая cardinality убивает Prometheus.

Типичные ошибки

Ловушки Four Golden Signals: per-user-id labels (взрыв cardinality); Counter где должен быть Histogram (http_requests не говорит про latency); короткий retention без long-term storage backend (когда исследуете "что было на прошлой неделе", данных уже нет).

Связанные понятия

Полезные ресурсы