rate() и irate()
Тема дорожной карты · Prometheus
Функции rate() и irate() в PromQL играют ключевую роль в анализе данных, особенно когда дело доходит до метрик-счётчиков. Они позволяют вычислять скорость изменения метрики в секунду, автоматически учитывая сбросы счётчика из-за перезапусков процесса. Это делает их незаменимыми для мониторинга и анализа производительности систем. Функция rate() вычисляет среднюю скорость изменения метрики за весь временной диапазон, что делает её идеальной для оповещений и визуализации долгосрочных тенденций. С другой стороны, irate() вычисляет мгновенную скорость изменения, используя только последние два образца данных, что делает её более отзывчивой, но также более шумной, что делает её подходящей для дашбордов в реальном времени.
Как это работает
Функции rate() и irate() принимают ранговый вектор в качестве входных данных и должны применяться только к метрикам-счётчикам, а не к датчикам. rate() вычисляет среднюю скорость изменения метрики в секунду за весь временной диапазон, например, rate(http_requests_total[5m]) возвращает среднюю частоту запросов за последние пять минут. irate() вычисляет мгновенную скорость изменения, используя только последние два образца данных, что делает её более отзывчивой, но также более шумной. Это делает её подходящей для дашбордов в реальном времени, где важно видеть пики изменения.
Когда применять
Функция rate() обычно используется в правилах оповещений для стабильности, так как она вычисляет среднюю скорость изменения за весь диапазон времени. Это помогает избежать ложных срабатываний оповещений из-за случайных пиков. С другой стороны, irate() лучше подходит для дашбордов в реальном времени, где важно видеть мгновенные изменения, даже если они зашумлены. Например, irate(http_requests_total[1m]) может использоваться для отображения мгновенной скорости изменения запросов на графике.
Типичные ошибки
Одной из наиболее распространённых ошибок при использовании функций rate() и irate() является применение их к неподходящим метрикам или неправильному использованию. Например, использование irate() для долгосрочных графиков может привести к избыточному шуму, что затрудняет анализ тенденций. Также важно учитывать, что irate() не учитывает сбросы счётчика, что может привести к неверным результатам при анализе данных. Важно также правильно использовать функции, такие как increase(), delta(), deriv(), predict_linear(), histogram_quantile(), quantile_over_time(), avg_over_time(), max_over_time(), min_over_time() и absent() / absent_over_time().