Настройка оповещений из файла
Создание
Для управления сущностями файлов необходимо подготовить yaml-файлы и разместить их в соответствующих директориях, указанных в параметрах конфигурационного файла.
Все
.yamlфайлы должны лежать непосредственно в корне директории. Вложенные папки запрещены — они не будут обработаны.Разные типы сущностей должны храниться в разных директориях (например, notifications/contact-points/ и notifications/escalation-chains/).
Один yaml-файл может содержать одну или несколько сущностей одного типа.
При запуске приложения все сущности автоматически создаются/обновляются на основе описанных в файлах конфигураций.
Параметр изменяемости
У каждой сущности, которая может быть создана из файла, есть параметр changeable. Этот флаг определяет, откуда сущность создаётся и где она может редактироваться:
changeable: trueСущность редактируется только через UI.
Если сущность создана через UI, она всегда имеет
changeable: true и не может управляться из файла.Если сущность создана через файл с параметром
changeable: true, то после первого создания она «передаётся под контроль UI». В дальнейшем её редактирование возможно только через UI, а изменения в файле для неё больше не применяются.
changeable: falseСущность полностью контролируется через файл.
В UI она отображается только для просмотра, без возможности изменения.
Все изменения нужно вносить в файл, после чего при перезапуске приложения они будут применены.
Создание цепочек эскалаций из файла:
Создайте файла для цепочек эскалаций по описанию из блока создание и заполните их по следующей схеме:
- name: "УникальноеИмяЦепочки" # уникальное имя цепочки
changeable: false # параметр изменяемости
description: "Описание" # описание цепочки
escalations:
- level: 1 # порядковый номер эскалации
action: "notify" # тип эскалации
contact_point_names: ["ИмяКаналаОповещений"] # список каналом оповещений для типа "notify"
- level: 2
action: "wait"
additional_parameters:
minutes_count: 1 # количество минут для типа "wait"
- level: 3
action: "notify"
contact_point_names: ["ИмяКаналаОповещений, ИмяКаналаОповещений"]
...
- name: "УникальноеИмяЦепочки"
description: "описание 2"
escalations:
...
...
Создание каналов оповещений через файл:
Пример базового шаблона для канала типа webhook:
template: "{\"subject\":\"{{.NotificationData.Subject}}\",\"message\":\"{{.NotificationData.Message}}\",\"text\":\"{{.NotificationData.Text}}\",\"link\":\"{{.NotificationData.Link}}\",\"priority\":\"{{.NotificationData.Priority}}\",\"problem_id\":\"{{index .NotificationData.Data \"problem_id\"}}\",\"monitor_id\":\"{{index .NotificationData.Data \"monitor_id\"}}\",\"monitor_query\":\"{{index .NotificationData.Data \"monitor_query\"}}\",\"monitor_name\":\"{{index .NotificationData.Data \"monitor_name\"}}\",\"rule_id\":\"{{index .NotificationData.Data \"rule_id\"}}\",\"labels_required\":{{marshal (index .NotificationData.Data \"labels_required\")}},\"labels_absent\":{{marshal (index .NotificationData.Data \"labels_absent\")}},\"rule_priority\":\"{{index .NotificationData.Data \"rule_priority\"}}\",\"parameters\":{{marshal (index .NotificationData.Data \"parameters\")}},\"metric_id\":\"{{index .NotificationData.Data \"metric_id\"}}\",\"metric_labels\":{{marshal (index .NotificationData.Data \"metric_labels\")}},\"metric_value\":\"{{index .NotificationData.Data \"metric_value\"}}\",\"no_data\":{{ marshal (index .NotificationData.Data \"no_data\") }},\"object_id\":\"{{index .NotificationData.Data \"object_id\"}}\",\"metric_group\":{{marshal (index .NotificationData.Data \"metric_group\")}},\"state\":\"{{index .NotificationData.Data \"state\"}}\",\"prev_state\":\"{{index .NotificationData.Data \"prev_state\"}}\",\"resolved\": {{ marshal (index .NotificationData.Data \"resolved\") }},\"problem_resolved_at\":\"{{index .NotificationData.Data \"problem_resolved_at\"}}\",\"created_at\":\"{{index .NotificationData.Data \"problem_created_at\"}}\",\"updated_at\":\"{{index .NotificationData.Data \"problem_updated_at\"}}\",\"owner\":\"{{index .NotificationData.Data \"owner\"}}\",\"number_of_notifications\":\"{{index .NotificationData.Data \"number_of_notifications\"}}\",\"count\":\"{{index .NotificationData.Data \"count\"}}\"}"
Уникальность сущностей определяется по имени. Сущности из файлов создаются (если отсутствуют) или перезаписываются (если существуют) по их уникальному имени.