Источники уведомлений#

Окно Источники уведомлений (Notifiers) позволяет настроить Automation Controller на отправку уведомлений о различных событиях во внешние системы:

  • Grafana;

  • IRC-серверы;

  • Mattermost;

  • Pagerduty;

  • Rocket.Chat;

  • Slack;

  • Twilio;

  • Webhook;

  • электронная почта.

Для перехода к окну Источники уведомлений (Notifiers) выберите на панели навигации Автоматизация процессов ‣ Администрирование ‣ Источники уведомлений (Automation Execution ‣ Administration ‣ Notifiers).

Таблица источников уведомлений#

Внешний вид окна Источники уведомлений (Notifiers) представлен на схеме:

../../../../_images/notifiers-index-light.png ../../../../_images/notifiers-index-dark.png

Таблица способов отправки уведомлений состоит из следующих столбцов:

  • флаги для выбора нескольких записей;

  • Название (Name);

  • Статус (Status);

  • Тип (Type) – тип внешней системы, в которую отправляются уведомления;

  • Организация (Organization) – организация, которой принадлежит источник уведомлений;

  • кнопки для быстрого вызова часто выполняемых действий:

    • переход в окно редактирования свойств источника уведомлений;

    • проверка корректности настроек источника уведомлений;

    • копирование источника уведомлений;

    • удаление источника уведомлений.

Просмотр#

Для получения подробных сведений об источнике уведомлений нажмите на его название в таблице.

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

Создание#

