---
title: "Zabbix и Telegram"
description: "На оригинальность не претендую, взято здесь: http://djvn.sk/zbxtlgrm/ Бот Регистрируем своего бота, ..."
author: "anonops"
published: "2017-03-29T00:01:26+00:00"
modified: "2017-03-29T00:01:26+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/zabbix-i-telegram-761627"
markdown_url: "https://yvision.kz/post/zabbix-i-telegram-761627/markdown"
site_name: "Yvision.kz"
---

# Zabbix и Telegram

> На оригинальность не претендую, взято здесь: http://djvn.sk/zbxtlgrm/ Бот Регистрируем своего бота, ...

## На оригинальность не претендую, взято здесь: http://djvn.sk/zbxtlgrm/

## Бот

Регистрируем своего бота, для этого пишем в Telegram боту [@](http://telegram.me/BotFather)[BotFather](http://botfather.yvision.kz)

```
/newbot BotFather Alright, a new bot. How are we going to call it? Please choose a name for your bot. Zabbix BotFather Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. имя_вашего_бота BotFather Done! Congratulations on your new bot. You will find it at telegram.me/zbxmtbot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. Use this token to access the HTTP API: токен:бота For a description of the Bot API, see this page: https://core.telegram.org/bots/api /setuserpic BotFather Choose a bot to change profile photo. @имя_вашего_бота BotFather OK. Send me the new profile photo for the bot.
```

## Скрипт

На Zabbix сервере добавляем скрипт, через который будут отправляться сообщения. KEY, он же токен бота берем из диалога с BotFather.

```
nano /usr/lib/zabbix/alertscripts/zbxtg.sh
```

```
#!/bin/bash USERID=$1 THEME=$2 BODY=$3 KEY="токен:бота" TIMEOUT="10" URL="https://api.telegram.org/bot$KEY/sendMessage" TEXT="$THEME $BODY" PARSEMODE="markdown" curl -s --max-time $TIMEOUT -d "chat_id=$USERID&disable_web_page_preview=1&parse_mode=$PARSEMODE&text=$TEXT" $URL > /dev/null
```

Кстати, обратите внимание на вот этот кусочек кода:

```
TEXT="$THEME $BODY"
```

Таким образом обеспечивается перенос строки, я пробовал всякие там
,
, /n, /r — ничего не работало, а вот такой перенос — работает ;-). И ещё хозяйке на заметку (хотя я это и не использую): All  and & symbols that are not a part of a tag or an HTML entity must be replaced with the corresponding HTML entities ( with > and & with &).

Меняем владельца и делаем скрипт исполняемым.

```
chown zabbix:root /usr/lib/zabbix/alertscripts/zbxtg.sh chmod +x /usr/lib/zabbix/alertscripts/zbxtg.sh
```

Параметрами $1, $2, $3 для скрипта являются получатель, тема и тело сообщения. Вы можете сами проверить как Zabbix будет дёргать скрипт, выполнив команду /usr/lib/zabbix/alertscripts/zbxtg.sh user_idmessage_theme message_body

Чтобы узнать свой user id, нужно найти бота в поиске в приложении Telegram или перейти по ссылке http://telegram.me/имя_бота и нажать на /start и что-нибудь ему написать, после чего зайти на https://api.telegram.org/botтокен:бота/getUpdates и увидеть факт отправки сообщения от вас боту. Сообщения будут иметь вид:

```
"message":{"message_id":14681,"from":{...},"chat":{"id":123456789,"first_name":"REALNAME","username":"NICKNAME","type":"private"},"date":...
```

