Отправка сообщений из 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.

Related Posts

Как гарантировать запуск сервиса после полной инициализации сети в Linux (systemd)

Вы настроили сервис так, чтобы он запускался после network.target, но он всё равно стартует до полной готовности сети? Разберёмся, почему так происходит и как это исправить. Почему «сеть готова» —…

Настройка SoftEther VPN Bridge

Для объединения нескольких географически распределенных подсетей при помощи SoftEther используется компонент SoftEther VPN Bridge и сегодня мы в краце рассмотрим как настроить объединение несколько виртуальных сетей (LXD хост). Подготовка сети…

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

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

You Missed

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

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

Как гарантировать запуск сервиса после полной инициализации сети в Linux (systemd)

Как гарантировать запуск сервиса после полной инициализации сети в Linux (systemd)
Настройка SoftEther VPN Bridge

Установка и настройка Zabbix-Proxy

Установка и настройка Zabbix-Proxy
NetPlan работа с сетевыми мостами
Проект Rain (Часть первая)