Всем привет! На связи Ситуационный Центр Московской биржи. Сегодня мы расскажем, как наводили красоту и удобство в процессе интеграции Zabbix с новым корпоративным мессенджером eXpress, и покажем, как сделать так же (или еще лучше).
1. Дано
В конце 2023го года в рамках работ по импортозамещению основным корпоративным мессенджером Московской Биржи вместо MS Teams стал eXpress.
На корпоративный мессенджер завязано множество интеграций и рабочих процессов, в частности — интеграция системы мониторинга Zabbix Ситуационного Центра. С помощью этой интеграции мы имели возможность оповещать инженеров в чатах о возникновении и устранении событий с помощью бота.
Перед командой Ситуационного Центра Московской Биржи встала задача: перенести все настроенные интеграции, рабочие процессы и оповещения Zabbix в eXpress
2. Первый подход
Мы решили не придумывать велосипед и воспользоваться самым простым и очевидным решением:
-
Создали чаты по каждой из систем
-
Добавили в эти чаты заинтересованных инженеров
-
Добавили в чаты бота
-
Настроили бота писать сообщения по событиям разных систем в разные чаты
Выглядело это примерно так (верхнее сообщение — событие произошло, нижнее событие — событие устранено
Технически — задача решена, интеграция работает, инженеры оповещаются. Но что-то было не так..
3. Что было не так
Основная проблема такого подхода — полное отсутствие читаемости и наглядности.
Сложно сходу понять приоритет события.
Сложно понять, какие события уже устранены, а какие нет
Для решения этих проблем мы немного поковырялись в шаблонах и пришли к новому виду оповещений.
4. Как стало
В новом шаблоне оповещений полностью изменился формат сообщений.
-
Появился цветовой индикатор статуса события (зеленый — хорошо, красный — плохо), который меняется при изменении статуса в заббикс.
-
Использована маркдаун маркировка
-
Добавлен цветовой индикатор приоритета события
Получили:
При возникновении события:
При решении редактируется сообщение. Меняется цветовой индикатор, добавляется строка с информацией о времени решения
5. Почему это хорошо
Плюсы такого шаблона сообщений понятны:
-
Повышена читаемость — сразу виден статус события, его описание, приоритет
-
меньше спама — вместо повторного сообщения о восстановлении редактируется исходное сообщение и меняется статус с красного на зеленый
6. Как сделать так же
6.1. Изменить скрипт отправки
· Изменить метод с reply на edit
Метод отправки уже добавляет тег с ключом сообщения для того, чтобы отправлять ответное сообщение при восстановлении проблемы. Все, что нужно для того, чтобы менять текст оригинального сообщения — endpoint для ответного сообщения
//Было url = 'api/v3/botx/events/reply_event'; //Стало url = 'api/v3/botx/events/edit_event';
· Добавить цветовые индикаторы в тело скрипта
Добавление цветовых индикаторов несколько неочевидно. Если попробовать добавить их в шаблон сообщения, то получим ошибку. Zabbix не может сохранить эмоджи в шаблон сообщения. Однако может сохранить их в скрипте отправки. Для добавления индикатора состояния достаточно просто отправлять его вместе с сообщением
if (is_problem) { data = { group_chat_id: Express.params.send_to, notification: { status: 'ok', body: "?"+message //Отправится при возникновении проблемы } }; url = 'api/v4/botx/notifications/direct'; } else { data = { payload:{ body: "?"+message //Отправится при решении проблемы } }; url = 'api/v3/botx/events/edit_event';
Для добавления маркировки статусов потребуется немного больше изменений. Нам необходимо создать свой макрос в шаблоне сообщения и заменять его на соответствующий статус перед отправкой. Для этого сперва добавляем приоритет события в параметры скрипта макросом {EVENT.NSEVERITY}, а в шаблоне сообщения заменяем приоритет уникальной строкой Severity: {event_sever}. После чего мы можем подставить нужное нам значение в скрипте
postMessage: function (is_problem,event_sever) { var message = Express.params.message var sever = ["◻Not classified","?Information","?Warning","?Average","?High","?Disaster"] message = message.replace("{event_sever}",sever[event_sever])
6.2. Собрать новый шаблон сообщения
Шаблон сообщения с маркировкой
Событие произошло:
**{EVENT.NAME}** * Started at {EVENT.TIME} * Host: {HOST.NAME} * Severity: {event_sever} * Operational data: {EVENT.OPDATA} * Description: {TRIGGER.DESCRIPTION} * Event info: [Zabbix](http://zabbix.com/zabbix/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID})
Событие устранено:
**{EVENT.NAME}** * Started at {EVENT.TIME} * Host: {HOST.NAME} * Severity: {event_sever} * Operational data: {EVENT.OPDATA} * Description: {TRIGGER.DESCRIPTION} * Event info: [Zabbix](http://zabbix.com/zabbix/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID})
7. Заключение / Выводы
Новый вид оповещений помогает нашим инженерам быстрее и точнее обрабатывать события. Мы продолжаем изучать возможности интеграции между Zabbix и eXpress для еще большего упрощения процесса и обязательно вернемся к вам с новостями.
Спасибо за внимание!
ссылка на оригинал статьи https://habr.com/ru/articles/834434/
Добавить комментарий