Назад к вопросам
Middle
154
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

  1. Счетчик (Counter): Монотонно возрастающее значение, которое может только увеличиваться (или сбрасываться до нуля при перезапуске процесса). Используется для подсчета инкрементальных событий, таких как количество запросов, ошибок или завершенных задач.
    // Пример в Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Total number of HTTP requests.",
        },
    )
    
  2. Датчик (Gauge): Произвольное численное значение, которое может как увеличиваться, так и уменьшаться. Используется для измерения текущего состояния чего-либо, например, загрузки ЦПУ, использования памяти, количества активных пользователей или размера очереди.
    # Пример в Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Current CPU usage percentage')
    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("Request duration in seconds.")
        .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, 'Request duration in seconds.')
    

Выбор типа метрики зависит от характера данных, которые требуется отслеживать.