Скачиваем скрипты от сюда https://github.com/ableev/Zabbix-in-Telegram
Кладем скрипт zbxtg.py в каталог /usr/lib/zabbix/alertscripts, каталог может отличатся, можно проверить значение переменной AlertScriptsPath в конфиге zabbix_server.conf
Создаем скрипт zbxtg_settings.py с содержимым из файла zbxtg_settings.example.py
cp zbxtg_settings.example.py zbxtg_settings.py
Заменяем в нем на наши такие данные как:
(в переменной zbx_server url пишем без /zabbix — для 4.х версии проверено)
tg_key = “<TOKEN>”
…
zbx_tg_signature = False
zbx_tg_tmp_dir = “/tmp/”
…
zbx_server = “http://localhost/zabbix” # указываем URL к нашему zabbix серверу
zbx_api_user = “” # имя пользователя от zabbix
zbx_api_pass = “” # пароль от zabbix для user
…
emoji_map = {
“OK”: “✅”,
“Not classified”: “❕”,
“Information”: “ℹ”,
“Warning”: “⚠”,
“Average”: “❗”,
“High”: “❌”,
“Disaster”: “?”
}
chmod +x zbxtg_settings.py
устанавливаем python requests, учитываем вашу текущую версию python -V
wget https://bootstrap.pypa.io/get-pip.py
# use Python version | python3.3 or python
# pythonX.X get-pip.py
python2.7 get-pip.py
pip install requests
Идем в Администрирование — Способы оповещений, жмем кнопку «Создать способ оповещений». В поле «Имя» вводим название способа оповещения. В поле «Тип» нужно выбрать «Скрипт». В поле «Имя скрипта» нужно указать имя файла-скрипт, без пути; например, zbxtg.py В поле «Параметры скрипта» нужно нажать «Добавить» 3 раза и ввести в появившиеся поля {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}.
Идем в Администрирование — Пользователи — выбираем своего пользователя — Оповещения — Добавить. В поле «Тип» выбираем только что созданный способ оповещения, например, Telegram Bot. В поле «Отправлять на» вводим свой Telegram ID. Остальные поля заполняем на свое усмотрение.
Идем в Настройка — Действия, в поле «Источник событий» выбираем «Триггеры» и жмем «Создать действие». На закладках «Действие» и «Условие» заполняем поля по своему усмотрению. Я в полях «Сообщение по умолчанию» и «Сообщение о восстановлении».
{{{TRIGGER.SEVERITY}}} FAIL: {TRIGGER.NAME} on {HOSTNAME}
Сообщение по-умолчанию:
Last value: {ITEM.LASTVALUE1} ({TIME})
zbxtg;graphs
zbxtg;graphs_period=10800
zbxtg;itemid:{ITEM.ID1}
zbxtg;title:{HOST.HOST} – {TRIGGER.NAME}
zbxtg;single_message
Тема восстановления:
{{OK}} OK: {TRIGGER.NAME} on {HOSTNAME}
Сообщение о восстановление:
Last value: {ITEM.LASTVALUE1} ({TIME})
zbxtg;graphs
zbxtg;graphs_period=10800
zbxtg;itemid:{ITEM.ID1}
zbxtg;title:{HOST.HOST} – {TRIGGER.NAME}
zbxtg;single_message
На закладке «Операции» жмем «Новый». Выбираем пользователя. В поле «Отправить только через» выбираем созданный на шаге 4 способ оповещения, например, Telegram Bot. Жмем «Добавить» и еще раз «Добавить».
После обновления блока emoji_map и добавления {{{TRIGGER.SEVERITY}}} / {{OK}} в «Default subject» в Action, а также в «Default message» переменной zbxtg;single_message сообщения группируються и им добавляються emoji статусов проблемы.
Групповые уведомления
Для групповых уведомлений необходимо создать группу в телеграм в которую добавить бота.
Создать «Способ оповещения».
а также добавить в пользователя данный способ оповешения.
в поле «Отправить на» обязательно указать Имя группы (не ID !!!).
zbxtg;graphs — enables attached graphs
zbxtg;graphs_period=10800 — set graphs period (default – 3600 seconds)
zbxtg;graphs_width=700 — set graphs width (default – 900px)
zbxtg;graphs_height=300 — set graphs height (default – 300px)
zbxtg;itemid:{ITEM.ID1} — define itemid (from trigger) for attach
zbxtg;title:{HOST.HOST} – {TRIGGER.NAME} — graph title
zbxtg;debug — enables debug mode, some logs and images will be saved in the tmp dir (temporary doesn’t affect python version)
zbxtg;channel — enables sending to channels
Проверить работу скрипта можно следующими запросами:
# sudo ./zbxtg.py “<username>” “<message_subject>” “<message_body>” –debug
# sudo ./zbxtg.py “@mai1on” “Test” “Test2” –debug
Проверить работу бота в чате, предварительно бота необходимо добавить в ваш чат.
# sudo ./zbxtg.py “Name of your telegram chat” “Test” “Test body” –debug –group
Известные проблемы, если перестали отображаться графики в сообщениях, для начала необходимо проверить код ответа.
веpный ответ:
curl -sI http://localhost/zabbix/chart3.php | head -1
HTTP/1.1 200 OK
не верный ответ:
curl -sI http://localhost/zabbix/chart3.php | head -1
HTTP/1.1 401 Unauthorized
Причиной был файл .htaccess в каталоге с zabbix’ом в котором закрыт доступ к zabbix через web авторизацию.
Еще одна возможная причина, по которой уведомления от telegram могут приходить без графиков — отсутствие верного логина пароля в файле конфигурации скрипта формируещего графики:
nano zbxtg_settings.py
переменные:
zbx_api_user = “Admin”
zbx_api_pass = “password”
Это также будет причиной вот такого рода ошибок:
Для 4-й версии не забываем в настройках раскоментить параметр:
zbx_server_version = 4 # for Zabbix 4.x version, default will be changed in the future with this