Алерты (ALERTS)
Алерты о срабатывании проверок могут быть реализованы по 4м каналам отправки:
- smtp - письмо на почту для указанного списка адресатов
- jira - создание или обновление тикета в Jira
- alert manager - письмо на почту, отправленное через сервис Alertmanager Prometheus.
- prometheus - создание метрики в Prometheus по алерту DQ. Позволяетs интегрировать алерты с другими системами мониторинга и инцидент менеджмента
Алерт срабатывает, когда в БД DQ появляются новые результаты для проверок, на которые этот алерт настроен.
Все сконфигурированные в DQ алерты обрабатываются во внутренней асинхронной задаче, которая запускается по расписанию, заданному в настройках инстанса, по умолчанию - раз в 5 минут.
Поэтому сам алерт (письмо на почту, Jira тикет и т.д.) может появиться с задержкой, равной периоду запуска задачи.
Общие параметры для всех каналов alerts
Параметр | Описание | Обязательный |
---|---|---|
name (строка) |
уникальное название алерта, рекомендуем для именования использовать Naming convention и структура хранения конфигураций | |
fields (список) |
Список с именами полей, для отображения в алерте. По умолчанию отображает все поля. Если задать fields, поля в алерте будут отображаться в том же порядке. |
|
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, которые можно переопределить: Подробнее см. в Конфигурация ссылок на дашборды в 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, с которыми будет создан тикет: |
|
alert_deduplication (словарь) |
Параметры для группировки алертов - Группировка (дедубликация) алертов |
|
annotations (словарь) |
Набор полей, которые будут отображаться в верхней части алерта, над таблицей с результатами проверок. Ключи и значения аннотаций могут содержать текст в свободной форме. Значение аннотаций поддерживает замену плейсхолдеров из списка fields. Пример: description: 'Проверка на {description} по {check_object} за {compare_date} завершилась неудачно' Есть специальные ключи annotations, которые можно переопределить: Подробнее см. в Конфигурация ссылок на дашборды в 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, которые можно переопределить: Подробнее см. в Конфигурация ссылок на дашборды в Annotations |
|
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