В Интернете есть много статей про ботов в Telegram на python, bash, etc… но если вам нужна простейшая, ни от кого не зависимая уведомлялка, то читайте дальше.
Бот
Скрипт
На 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=$USERIDparse_mode=$PARSEMODE $URL > /dev/null
Кстати, обратите внимание на вот этот кусочек кода:
TEXT=»$THEME $BODY»
Таким образом обеспечивается перенос строки, я пробовал всякие там
,
, /n, /r — ничего не работало, а вот такой перенос — работает ;-). И ещё хозяйке на заметку (хотя я это и не использую): All and with < , >with > and ).
Меняем владельца и делаем скрипт исполняемым.
Zabbix — мониторинг: настройка и отправка уведомлений, slack, telegram, sms и rocketchat
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_id message_theme message_body
Чтобы узнать свой user id, нужно найти бота в поиске в приложении Telegram или перейти по ссылке http://telegram.me/имя_бота и нажать на /start и что-нибудь ему написать, после чего зайти на https://api.telegram.org/botтокен:бота/getUpdates и увидеть факт отправки сообщения от вас боту. Сообщения будут иметь вид:
«message»:,»chat»:,»date».
«message»:,»chat»:,»date».
Заметка: чтобы добавить бота в группу, нужно нажать на название группы в Telegram, выбрать Добавить участников и в поиске набрать имя_бота.
Оповещение
Добавляем способ оповещения, для этого идём в Администрирование — Способы оповещений, добавляем новый. Указываем Имя оповещения, Тип: Скрипт, Имя скрипта: zbxtg.sh (подразумевается, что скрипт лежит в определённой директории, которая указывается в конфиге сервера, т.е. в /etc/zabbix/zabbix_server.conf).
Дополнение для Zabbix 3.0
В третьей версии Zabbix нужно при создании media type обязательно указывать три параметра , и , как написано тут: 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
Действие
Добавляем действие, для этого идём в Настройка — Действия, выбираем Источник событий — Триггеры и добавляем новое (обычно в этом разделе уже есть какое-нибудь оповещение через email или т.п.). Далее идёт самый изюм, из-за которого стоит просмотреть этот пост :-). Если событий сыпется много, то их дико неудобно воспринимать, а в телеге можно кое-как отформатировать текст, чем и воспользуемся.
Илья Аблеев — Zabbix in Telegram
Итак, Имя — названия действия
Тема по умолчанию * — *«* — — *
Сообщение по умолчанию
Если Вам нужно сообщение о восстановлении, то ставим галочку и заполняем поля аналогично. На вкладке Условия добавляем какие душе угодно зависимости: узлы/группы/шаблоны, важность триггеров, время и прочее.
На вкладке Операции добавляем операцию с шагом от 1 к 1, добавляем группы пользователей или пользователей, которым нужно отправлять сообщение (ну и вообще для которых это действие будет работать), выбираем способ оповещения в Отправлять только через. Обновляем, добавляем, сохраняем.
Длительность шага работает так: срабатывает триггер, с этого момента начинается отсчёт времени и это промежуток времени считается шагом 1. Когда отсчитывается N секунд, соответствующее длительности (по умолчанию 60 сек), наступает шаг 2 и т.д. Таким образом можно например отправлять сообщения разными способами (sms, email, etc) или определённым пользователям/группам если событие (триггер) не подтверждено в течение какого-либо времени.
Пользователь
Добавляем способ оповещения для пользователя. Для отправки сообщения в телеграмовскую группу я создал фиктивного пользователя в Zabbix и добавил ему оповещение с id группы (для групп всегда со знаком минус).
В результате получаем сообщения такого вида:
Напоследок
Источник: djvn.sk
Системное администрирование Linux
В Zabbix есть несколько встроенных способов отправки оповещений — Email,Jabber,SMS. Но иногда хочется использовать более удобные и знакомые инструменты. В этой статье мы рассмотрим как настроить отправку уведомлений от Zabbix через один из самых популярных месседжеров — Telegram.
Для настройки будем использовать сервер Zabbix3.2 установленный на CentOs7 и проект «Telegram messenger CLI».
sudo yum install git
Клонируем «Telegram messenger CLI» с github
git clone —recursive https://github.com/vysheng/tg.git
переходим в директорию tg
Ставим необходимые зависимости для сборки пакета
sudo yum install gcc libevent-devel openssl-devel
readline-devel libconfig-devel lua-devel jansson-devel
Произведем настройку пользователся Telegram из под которого будем осущевствлять отправку уведомлений.
bin/telegram-cli -k tg-server.pub -W
Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license». This is free software, and you are welcome to redistribute it under certain conditions; type `show_license» for details. Telegram-cli uses libtgl version 2.1.0 Telegram-cli includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/) I: config dir=[/root/.telegram-cli] phone number: +7********** code («CALL» for phone number): **** >
Указываем номер телефона для регистрации учетной записи в телеграм и вводим код подтверждения, который будет прислан на указанный номер
Для вызова справки можно использовать команду «help»
> add_contact «телефон» Admin_User
Заметка: Для разделения слов в имени контакта используется знак подчеркивания «_»
Теперь мы можем непосредствено отправлять этому пользователя сообщения
> msg Admin_User «Привет!»
Но скорее всего вы захотите рассылать уведомления в чат, что бы его получали несколько контактов:
> create_group_chat «Имя_чата» список пользователей
> create_group_chat Zabbix_Alert Admin_User Vasya
xxsokolov / zabbix-notification-telegram Goto Github PK
Нотификатор оповещений в Telegram для Zabbix.
Легкая установка, гибкая настройка, информативные сообщения.
Проект закрыт. This project is deprecated.
Go to -> https://t.me/ZbxNTg/4241
- Возможности
- Планы
- С чего начать
- Установка из source
- Получаем API token
- Конфигурационный файл
- XML разметка
- Тэги ZNTSettings
- Графики, информативные заголовки, ссылки 1 , тэги 2 и упоминания объединены в одно сообщение.
- Формирование и обновление cash файла (privat, group, group -> supergroup) 3
- Гибкая настройка через конфигурационный файл, XML разметку в действиях триггеров и Trigger Tags 4
- Маппинг Emoji статуса и важности события.
- Наложение watermark на изображение.
- Обьединение графиков в альбом.
- Обработка быстрых команд ботом
- Отправка метрик по запросу от бота
Для работы потребуется Python 3+ и Zabbix 3+.
Установка из source (git requires)*:
$ cd /usr/lib/zabbix/alertscripts $ git clone https://github.com/xxsokolov/Zabbix-Notification-Telegram.git .
После этого нотификатор практически готов к работе, потребуется еще несколько шагов.
Подробную инструкцию вы можете найти на wiki: RU, ENG (vacant)
Создаем первое оповещение
Получаем API token
Если у Вас нет бота, я расскажу как это сделать: RU, ENG (vacant)
Основная конфигурация нотификатора производится через файл zbxTelegram_config.py.
Давайте разберем каждый параметр подробно:
Дополнительная конфигурация производится через XML разметку(пример) в Zabbix Action.
Также разберем эти параметры:
string | Default | ||
bool | Добавление изображения графика в сообщение. | True | |
bool | Добавление линка на «Узел сети» (host) в сообщение. | True | |
bool | Добавление линка на график «Элемент данных» (item) в сообщение. | True | |
bool | Добавление линка из триггера в сообщение. | True | |
bool | Добавление всех тэгов в сообщение. | True | |
bool | Добавление тэгов события в сообщение. | True | |
bool | Добавление тэгa c eventid в сообщение. | True | |
bool | Добавление тэгa c itemid в сообщение. | True | |
bool | Добавление тэгa c triggerid в сообщение. | True | |
bool | Добавление тэгa c actionid в сообщение. | True | |
bool | Добавление тэгa c hostid в сообщение. | True | |
bool | True | ||
bool | True | ||
bool | Добавление кнопок к сообщению. (В стадии разработки). |
True | |
string | Период за который присылается изображение графика в секундах. | 10800 | |
string | Макрос имени узла сети. | ||
string | Макросы ИД элементов данных. | ||
string | Макрос ИД триггера. | ||
string | Макрос ИД события. | ||
string | Макрос ИД действия. | ||
string | Макрос ИД узла сети. | ||
string | Шаблон формирования заголовка изображения графика из макросов: имя узла сети и имя события. | — | |
string | Макрос URL триггера. | ||
string | Макрос тэгов события разделенных запятой. Макрос объединяет теги из узла сети, шаблона, триггера. |
: В XML документах фрагмент, помещенный внутрь CDATA, — это часть содержания элемента, которая помечена для парсера как содержащая только символьные данные, а не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, нет никакой смысловой разницы между символьными данными, которые объявлены как CDATA и символьными данными, которые объявлены в обычном синтаксисе и где «» будут представлены как «», соответственно. (Wikipedia)
Более детальную настройку нотификатора можно произвести через тэги в триггерах.
Разберем эти параметры:
trigger_settings_tag | Имя тэга для обработки значений параметров. | ‘ZNTSettings’ |
trigger_settings_tag_no_graph | Значение тэга ‘ZNTSettings’ при котором изображение графика не будет добавлено в сообщение. | ‘no_graph’ |
trigger_settings_tag_no_alert | Значение тэга ‘ZNTSettings’ при котором сообщение отправлено не будет. В лог файл будет добавлено событие об отмене отправки сообщения. |
‘no_alert’ |
trigger_settings_tag_not_notify | Значение тэга ‘ZNTSettings’ при котором сообщение будет отправляет беззвучно. Пользователи iOS не получат уведомления, пользователи Android получат уведомление без звука. |
‘not_notify’ |
trigger_settings_tag_graph_normal | ‘graph_normal’ | |
trigger_settings_tag_graph_stacked | ‘graph_stacked’ | |
trigger_settings_tag_graph_pie | ‘graph_pie’ | |
trigger_settings_tag_graph_exploded | ‘graph_exploded’ | |
trigger_settings_tag_graph_period | Значение тэга ‘ZNTSettings’ при котором будет задан период за какой присылать изображение графика. Указывается после разделителя = в секундах. Приоритет: tag, xml, config* |
‘period=’ |
trigger_info_mentions_tag | Тэг упоминания юзера | ‘ZNTMentions’ |
Пример:
Все основные события (отправка, добавления в cash файл, изменение группы в суппергруппу, ошибки, дебаг) логируются в файле znt.log , Вы можете его найти по умолчанию /usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log (config_log_file]) Поддерживаются три режима логирования:
- Обычный(по-умолчанию), ведется минимальный log об операциях в нотификаторе;
- Debug], более детальный log, требуется только для анализа ошибок в работе нотификатора (по-умолчанию False);
- exc_info], полный Traceback ошибок (по-умолчанию False);
Оповещение не приходит в группу или в личку
Последние значимые изменения
- Добавлены и изменены переменные в конфиг файле.
- Изменен XML.
- Welcome! ZNTGroup.
1 Формирование списка urls в теле сообщения для быстрого перехода в разделы Zabbix (Trigger, History, Event, Acknowledget, Host)
2 Формирование списка tags в теле сообщения для быстрого поиска событий в Telegram (Trigger Tags, Eventid, Itemid, Triggeid, Actionid)
3 Кеш файл это json массив содержащий имена юзуров, групп, суппергруп и их идентификаторы(ИД). Безопасность Telegram не позволяет напрямую писать по имени, только по ИД. Чтобы получить данный ИД надо написать лично Вашему боту или бот должен быть добавлен в группу . Только после этого нотификатор «подключается» к боту и получает все обновления которые произошли у бота (getUpdates). Далее мы находим никнейм или имя групп, куда решили отправить нотификацию, и их ИД, которые и кладем в cash файл. FAQ Telegram
4 Управление через Trigger Tags (Не прикреплять график, не отправлять уведомление, без push в Telegram dev и т.п.)
Источник: giter.club