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

Какие типы метрик поддерживает Prometheus и в чём разница

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

Prometheus поддерживает четыре типа метрик: Counter, Gauge, Histogram и Summary. Counter — это монотонно увеличивающийся счетчик. Gauge — это метрика, которая может увеличиваться и уменьшаться. Histogram собирает данные о распределении значений, разбивая их на интервалы (buckets). 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: Создает новый счетчик.
    • CounterOpts: Опции для настройки счетчика, включая имя и описание.
  2. Gauge (Измеритель)

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

    gauge := prometheus.NewGauge(prometheus.GaugeOpts{
        Name: "memory_usage_bytes",
        Help: "Current memory usage in bytes.",
    })
    
    • prometheus.NewGauge: Создает новый измеритель.
    • GaugeOpts: Опции для настройки измерителя, включая имя и описание.
  3. 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: Создает новую гистограмму.
    • HistogramOpts: Опции для настройки гистограммы, включая имя, описание и интервалы.
    • LinearBuckets: Создает линейные интервалы от 0.1 до 1.0 с шагом 0.1.
  4. Summary (Сводка)

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

    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: Создает новую сводку.
    • SummaryOpts: Опции для настройки сводки, включая имя, описание и квантильные цели.
    • Objectives: Определяет квантильные цели и их точность.

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

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

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

Твои заметки