Какие существуют основные типы метрик в системах мониторинга, таких как Prometheus?

Ответ

В современных системах мониторинга, и в частности в популярной для Go связке с Prometheus, выделяют четыре основных типа метрик:

  1. Counter (Счётчик) — монотонно возрастающее значение. Используется для подсчета событий, например, общего числа HTTP-запросов или количества ошибок. Не может уменьшаться, только сбрасываться на 0 при перезапуске сервиса.

    requestsTotal = prometheus.NewCounter(prometheus.CounterOpts{
        Name: "http_requests_total",
        Help: "Total number of HTTP requests.",
    })
  2. Gauge (Измеритель) — значение, которое может произвольно увеличиваться и уменьшаться. Идеально подходит для измерения текущих состояний: количество активных горутин, использование памяти, загрузка CPU, длина очереди.

    activeConnections = prometheus.NewGauge(prometheus.GaugeOpts{
        Name: "current_active_connections",
        Help: "Current number of active connections.",
    })
  3. Histogram (Гистограмма) — распределяет наблюдения (например, длительность запроса) по настраиваемым корзинам (бакетам) и предоставляет их суммарное значение. Позволяет вычислять квантили (например, 95-й перцентиль времени ответа) на стороне сервера Prometheus.

    responseLatency = prometheus.NewHistogram(prometheus.HistogramOpts{
        Name:    "http_response_latency_seconds",
        Help:    "Response latency in seconds.",
        Buckets: prometheus.DefBuckets, // Предопределенные бакеты
    })
  4. Summary (Сводка) — похожа на гистограмму, но вычисляет квантили непосредственно на стороне клиентского приложения и отправляет их в Prometheus. Более ресурсоемка для приложения, но менее требовательна к ресурсам сервера Prometheus при расчете квантилей.