Sobes.tech
Middle

Какви видове метрики в Prometheus знаете?

sobes.tech AI

Отговор от AI

Prometheus поддържа четири основни типа метрики:

  1. Брояч (Counter): Монотонно нарастваща стойност, която може само да се увеличава (или да се нулира при рестартиране на процеса). Използва се за броене на инкрементални събития, като заявки, грешки или завършени задачи.
    // Пример в Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Общ брой HTTP заявки.",
        },
    )
    
  2. Гейдж (Gauge): Произволна числова стойност, която може да се увеличава или намалява. Използва се за измерване на текущото състояние на нещо, като използване на CPU, памет, брой активни потребители или размер на опашката.
    # Пример в Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Текущ процент на използване на CPU')
    cpu_usage.set(55.5)
    
  3. Хистограма (Histogram): Измерва разпределението на проби (например, времена за отговор на заявки) и ги групира в конфигурируеми кошници (buckets). Позволява получаване на данни за броя проби във всяка кошница и общата сума на стойностите. Използва се за анализ на закъснения.
    // Пример в Java
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Продължителност на заявката в секунди.")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Кошници
        .register();
    
  4. Обобщение (Summary): Подобно на хистограмата, но на клиента изчислява конфигурируеми квантилни стойности на разпределението на пробите в плъзгащо се времево окно. Осигурява също общия брой проби и тяхната сума. Подходящо за измерване на закъснения, когато квантилите са важни, но изисква повече изчислителна мощност и може да предоставя по-малко точни квантилни стойности при агрегация.
    # Пример в Ruby
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Продължителност на заявката в секунди.')
    

Изборът на тип метрика зависи от характера на данните, които трябва да се следят.