Настройка оповещений из файла

Создание

Для управления сущностями файлов необходимо подготовить 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\"}}\"}"
Уникальность сущностей определяется по имени. Сущности из файлов создаются (если отсутствуют) или перезаписываются (если существуют) по их уникальному имени.