← Назад ко всем вопросам

Какие знаешь виды метрик в Prometheus

1️⃣ Как кратко ответить

В Prometheus существуют четыре основных типа метрик: Counter, Gauge, Histogram и Summary. Counter используется для подсчета событий, Gauge измеряет текущее состояние, Histogram собирает распределение значений, а Summary предоставляет квантильные оценки.

2️⃣ Подробное объяснение темы

Prometheus — это система мониторинга и сбора метрик с открытым исходным кодом, которая позволяет собирать и анализировать данные о состоянии систем и приложений. Метрики в Prometheus делятся на четыре основных типа, каждый из которых предназначен для решения определенных задач.

  1. Counter (Счетчик)

    Counter — это монотонно увеличивающаяся метрика, которая используется для подсчета количества событий, таких как количество запросов к серверу или количество ошибок. Counter всегда увеличивается и никогда не уменьшается, за исключением случаев, когда он сбрасывается (например, при перезапуске приложения).

    counter := prometheus.NewCounter(prometheus.CounterOpts{
        Name: "http_requests_total",
        Help: "Total number of HTTP requests.",
    })
    
    • prometheus.NewCounter: Создает новый счетчик.
    • Name: Имя метрики, которое будет использоваться в запросах.
    • Help: Описание метрики для документации.
  2. Gauge (Измеритель)

    Gauge — это метрика, которая может увеличиваться и уменьшаться. Она используется для измерения текущего состояния, например, количества активных пользователей или использования памяти. Gauge подходит для значений, которые могут как увеличиваться, так и уменьшаться.

    gauge := prometheus.NewGauge(prometheus.GaugeOpts{
        Name: "memory_usage_bytes",
        Help: "Current memory usage in bytes.",
    })
    
    • prometheus.NewGauge: Создает новый измеритель.
    • Name: Имя метрики.
    • Help: Описание метрики.
  3. Histogram (Гистограмма)

    Histogram собирает распределение значений в виде гистограммы. Она используется для измерения таких показателей, как время ответа или размер запросов. Histogram разбивает значения на "ведра" (buckets) и подсчитывает количество значений, попадающих в каждое ведро.

    histogram := prometheus.NewHistogram(prometheus.HistogramOpts{
        Name:    "request_duration_seconds",
        Help:    "Histogram of request durations.",
        Buckets: prometheus.LinearBuckets(0.1, 0.1, 10),
    })
    
    • prometheus.NewHistogram: Создает новую гистограмму.
    • Buckets: Определяет границы ведер. В данном примере создается 10 ведер с шагом 0.1, начиная с 0.1.
  4. Summary (Сводка)

    Summary предоставляет квантильные оценки, такие как медиана или 95-й процентиль. Она используется для измерения распределения значений, аналогично Histogram, но с акцентом на квантильные оценки.

    summary := prometheus.NewSummary(prometheus.SummaryOpts{
        Name:       "request_duration_summary",
        Help:       "Summary of request durations.",
        Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
    })
    
    • prometheus.NewSummary: Создает новую сводку.
    • Objectives: Определяет квантильные цели и их точность. Например, 0.5 (медиана) с точностью 0.05.

Эти метрики позволяют Prometheus эффективно собирать и анализировать данные о производительности и состоянии систем, предоставляя возможность для глубокого анализа и оптимизации.

Тема: Мониторинг / Логи / Observability
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки