Настройка триггеров
Правила триггеров для создания событий описаны в конфигурационных файлах:
./alert-rules/ в случае установки в кластер Kubernetes
./vmalert/config/ в случае установки в виде Docker Compose
Файлы логически разделены по функциональным группам, например, ald-pro.yaml, brest.yaml или node-exporter.yaml.
Правила описываются в формате YAML следующим образом:
groups:
- name: ald-pro
interval: 30s
concurrency: 2
rules:
- alert: IPATestUserConnection
expr: |
ipa_user_connect{} == 0
for: 5m
labels:
severity: critical
team: ipa_support
annotations:
summary: "Server {{ $labels.hostname }} has an issue with test user authentication"
description: "Test user {{ $labels.user_check }} can't connect to domain on server {{ $labels.hostname }} ({{ $labels.instance }})"
- alert: IPAUserConnectionTime
expr: |
avg_over_time(ipa_time_for_connect[5m]) > 2 * avg_over_time(ipa_time_for_connect[5m] offset 5m)
labels:
severity: warning
team: ipa_support
annotations:
summary: "Server {{ $labels.hostname }} ({{ $labels.instance }}) has highly increased test user connection time ({{ humanize $value }} ms.)"
description: "Test user {{ $labels.user_check }} has an issue with very long test user connection time ({{ humanize $value }} ms.) on server {{ $labels.hostname }} ({{ $labels.instance }})"
name - имя группы правил,
interval - интервал обработки правил группы,
alert - имя триггера,
expr - условие для срабатывания триггера в формате PromQL,
for - минимальная длительность состояния перед срабатыванием триггера,
labels - дополнительные лейблы для триггера:
severity - уровень критичности,
team - маршрут для отправки уведомлений о срабатывании триггера, например, имя команды поддержки системы/продукта. (дополнительное опциональное поле, приведенное в качестве примера для конкретного набора правил),
annotations - дополнительные информационные сообщения для получателей сообщений:
summary - краткое описание проблемы в заголовке сообщения,
description - общее описание проблемы в тексте сообщения.
Примечание
Набор полей, указанных в списке labels может отличаться, в зависимости от правила, например, включать в себя имя сервиса systemd, точку монтирования файловой системы mountpoint, имя пользователя, название метрики и т.д., но при этом рекомендуется всегда указывать уровень критичности severity.
Для добавления нового правила к уже существующей группе, необходимо определить имя триггера, условия для его срабатывания, критичность и получателя сообщений о срабатывании триггера. Далее добавить описание триггера в формате YAML в список rules требуемой группы правил, например, группы ald-pro в файле ./alert-rules/ald-pro.yaml (./vmalert/config/ald-pro.yaml).
Для создания нового набора правил необходимо создать новый файл в директории ./alert-rules/ (./vmalert/config/) с требуемой группой (например, файл rupost.yaml с группой правил rupost), описать в группе требуемый набор правил и сохранить файл.
Также правила могут быть размещены в файле values.tmpl, в секции vmalert / additionalPrometheusRulesMap, аналогично описанному выше.
После окончания добавления или редактирования правил, необходимо обновить компоненты Платформы с помощью инструментов docker-compose / helm-chart.