Где «chat»:{«id»:123456789 и будет user id. Для группы:

```
"message":{"message_id":14686,"from":{...},"chat":{"id":-12345678,"title":"GROUPNAME","type":"group"},"date":...
```

Где user id будет: «chat»:{«id»:-12345678

Заметка: чтобы добавить бота в группу, нужно нажать на название группы в Telegram, выбрать Добавить участников и в поиске набрать имя_бота.

## Оповещение

Добавляем способ оповещения, для этого идём в Администрирование — Способы оповещений, добавляем новый. Указываем Имя оповещения, Тип: Скрипт, Имя скрипта: zbxtg.sh (подразумевается, что скрипт лежит в определённой директории, которая указывается в конфиге сервера, т.е. в /etc/zabbix/zabbix_server.conf).

![Zabbix и Telegram](http://djvn.sk/wp-content/uploads/2016/06/zabbix-telegram-1-700x262.png)

Дополнение для Zabbix 3.0

> В третьей версии Zabbix нужно при создании media type обязательно указывать три параметра {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}, как написано тут: [https://www.zabbix.com/documentation/3.0/manual/config/notifications/media/script](https://www.zabbix.com/documentation/3.0/manual/config/notifications/media/script) иначе $1..$3 не передаются в скрипт, и, соответственно, ничего не работает. Спасибо за дополнение Dmitry Burtsev и Nikolay Groo Первоисточник: [https://hellsman.ru/admin/linux/opoveshheniya-zabbix-cherez-telegram-s-pomoshhyu-telegram-botapi#hcq=NtUMuOp](https://hellsman.ru/admin/linux/opoveshheniya-zabbix-cherez-telegram-s-pomoshhyu-telegram-botapi#hcq=NtUMuOp)

![Zabbix и Telegram](http://djvn.sk/wp-content/uploads/2016/06/zabbix-telegram-5.png)

## Действие

Добавляем действие, для этого идём в Настройка — Действия, выбираем Источник событий — Триггеры и добавляем новое (обычно в этом разделе уже есть какое-нибудь оповещение через email или т.п.). Далее идёт самый изюм, из-за которого стоит просмотреть этот пост :-). Если событий сыпется много, то их дико неудобно воспринимать, а в телеге можно кое-как отформатировать текст, чем и воспользуемся.

Итак, Имя — названия действия Тема по умолчанию *{HOST.NAME1} — *`{TRIGGER.STATUS}`* — {EVENT.DATE} — {EVENT.TIME}* Сообщение по умолчанию {TRIGGER.NAME}

![Zabbix и Telegram](http://djvn.sk/wp-content/uploads/2016/06/zabbix-telegram-2-700x489.png)

Если Вам нужно сообщение о восстановлении, то ставим галочку и заполняем поля аналогично. На вкладке Условия добавляем какие душе угодно зависимости: узлы/группы/шаблоны, важность триггеров, время и прочее.

На вкладке Операции добавляем операцию с шагом от 1 к 1, добавляем группы пользователей или пользователей, которым нужно отправлять сообщение (ну и вообще для которых это действие будет работать), выбираем способ оповещения в Отправлять только через. Обновляем, добавляем, сохраняем.

Длительность шага работает так: срабатывает триггер, с этого момента начинается отсчёт времени и это промежуток времени считается шагом 1. Когда отсчитывается N секунд, соответствующее длительности (по умолчанию 60 сек), наступает шаг 2 и т.д. Таким образом можно например отправлять сообщения разными способами (sms, email, etc) или определённым пользователям/группам если событие (триггер) не подтверждено в течение какого-либо времени.

![Zabbix и Telegram](http://djvn.sk/wp-content/uploads/2016/06/zabbix-telegram-3-700x147.png)

## Пользователь

Добавляем способ оповещения для пользователя. Для отправки сообщения в телеграмовскую группу я создал фиктивного пользователя в Zabbix и добавил ему оповещение с id группы (для групп всегда со знаком минус).

![Zabbix и Telegram](http://djvn.sk/wp-content/uploads/2016/06/zabbix-telegram-4-700x98.png)

В результате получаем сообщения такого вида:

![Zabbix и Telegram](http://djvn.sk/wp-content/uploads/2016/06/2016-06-18_21-19-03.png)

## Напоследок

---

Source: [https://yvision.kz/post/zabbix-i-telegram-761627](https://yvision.kz/post/zabbix-i-telegram-761627)