Перейти к содержимому

Обработка текста мониторинга ​

Мониторинг присылает строку ALERT: server=web-01 status=DOWN. Нужно сохранить исходные данные, извлечь имя сервера и получить короткое сообщение с понятным статусом.

Это пример формата вашего отправителя. Для Аптайма сначала получите фактическое тело его вебхука: он не обязан отправлять именно такую строку.

Подготовьте канал и шаблон ​

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

Создайте текстовый шаблон «Мониторинг»:

text
Сервер: {{vars.server}}
{{message}}

Выберите его в действиях следующего правила. Базовому каналу задайте другой шаблон с единственной подстановкой {{raw_message}}, чтобы остальные строки оставались читаемыми.

Создайте правило ​

  1. Название «Сбой сервера», вид «По условиям».
  2. Режим «Все условия»: исходный текст «Содержит» ALERT: и «Содержит» status=DOWN.
  3. Добавьте операции в таком порядке:
№ОперацияНастройка
1Удалить префиксALERT: , с пробелом в конце
2Извлечь переменные регулярным выражением^server=(?<server>[A-Za-z0-9-]+) , с пробелом в конце; учитывать регистр
3Заменить текстstatus=DOWN → недоступен
4Заменить регулярным выражением^server=([A-Za-z0-9-]+) → пустая замена; учитывать регистр
  1. Выберите шаблон «Мониторинг», важность «Ошибка» и метку мониторинг, предварительно созданную в каталоге.
  2. Доставку оставьте наследуемой: не добавляйте действие маршрута.
  3. Сохраните правило и подключите его к каналу выше более общих правил.
  4. Подключите правило по умолчанию с шаблоном исходного тела, важностью «Не задана», без меток и с наследованием получателей.

После первой операции regex видит очищенное начало. Переменная server остаётся доступной, хотя четвёртая операция удаляет имя из рабочего текста.

Проверьте три входа ​

Выберите канал в «Проверить на примере», Content-Type text/plain:

ТелоВетка и результат
ALERT: server=web-01 status=DOWN«Сбой сервера»; server = web-01, рабочий текст недоступен, важность «Ошибка»
ALERT: server=db-02 status=DOWNТо же правило; server = db-02
INFO: server=web-01 status=UPDefault; исходная строка без переменной и метки сбоя

Первый итоговый текст:

text
Сервер: web-01
недоступен

Если переменная пустая, смотрите предупреждения: выражение могло не совпасть с реальным форматом. Полный набор операций, включая буквальную замену и JSON-извлечение, — действия и переменные.

Отправьте реальные события ​

Задайте DEPESHER_URL и при защите DEPESHER_TOKEN в окружении, затем отправьте первую строку:

bash
curl --include \
  --request POST \
  --header 'Content-Type: text/plain' \
  --header "Authorization: Bearer $DEPESHER_TOKEN" \
  --data-binary 'ALERT: server=web-01 status=DOWN' \
  "$DEPESHER_URL"

Для незащищённого канала уберите Authorization. Повторите с двумя альтернативными телами. После 202 сравните исходный, рабочий и итоговый текст в истории и проверьте получение. В организации карточка содержит тексты и основания назначения; трассу правил проверяет управляющий в симуляции.