Отправка сообщений из Zabbix в VK Teams

Так получилось, что этих самых мессенджеров развелась уже целая куча и только ленивый не написал свой и в текущем моем проекте в качестве корп-мессенджера используется VK Teams. Встроенного плагина для него в составе Zabbix естественно нет и пришлось писать свою обертку.

Как оказалось ничего сложного в этом нет и отделался небольшим скриптом на Python хотя есть и несколько нюансов о которых стоит рассказать.

Создание канала в VK Teams и Teams-бота для отправки сообщений.

Создание канала в VK Teams

Для создания канала нажмите на значок редактирования в панели чаты.

Создание канала в VK Teems

Выберите пункт создать канал.

Создать канал

Указываем название канала и значок.

Указываем название канала и значок.

Переходим в раздел настройки канала.

Настройки канала

Настраиваем видимость и возможность присоединения к каналу.

zabbix@srv-lxc-prod-rain-03:/root

Я отключил видимость и вступление по запросу. Обратите внимание, что при смене видимости ссылка на канал изменится.

Создание бота в VK Teams

Добавьте пользователя @metabot и отправьте ему сообщение /start

Добавляем metabot

Выбираем создать нового бота

Создать нового бота VK Teems

Задаем ник-нэйм нашего бота (оканчивается на bot)

Никнэйм нового бота

Сохраняем токен бота и никому его не говорим (это параметры авторизации).

Токен бота VK Teems

Разрешаем добавлять бота в каналы командой.

/setjoingroups Bot-ID enable
setjoingroups Bot-ID enable

Добавляем бота в созданный канал и делаем его администратором.

Назначаем бота администратором

Python-скрипт для отправки сообщений в канал VK Teams от имени бота

Во первых, нам потребуется установить библиотеку для работы с API VK Teams. Устанавливать будем ее в окружение пользователя Zabbix.

# apt install python3-pip
# mkdir /var/lib/zabbix
# chown zabbix:zabbix /var/lib/zabbix
# su zabbix -s /bin/bash
$ pip install --upgrade mailru-im-bot

Создаем тестовый скрипт отправки сообщений

#!/usr/bin/python3

from bot.bot import Bot

TOKEN = "xxxTOKENxxx"
bot = Bot(token=TOKEN)

chat_to_send_notifications = "AoLJyMosD7CDZCOVsU8"
text_to_send = "Hello from python!"

bot.send_text(chat_id=chat_to_send_notifications, text=text_to_send)

Соотетственно TOKEN и chat_to_send_notifications это токен и идентификатор чата из предыдущего этапа. Если отправка сообщения прошла успешно, то создаем скрипт для отправки сообщений из Zabbix.

Обратите внимание, что идентификатор чата и токен у меня зашит в код и по хорошему так делать не надо, но мне лень и этот Zabbix-сервер используется только одной командой и если проект будет расширяться, я обязательно доработаю.

Скрипт в файле /usr/lib/zabbix/alertscripts/vk_teams.py.

#!/usr/bin/python3

import sys
from bot.bot import Bot

# Получаем аргументы от Zabbix
subject = sys.argv[1]  # Тема оповещения
message = sys.argv[2]  # Текст оповещения

TOKEN = "xxxTokenxxx"
chat_to_send_notifications = "AoLJyMosD7CDZCOVsU8"

bot = Bot(token=TOKEN)
text_to_send = f"<p><b>{subject}</b></p><p>{message}</p>"
bot.send_text(chat_id=chat_to_send_notifications, text=f"*_{subject}_*\n---------------------\n{message}", parse_mode="MarkdownV2")

Сделаем файл исполняемым.

# chmod +x /usr/lib/zabbix/alertscripts/vk_teams.py

Отправка тестового сообщения в чат Teams от имени пользователя zabbix.

# su zabbix -s /bin/bash
$ /usr/lib/zabbix/alertscripts/vk_teams.py 1 2

Настройка Zabbix для отправки сообщений при помощи python-скрипта

Переходим в раздел Alerts -> Media types

Шаблоны Zabbix

Берем за основу например шаблон Email и клонируем его.

Клонирование шаблона Zabbix

Меняем тип на скрипт, задаем имя нашего python скрипта и два параметра:

  • {ALERT.SUBJECT}
  • {ALERT.MESSAGE}
Шаблон VK Teams для Zabbix

Активируем Media type и выполняем тестирование.

Активируем Media type и выполняем тестирование.

Переходим в раздел пользователи и задаем пользователю Media Type

Типы медиа для пользователя

Активируем Trigger action.

Вот собственно и все. Можем получать сообщения в VK Teams.

Вот собственно и все. Можем получать сообщения в VK Teams.

Похожие записи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Nextcloud — отличное решение для хранения файлов, но управление пользователями вручную становится головной болью при масштабировании. Keycloak позволяет централизовать аутентификацию, обеспечивая безопасность, поддержку MFA (двухфакторной аутентификации) и удобный вход через…

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Пакеты в Ubuntu по умолчанию настроены на работу с серверами, имеющими довольно много оперативной памяти. Нам нужно жёстко ограничить потребление памяти для работы на Mikro VPS. Запускать будем мой блог…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Интеграция Gitea и Keycloak: пошаговое руководство

Интеграция Gitea и Keycloak: пошаговое руководство

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда