Ответ
В современных системах мониторинга, и в частности в популярной для Go связке с Prometheus, выделяют четыре основных типа метрик:
-
Counter (Счётчик) — монотонно возрастающее значение. Используется для подсчета событий, например, общего числа HTTP-запросов или количества ошибок. Не может уменьшаться, только сбрасываться на 0 при перезапуске сервиса.
requestsTotal = prometheus.NewCounter(prometheus.CounterOpts{ Name: "http_requests_total", Help: "Total number of HTTP requests.", })
-
Gauge (Измеритель) — значение, которое может произвольно увеличиваться и уменьшаться. Идеально подходит для измерения текущих состояний: количество активных горутин, использование памяти, загрузка CPU, длина очереди.
activeConnections = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "current_active_connections", Help: "Current number of active connections.", })
-
Histogram (Гистограмма) — распределяет наблюдения (например, длительность запроса) по настраиваемым корзинам (бакетам) и предоставляет их суммарное значение. Позволяет вычислять квантили (например, 95-й перцентиль времени ответа) на стороне сервера Prometheus.
responseLatency = prometheus.NewHistogram(prometheus.HistogramOpts{ Name: "http_response_latency_seconds", Help: "Response latency in seconds.", Buckets: prometheus.DefBuckets, // Предопределенные бакеты })
-
Summary (Сводка) — похожа на гистограмму, но вычисляет квантили непосредственно на стороне клиентского приложения и отправляет их в Prometheus. Более ресурсоемка для приложения, но менее требовательна к ресурсам сервера Prometheus при расчете квантилей.