Обработка текста мониторинга
Мониторинг присылает строку ALERT: server=web-01 status=DOWN. Нужно сохранить исходные данные, извлечь имя сервера и получить короткое сообщение с понятным статусом.
Это пример формата вашего отправителя. Для Аптайма сначала получите фактическое тело его вебхука: он не обязан отправлять именно такую строку.
Подготовьте канал и шаблон
Создайте личный входящий канал и подтверждённый способ получения. Для организационного канала сначала назначьте команду и настройте доставку сотрудников.
Создайте текстовый шаблон «Мониторинг»:
text
Сервер: {{vars.server}}
{{message}}Выберите его в действиях следующего правила. Базовому каналу задайте другой шаблон с единственной подстановкой {{raw_message}}, чтобы остальные строки оставались читаемыми.
Создайте правило
- Название «Сбой сервера», вид «По условиям».
- Режим «Все условия»: исходный текст «Содержит»
ALERT:и «Содержит»status=DOWN. - Добавьте операции в таком порядке:
| № | Операция | Настройка |
|---|---|---|
| 1 | Удалить префикс | ALERT: , с пробелом в конце |
| 2 | Извлечь переменные регулярным выражением | ^server=(?<server>[A-Za-z0-9-]+) , с пробелом в конце; учитывать регистр |
| 3 | Заменить текст | status=DOWN → недоступен |
| 4 | Заменить регулярным выражением | ^server=([A-Za-z0-9-]+) → пустая замена; учитывать регистр |
- Выберите шаблон «Мониторинг», важность «Ошибка» и метку
мониторинг, предварительно созданную в каталоге. - Доставку оставьте наследуемой: не добавляйте действие маршрута.
- Сохраните правило и подключите его к каналу выше более общих правил.
- Подключите правило по умолчанию с шаблоном исходного тела, важностью «Не задана», без меток и с наследованием получателей.
После первой операции 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=UP | Default; исходная строка без переменной и метки сбоя |
Первый итоговый текст:
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 сравните исходный, рабочий и итоговый текст в истории и проверьте получение. В организации карточка содержит тексты и основания назначения; трассу правил проверяет управляющий в симуляции.