Настройка триггеров


Правила триггеров для создания событий описаны в конфигурационных файлах:

  • ./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.