Для создания источника уведомлений выполните следующие действия:

  1. В окне Источники уведомлений (Notifiers) нажмите кнопку Создать источник уведомлений (Create notifier).

  2. Заполните форму Создать источник уведомлений (Create notifier):

    • Название (Name) – название источника уведомлений.

    • Описание (Description) – описание источника уведомлений.

    • Организация (Organization) – организация, для которой настраивается источник уведомлений.

    • Тип (Type) – тип создаваемого источника уведомлений.

      После выбора типа в форме отображаются соответствующие поля ввода.

      Электронная почта (Email)
      • Название учетной записи (Username) – название учетной записи пользователя для доступа к почтовому серверу.

      • Пароль (Password) – пароль пользователя для доступа к почтовому серверу.

      • Узел (Host) – IP-адрес или FQDN почтового сервера.

      • Список получателей (Recipient list) – адреса электронной почты получателей, по одному на строку.

      • Электронная почта отправителя (Sender email) – адрес электронной почты, с которого следует отправлять письма.

      • Порт (Port) – номер порта для подключения к почтовому серверу.

      • Тайм-аут (Timeout) – период ожидания почтового сервера в секундах. Если в течение указанного времени контроллер не сможет связаться с почтовым сервером, отправка уведомления будет отменена.

        Минимальное значение – 1.

        Максимальное значение – 120.

      • Использовать TLS (Use TLS) – защита подключения к почтовому серверу с помощью TLS.

      • Использовать SSL (Use SSL) – защита подключения к почтовому серверу с помощью SSL.

      Grafana
      • URL для Grafana (Grafana URL) – URL сервера Grafana без пути /api/annotations/. При создании уведомлений он добавляется к указанному URL автоматически.

      • Ключ API Grafana (Grafana API key) – ключ доступа к Grafana API.

      • ID информационной панели (ID of the dashboard) – идентификатор информационной панели Grafana для вывода уведомлений.

      • ID панели (ID of the panel) – идентификатор панели Grafana для вывода уведомлений.

      • Теги для аннотации (Tags for the annotation) – теги без команд, по одному на строку.

      • Отключить проверку SSL (Disable SSL verification) – отключение проверки SSL-сертификата сервера Grafana.

      IRC-сервер (IRC)
      • Пароль IRC-сервера (IRC server password) – пароль для подключения к серверу IRC.

      • Порт IRC-сервера (IRC server port) – номер порта для подключения к серверу IRC.

      • Адрес IRC-сервера (IRC server address) – IP-адрес или FQDN сервера IRC.

      • IRC ник (IRC Nick) – название учетной записи пользователя для доступа к IRC.

      • Каналы или пользователи назначения (Destination channels or users) – названия каналов и имена пользователей, которым должны быть отправлены сообщения с уведомлениями, по одному на строку.

        Важно

        При вводе названий каналов и имен пользователей не указывайте символы @ и # в начале строки.

      • Отключить проверку SSL (Disable SSL verification) – отключение проверки SSL-сертификата сервера IRC.

      Mattermost
      • Целевой URL (Target URL) – URL сервера Mattermost.

      • Название учетной записи (Username) – название учетной записи пользователя для доступа к серверу Mattermost.

      • Канал (Channel) – название канала Mattermost для отправки уведомлений.

      • URL значка (Icon URL) – ссылка на иконку, используемую как аватар пользователя Mattermost, от имени которого отправляются сообщения.

      • Проверка SSL (Verify SSL) – должен ли контроллер проверять сертификат SSL сервера Mattermost.

      Pagerduty
      • Поддомен Pagerduty (Pagerduty subdomain) – поддомен PagerDuty.

      • Токен API (API token) – токен для подключения к PagerDuty.

      • Ключ API сервиса/интеграции (API service/integration key) – ключ к сервису API или ключ интеграции.

      • Идентификатор клиента (Client identifier) – идентификатор клиента, от имени которого контроллер будет отправлять уведомления в PagerDuty.

      Rocket.Chat
      • Целевой URL (Target URL) – FQDN для подключения к Rocket.Chat.

      • Название учетной записи (Username) – название учетной записи пользователя для доступа к Rocket.Chat.

      • URL значка (Icon URL) – ссылка на иконку, используемую как аватар пользователя, от имени которого отправляются сообщения.

      • Отключить проверку SSL (Disable SSL verification) – отключение проверки SSL-сертификата сервера Rocket.Chat.

      Slack
      • Токен (Token) – токен, используемый для подключения к Slack.

      • Каналы назначения (Destination channels) – названия каналов Slack для отправки в них уведомлений, по одному каналу на строку.

        Важно

        Название канала должно начинаться с символа #.

        Чтобы ответить на определенное сообщение или запустить тред, укажите идентификатор родительского сообщения – строку из 16 цифр. После 10-й цифры добавьте символ ., например, #dev-ops, 0000000555.111111.

        Подробности см. в документации Slack.

      • Цвет уведомления (Notification color) – цвет уведомления в шестнадцатеричном формате, например, #12F или #FF0000.

      Twilio
      • Идентификатор (SID) учетной записи (Account SID) – уникальный идентификатор учетной записи Twilio.

      • Токен учетной записи (Account token) – токен для доступа к серверу Twilio.

      • Исходный номер телефона (Source phone number) – номер телефона, с которого отправляются сообщения.

        Важно

        Допускается использование цифр и символа + в начале строки.

      • Номера SMS назначения (Destination SMS numbers) – номера телефонов для отправки на них SMS с уведомлениями, по одному на строку.

        Важно

        Допускается использование цифр и символа + в начале строки.

        Подробности см. в документации Twilio.

      Webhook
      • Название учетной записи (Username) – название учетной записи пользователя для доступа к сервису WebHook.

      • Базовый пароль для авторизации (Basic auth password) – пароль пользователя для доступа к сервису WebHook.

      • Целевой URL (Target URL) – URL WebHook.

      • Отключить проверку SSL (Disable SSL verification) – отключение проверки SSL-сертификата сервера WebHook.

      • HTTP-заголовки (HTTP Headers) – дополнительные заголовки HTTP в формате JSON, которые должны быть добавлены в запрос.

      • HTTP-метод (HTTP Method) – метод HTTP, используемый для отправки запросов к WebHook. Поддерживаются методы POST и PUT.

    • Настроить сообщения (Customize messages) – если этот переключатель включен, в форме отображаются дополнительные поля:

      Поле

      Событие

      Стартовое сообщение (Start message)

      Запуск задания

      Сообщение об успехе (Success message)

      Успешное выполнение задания

      Текст ошибки (Error message)

      Ошибка при выполнении задания

      Сообщение об утвержденном потоке заданий (Workflow approved message)

      Согласование этапа потока заданий

      Сообщение об отклоненном потоке заданий (Workflow denied message)

      Отклонение этапа потока заданий

      Ожидающее сообщение потока заданий (Workflow pending message)

      Ожидание согласования этапа потока заданий

      Сообщение о превышении времени ожидания workflow (Workflow timed out message)

      Истечение времени ожидания согласования этапа потока заданий

      Примечание

      Более подробно о переменных, доступных фильтрах и ограничениях см. в описании шаблонов. Настройка шаблонов и переменных продемонстрирована в примере отправки уведомлений в Mattermost.

  3. Нажмите кнопку Сохранить источник уведомлений (Save notifier).

Шаблоны сообщений#

Поля, отображаемые при включении переключателя Настроить сообщения (Customize messages), являются шаблонами Jinja2.

Набор доступных переменных зависит от события, для которого составляется шаблон.

