Info
Content

Configuration/Recording rules

В prometheus'e есть два вида правил которые могут быть сконфигурированы и выполняться через регулярные интервалы:

  • recording rules
  • alerting rules

Правила нужно описать в отдельном файле в yaml и включить в основной конфиг через директиву rule_files

Файлы и правилами не подгружаются автоматически в процессе работы. Чтобы prometheus обновил зарелоадил их, нужно отправить ему SIGHUP
Все правила из файла применятся только если все они описаны корректно. Если хоть где-то ошибка (хоть в одном из множетства файлов), то не применится ни одно

Syntax-checking rules

Проверить файл с правилами на корректность можно утилитой promtool

root@two:~/prometheus-2.27.1.linux-amd64# ./promtool check rules prometheus.rules.yaml
Checking prometheus.rules.yaml
  SUCCESS: 1 rules found
  
root@two:~/prometheus-2.27.1.linux-amd64# echo $?
0
root@two:~/prometheus-2.27.1.linux-amd64# ./promtool check rules prometheus.rules.incorrect.yaml
Checking prometheus.rules.incorrect.yaml
  FAILED:
prometheus.rules.incorrect.yaml: yaml: unmarshal errors:
  line 1: field gros not found in type rulefmt.RuleGroups

root@two:~/prometheus-2.27.1.linux-amd64# echo $?
1

Как видно выше, она выдает человекочитаемый результат, а так же соответствующий exitcode

Recording rules

Recording rules позволяют предподсчитывать частые или вычислительносложные выражения и сохранять их результат как новую таймсерию
Это особенно полезно для дашбордов (потому что они постоянно запрашивают одно и то же)

Правила записи и оповещений существуют в группе правил
А их имена должны соответствовать правилам именования метрик и лейблов соответственно

groups:
  [ - <rule_group> ]

Пример:

groups:
  - name: example
    rules:
    - record: job:http_inprogress_requests:sum
      expr: sum by (job) (http_inprogress_requests)
  • <rule_group> - содержит имя группы, интервал и сами правила. Должно быть уникальным в пределах файла

  • <rule> - описываются внутри группы. Содержит имя таймсерии в которую будет записывать результат выполнения выражения, само выражение в PromQL и лейблы
    Правила алертинга описываются точно так же, только вместо 'record' пишется 'alert' и добавляется аннотация и продолжительность

No Comments
Back to top