Типы метрик
Тема дорожной карты · Prometheus
Prometheus определяет четыре основных типа метрик, которые используются клиентскими библиотеками для инструментирования кода приложений: counter (счётчик), gauge (датчик), histogram (гистограмма) и summary (сводка). Счётчик — это монотонно возрастающее значение для отслеживания итогов, например http_requests_total, тогда как датчик представляет значение, которое может расти и уменьшаться, например node_memory_MemAvailable_bytes. Гистограмма распределяет наблюдения по настраиваемым корзинам и предоставляет временные ряды _bucket, _sum и _count, позволяя оценивать квантили с помощью функции histogram_quantile(). Сводка аналогична гистограмме, но вычисляет квантили на стороне клиента и передаёт их как отдельные временные ряды с метками quantile, что затрудняет агрегацию между экземплярами. Типы метрик Prometheus определяют как то, каким образом инструментальный код должен записывать измерения, так и то, как PromQL-запросы должны интерпретировать результирующие временные ряды.
Как это работает
Типы метрик: временной ряд уникально идентифицируется metric_name{label1="value1", label2="value2"}. Samples — float64 + timestamp. Четыре типа метрик: Counter (только растёт — http_requests_total), Gauge (растёт/убывает — cpu_usage), Histogram (bucket + sum + count — для распределений latency), Summary (quantiles считаются client-side — менее распространён). Конвенция имён: <namespace>_<subsystem>_<name>_<unit> (например http_request_duration_seconds).
Когда применять
Histogram лучше Summary для latency — histograms агрегируются между репликами; summaries нет. Counter — для того, по чему делаете rate() (счёт событий); Gauge — для текущих значений. Labels выбирайте осторожно — каждая уникальная комбинация = новый временной ряд. Не используйте labels для unbounded-значений (user ID, пути с ID).
Типичные ошибки
Ловушки Типы метрик: labels с unbounded-cardinality (user_id, request_id, полные URL — Prometheus взрывается); имена метрик без единиц (http_request_duration — секунды? мс? всегда включайте суффикс единицы); непоследовательные label-имена между метриками + приложениями (join-ы падают).