Для событий задания (поля Стартовое сообщение (Start message), Сообщение об успехе (Success message) и Текст ошибки (Error message)) доступны следующие переменные:

  • job – словарь с полями задания, например {{ job.id }}, {{ job.name }}, {{ job.status }};

  • job_friendly_name – тип задания в удобочитаемом виде, например Job для задания или Workflow Job для потока заданий;

  • url – ссылка на страницу задания в графической консоли;

  • job_metadata – основные сведения о задании в виде строки JSON, отформатированной с отступами. В шаблоне это строка, а не словарь, поэтому обращение к ее полям, например {{ job_metadata.id }}, дает пустую подстановку, а отдельные поля задания берутся из переменной job. Строка всегда содержит базовые поля id, name, url, created_by, started, finished, status, traceback, а в зависимости от типа задания – в том числе следующие поля:

    • inventory;

    • project;

    • playbook;

    • credential;

    • limit;

    • extra_vars;

    • hosts;

    • body (отображается только в потоке заданий).

Для событий согласования этапа потока заданий (поля Сообщение об утвержденном потоке заданий (Workflow approved message), Сообщение об отклоненном потоке заданий (Workflow denied message), Ожидающее сообщение потока заданий (Workflow pending message) и Сообщение о превышении времени ожидания workflow (Workflow timed out message)) доступен другой набор переменных:

  • approval_status – состояние согласования: approved – согласовано; denied – отклонено; running – ожидает согласования; timed_out – истекло время ожидания;

  • approval_node_name – название узла согласования;

  • workflow_url – ссылка на страницу потока заданий в графической консоли;

  • job_metadata – сведения о потоке заданий в виде строки JSON, отформатированной с отступами: базовые поля и extra_vars.

Предупреждение

Переменные job, job_friendly_name и url в шаблонах согласования недоступны. Проверка при сохранении источника уведомлений их пропускает, поскольку выполняется на общем наборе полей. При отправке исход зависит от переменной:

  • обращение к job, например {{ job.id }}, прерывает отрисовку шаблона, и получателю уходит пустое сообщение;

  • job_friendly_name и url подставляются пустыми строками, а остальной текст сообщения сохраняется.

В обоих случаях графическая консоль ошибку не показывает.

Шаблоны обрабатываются в изолированном окружении Jinja2 (jinja2.sandbox.ImmutableSandboxedEnvironment), в котором доступны только встроенные фильтры Jinja2. Фильтры Ansible (to_nice_json, to_yaml и другие) в шаблонах уведомлений использовать нельзя: они не входят в состав Jinja2 и в окружении шаблонизатора не зарегистрированы. Если при сохранении источника уведомлений выводится ошибка No filter named '<название фильтра>', удалите из шаблона фильтр, недоступный в окружении.

Пример поля Сообщение об успехе (Success message) с применением встроенных фильтров upper и capitalize:

{{ job_friendly_name }} {{ job.id }} ({{ job.name | upper }}): статус {{ job.status | capitalize }}

Уведомление, полученное принимающей стороной:

Job 1 (DEMO JOB TEMPLATE): статус Successful

Пример тела уведомления источника типа Webhook, в котором фильтр tojson подставляет значения в структуру JSON:

{"job": {{ job.name | tojson }}, "status": {{ job.status | tojson }}, "id": {{ job.id }}}

Тело, полученное принимающей стороной:

{"job": "Demo Job Template", "status": "successful", "id": 3}

Фильтр tojson экранирует специальные символы и подставляет строковые значения вместе с кавычками, поэтому в шаблоне вокруг таких подстановок кавычки не указываются. Если вместо фильтра заключать подстановку в кавычки вручную, то при первом же значении с кавычкой внутри тело перестанет быть корректным JSON, и принимающей стороне будет отправлен пустой словарь {}.

При составлении шаблонов необходимо учитывать следующие ограничения:

  • Поле сообщения должно состоять из одной строки: если шаблон содержит перевод строки, сохранение завершается ошибкой Messages cannot contain newlines.

  • Тело уведомления источника типа Webhook должно представлять собой словарь в формате JSON. Перед отправкой сформированное тело разбирается и сериализуется заново в одну строку, поэтому отступы и переводы строк, заданные в шаблоне, в отправленном уведомлении не сохраняются. Если получателю требуется отформатированный JSON, форматирование выполняется на принимающей стороне.

  • Фильтр tojson применяют к отдельным значениям, например {{ job.name | tojson }}. Применение фильтра к словарю job целиком приводит к ошибке сервера при сохранении источника уведомлений: проверка шаблона выполняется на данных, часть которых не сериализуется в JSON. Для получения сведений о задании в формате JSON используйте переменную {{ job_metadata }}.

Настройка шаблонов и переменных продемонстрирована в примере отправки уведомлений в Mattermost.

Удаление#

Для удаления источников уведомлений выполните следующие действия:

  1. В таблице включите флаги напротив удаляемых источников уведомлений.

  2. На панели инструментов нажмите кнопку и в открывшемся меню выберите Удалить источники уведомлений (Delete notifiers).

  3. Подтвердите удаление.