Skip to content

Алерты (ALERTS)

Алерты о срабатывании проверок могут быть реализованы по 4м каналам отправки:

  1. smtp - письмо на почту для указанного списка адресатов
  2. jira - создание или обновление тикета в Jira
  3. alert manager - письмо на почту, отправленное через сервис Alertmanager Prometheus.
  4. prometheus - создание метрики в Prometheus по алерту DQ. Позволяетs интегрировать алерты с другими системами мониторинга и инцидент менеджмента

Алерт срабатывает, когда в БД DQ появляются новые результаты для проверок, на которые этот алерт настроен.

Все сконфигурированные в DQ алерты обрабатываются во внутренней асинхронной задаче, которая запускается по расписанию, заданному в настройках инстанса, по умолчанию - раз в 5 минут.

Поэтому сам алерт (письмо на почту, Jira тикет и т.д.) может появиться с задержкой, равной периоду запуска задачи.

Общие параметры для всех каналов alerts

Параметр Описание Обязательный
name (строка) уникальное название алерта, рекомендуем для именования использовать Naming convention и структура хранения конфигураций
fields (список) Список с именами полей, для отображения в алерте. По умолчанию отображает все поля. Если задать fields, поля в алерте будут отображаться в том же порядке.
  • compare_date - дата сравнения
  • compare_name - имя сравнения
  • value - значение метрики
  • metric_name - имя метрики
  • check_object - имя объекта проверки
  • description - описание compare
  • column - имя поля
  • status - статус compare
  • metric_key - значение ключа группировки из метрик с group by
  • min_value - минимальное значение результата compare
  • max_value - максимальное значение результата compare
  • groups (строка) Группы проверок для которых формируется алерт.
    channels (список) Список каналов, в которые осуществляется отправка сообщений. Возможные значения: smtp, 'alert manager', jira, prometheus
    Можно включить одновременно более одного канала отправки.
    active (булево) Индикатор активности, по умолчанию True.  Если False - не будут отправляться алерты.
    tags (список строк) Список тэгов (меток) для алерта.
    statuses (список чисел) Список статусов Compare, по которому формируется условия срабатывания алертов. По умолчанию это статусы -1, -2. Варианты статусов см. в описании compares

    Алерты на почту (smtp)

    Пример письма:

    Пример конфигурации алерта smtp:

    alerts:
      - name: TEST_ALERT_2
        annotations:
          description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
        emails:  ['user@gmail.com']
        fields: ['column', 'description', 'status', 'compare_date', 'check_object']
        groups: ['pg_test_data_group_2']
        statuses: [-1, -2]
        channels: ['smtp']
    
    Параметр Описание Обязательный
    emails (список) Список email получателей алерта.
    annotations (словарь) Набор полей, которые будут отображаться в верхней части алерта, над таблицей с результатами проверок. Ключи и значения аннотаций могут содержать текст в свободной форме. Значение аннотаций поддерживает замену плейсхолдеров из списка fields.
    Пример: description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
    Есть специальные ключи annotations, которые можно переопределить:
  • alert_dashboard_url
  • run_info_dashboard_url
    Подробнее см. в Конфигурация ссылок на дашборды в Annotations
  • Алерты в Jira

    Пример тикета по алерту:

    Пример конфигурации алерта в jira:

    alerts:
      - name: TEST_ALERT_3
        annotations:
          description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
        fields: ['column', 'description', 'status', 'compare_date', 'check_object']
        groups: ['pg_test_data_group_3']
        statuses: [-1, -2]
        channels: ['jira']
        jira_options:
          project: 'DA'
          issue_type: 'Bug'
          assignee: 'default_assignee'
          components: ['DQ alerts']
          custom_fields:
              Этап обнаружения:
                value: Промышленная эксплуатация
              Внешний ID: "1234"
    
    Параметр Описание Обязательный
    jira_options (словарь) Атрибуты для jira, с которыми будет создан тикет:
  • project - Название проекта в Jira
  • assignee - Исполнитель тикета
  • issue_type - Тикет будет создан с указанным типом (Bug, Task, etc.). По умолчанию тикет создается с типом 'Bug'.
  • components - Массив компонентов тикета
  • labels - Массив "Меток" тикета
  • custom_fields - набор кастомных параметров из тикета (см. пример в блоке кода).
  • alert_deduplication (словарь) Параметры для группировки алертов - Группировка (дедубликация) алертов
  • frequency_window (число) - величина интервала в днях, за который будут группироваться алерты.
  • annotations (словарь) Набор полей, которые будут отображаться в верхней части алерта, над таблицей с результатами проверок. Ключи и значения аннотаций могут содержать текст в свободной форме. Значение аннотаций поддерживает замену плейсхолдеров из списка fields.
    Пример: description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
    Есть специальные ключи annotations, которые можно переопределить:
  • alert_dashboard_url
  • run_info_dashboard_url
    Подробнее см. в Конфигурация ссылок на дашборды в Annotations
  • Пример конфигурации с custom_fields:

    alerts:
      - name: TEST_ALERT_3
        annotations:
          description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
        fields: ['column', 'description', 'status', 'compare_date', 'check_object']
        groups: ['pg_test_data_group_3']
        statuses: [-1, -2]
        channels: ['jira']
        jira_options:
          project: 'DA'
          issue_type: 'Bug'
          custom_fields:
              Этап обнаружения:
                value: Промышленная эксплуатация
              Внешний ID: "1234"
    

    Алерты в alert manager

    Пример письма от Alert manager:

    Получатели алерта настраиваются через поля labels, как правило в поле labels.project.

    Пример конфигурации:

    alerts:
      - name: TEST_ALERT
        annotations:
          description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
        labels:
          project: '<Название вашего проекта в Prometheus Alertmanager>'
        fields: ['column', 'description', 'status', 'compare_date', 'check_object']
        groups: ['pg_test_data_group']
        statuses: [-1, -2]
        channels: ['alert manager']
    
    Параметр Описание Обязательный
    annotations (словарь) Набор полей, которые будут отображаться в верхней части алерта, над таблицей с результатами проверок. Ключи и значения аннотаций могут содержать текст в свободной форме. Значение аннотаций поддерживает замену плейсхолдеров из списка fields.
    Пример: description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно'
    Есть специальные ключи annotations, которые можно переопределить:
  • alert_dashboard_url
  • run_info_dashboard_url
    Подробнее см. в Конфигурация ссылок на дашборды в Annotations
  • может также содержать annotations для  Alertmanager Prometheus
  • labels (словарь) можно передавать любое количество label'ов поддерживаемых Alertmanager Prometheus

    Метрика по алерту в Prometheus

    По группам проверок из настроек алерта будут созданы метрики в Prometheus. Подробное описание см. в Интеграция с Prometheus

    Сам алерт нужно настраивать непосредственно в Prometheus alert manager, используя PromQL синтаксис.

    Пример конфигурации:

    alerts:
      - name: TEST_ALERT_4
        groups: ['pg_test_data_group_4']
        statuses: [-1, -2]
        channels: ['prometheus'] 
    

    Конфигурация ссылок на дашборды в Annotations

    Если вы хотите добавить в алерт ссылки на ваши собственные дашборды Grafana, это можно сделать задав значения для annotations:

    • alert_dashboard_url - к url будет добавлен параметр var-alert=<alert_name>

    • run_info_dashboard_url - к url будет добавлен параметр var-run_uuid=<run_uuid>

    Таким образом, для корректной генерации ссылки из алерта, ваш дашборд должен иметь переменные component и run_uuid соответственно

    Алерты при падении проверок

    Данный алерт присылается, если возникли ошибки при подсчете метрик.

    Например, было выставлено неправильное условие в параметрах метрики, из-за чего возникло исключение в spark.

    Отсылаются при заполненном поле emails_for_failed_task_alert в source. Не требуется создавать объект alerts.

    Пример использования:

    ---
    sources:
      - type: postgres
        name: tst_postgres
        emails_for_failed_task_alert: 'test_email@gmail.com'
        parameters:
          host: "dq_postgres"
          port: "5432"
          database: "dq_db"
          credentials:
            type: vault
            path: "passwords"
            user: "dq_user"
        owners:
          - username