Вопрос проверяет знание основных типов метрик в системах мониторинга, таких как Prometheus, и их назначение.
В системах мониторинга, таких как Prometheus, метрики делятся на несколько типов, каждый из которых предназначен для определенного сценария использования. Понимание этих типов помогает правильно собирать и интерпретировать данные о состоянии системы.
Counter — это метрика, которая может только увеличиваться или сбрасываться в ноль при перезапуске. Она идеально подходит для подсчета количества событий, таких как количество HTTP-запросов, ошибок или выполненных задач. Например, счетчик запросов к эндпоинту /api/users будет расти с каждым новым запросом.
# HELP http_requests_total Total number of HTTP requests
# TYPE http_requests_total counter
http_requests_total{method="GET", endpoint="/api/users"} 1024Gauge представляет собой значение, которое может произвольно изменяться вверх и вниз. Он используется для измерения текущего состояния, например, температуры процессора, количества активных соединений или использования памяти. Gauge полезен для отслеживания мгновенных значений.
# HELP cpu_temperature_celsius Current CPU temperature
# TYPE cpu_temperature_celsius gauge
cpu_temperature_celsius{core="0"} 65.3Histogram используется для измерения распределения значений, таких как время ответа или размер запроса. Он группирует наблюдения в настраиваемые корзины (buckets) и подсчитывает количество значений в каждой корзине. Это позволяет вычислять процентили, например, 95-й процентиль времени ответа.
# HELP http_request_duration_seconds HTTP request duration in seconds
# TYPE http_request_duration_seconds histogram
http_request_duration_seconds_bucket{le="0.1"} 50
http_request_duration_seconds_bucket{le="0.5"} 120
http_request_duration_seconds_bucket{le="+Inf"} 200Summary похож на Histogram, но вычисляет процентили на стороне клиента. Он также измеряет распределение значений, но предоставляет квантили (например, 0.5, 0.9, 0.99) напрямую. Summary требует меньше ресурсов для хранения, но менее гибок в настройке корзин.
# HELP rpc_duration_seconds RPC duration in seconds
# TYPE rpc_duration_seconds summary
rpc_duration_seconds{quantile="0.5"} 0.05
rpc_duration_seconds{quantile="0.9"} 0.1
rpc_duration_seconds{quantile="0.99"} 0.3Выбор типа метрики зависит от задачи: Counter для подсчета событий, Gauge для текущих значений, Histogram и Summary для анализа распределения. Правильное использование этих типов позволяет эффективно мониторить производительность и надежность систем.