Настройка recording-правил

Recording-правила позволяют периодически заранее вычислять часто используемые или ресурсоёмкие запросы, сохраняя результаты как новую метрику временной серии.

Например, вы можете создать recording-правило, генерирующее новую метрику error_9001_count, которая подсчитывает вхождения конкретной ошибки в журнале в течение одной минуты. Затем запрашивайте метрику error_9001_count в дашбордах и правилах оповещений.

Recording-правила могут быть полезны в различных сценариях, таких как:

  • Требуются более быстрые запросы: выполнение тяжёлых агрегаций или запросы к большим наборам данных быстрее с заранее вычисленными результатами, чем с запросами в реальном времени.
  • Снижение нагрузки на систему: предварительное вычисление определённых запросов может снизить перегрузку системы, вызванную множеством одновременных запросов.
  • Упрощение сложных агрегаций: создайте новую метрику из сложных агрегаций, чтобы упростить настройку оповещений и дашбордов.
  • Переиспользование запросов для снижения затрат: повысьте эффективность, переиспользуя один и тот же запрос в похожих правилах оповещений и дашбордах.

Как работают записанные метрики

Recording-правило генерирует новую записанную метрику, вычисляя своё определение правила с фиксированным интервалом вычисления (например, каждые 1m или 5m) и записывая одно значение как новую точку данных в записанной метрике.

Определение правила должно возвращать это одно значение — либо из instant-запроса, либо из range-запроса в сочетании с выражением Reduce.

How recording rules generate recorded metrics

Записанные метрики не гарантированно точно совпадают с исходными необработанными данными.

Агрегации в запросе recording-правила и задержки вычисления могут давать результаты, отличающиеся от исходных необработанных данных. Более короткие интервалы вычисления могут сократить этот разрыв за счёт повышения разрешения.

Рекомендации по PromQL в recording-правилах см. в разделе лучшие практики recording-правил Prometheus.

Оповещения на основе записанных метрик

Когда правила оповещений запрашивают записанные метрики, учитывайте следующие рекомендации:

  • Используйте частые интервалы вычисления. Задавайте частые интервалы вычисления для recording-правил. Длинные интервалы, такие как час, могут привести к тому, что записанная метрика устареет, и вызвать несогласованные вычисления правил оповещений, особенно в сочетании с длинным периодом ожидания.
  • Согласуйте вычисление оповещений с частотой записи. Интервал вычисления правила оповещения, зависящего от записанной метрики, следует согласовать с интервалом recording-правила. Если recording-правило запускается каждые 3 минуты, правило оповещения также должно вычисляться с похожей частотой, чтобы гарантировать его работу на свежих данных. Подробнее о последовательности вычисления см. в разделе как вычисляются правила внутри группы.
  • Используйте функции _over_time для instant-запросов. Поскольку все правила оповещений в конечном итоге выполняются как instant-запрос, вы можете использовать функции вроде max_over_time(my_metric[5m]) как instant-запрос. Это позволяет получить агрегированное значение за период без использования range-запроса и выражения reduce.

Типы recording-правил

Подобно правилам оповещений, Grafana поддерживает два типа recording-правил:

  1. Grafana-managed recording-правила, которые могут выполнять запросы к любому источнику данных Grafana, поддерживаемому оповещениями. Это рекомендуемый вариант.
  2. Data source-managed recording-правила, которые могут выполнять запросы к основанным на Prometheus источникам данных, таким как Mimir или Loki.