Zabbix и Telegram
Установка Zabbix
Установка и базовая настройка системы мониторинга Zabbix 3.0 LTS на Ubuntu Server 14.04 LTS
Telegrem
Создаём бота
Открываем разговор с ботом @BoFather. Пишем ему /start и получаем список всех его команд.Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем. Сохраняем “API key” Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.
Создаём канал
Создайте свой канал в клиенте Телеграм, затем у вас спросят выбрать тип(Публичный или приватный), нужно выбрать приватный. Добавьте своего бота в канал как администратора. Обязательно надо что то написать в канал!
Откройте в браузере ссылку, заменив <Bot_token> на полученный идентификатор от @BotFather
https://api.telegram.org/bot<Bot_token>/getUpdates
В полученном json-ответе найдите значение в параметре result->message->chat->id, это и есть <chat-id> (для приватных каналов chat-id начинается с минуса!)
Откройте браузер и перейдите по ссылке, заменив <Bot_token> и <chat_id> на свои данные
https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>&text=Привет%20мир
Тем самым Вы получите сообщение от бота на все свои устройства с клиентом telegram.
Настройка
Ставим скрипт
Скрипт для телеграма написан на питоне, так что ставим
apt-get update && apt-get install python
Ну и дополнительный модуль
pip install requests
Склонируем себе репозиторий проекта
cd /tmp git clone https://github.com/ableev/Zabbix-in-Telegram.git
Копируем zbxtg.py, zbxtg_group.py и zbxtg_settings.example.py в AlertScriptsPath директорию Zabbix, путь указан в zabbix_server.conf
cp /tmp/Zabbix-in-Telegram/{zbxtg.py,zbxtg_group.py,zbxtg_settings.example.py} /usr/lib/zabbix/alertscripts
Файл zbxtg_settings.example.py отредактируем под наши нужды
vi /usr/lib/zabbix/alertscripts/zbxtg_settings.example.py
и сохраним как zbxtg_settings.py
Создаём пользователя
Создаем юзера в Zabbix и даем ему права на чтение (для просмотра и получения графиков). В Zabbix права назначаются только группе.
Создаём способ оповещения
Создаем новый “Способ оповещения” в веб-интерфейсе Zabbix c подобными параметрами:
Создаём новое действие
Создаем новое “Действие”, например:
Текстовка по проблеме
Last value:{ITEM.VALUE1} ({TIME}) zbxtg;graphs zbxtg;graphs_period=1800 zbxtg;itemid:{ITEM.ID1} zbxtg;title:{HOST.HOST} - {TRIGGER.NAME} Важность триггера: {TRIGGER.SEVERITY} Server: {HOSTNAME} ({HOST.IP}) Описание: {TRIGGER.DESCRIPTION}
Текстовка по восстановлению
Server: {HOSTNAME} ({HOST.IP}) Описание: Проблема устранена! Время устранения проблемы: {DATE} {TIME}
Добавляем пользователю оповещение
Добавим пользователю нужный тип оповещения(в графе отправлять на используем chat_id канала):
Примечание
Параметр Описание zbxtg;channel Включает возможность отправки нотификаций в канал zbxtg;graphs Позволяет отправлять графики zbxtg;graphs_period Задает период графика (по умолчанию 3600 секунд) zbxtg;graphs_width Задает графику ширину (по умолчанию 900px) zbxtg;graphs_height Задает графику высоту (по умолчанию 300px) zbxtg;itemid:{ITEM.ID1} Определяет itemid (от триггера) для прикрепления графика zbxtg;title:{HOST.HOST} - {TRIGGER.NAME}Заголовок графика zbxtg;debug Включает debug mode, логи и изображение будет сохранены в tmp директории
Также можно использовать стилистику для текста действия: markdown-style + html-style.
Debug
Примечание: Zabbix запускает скрипт с тремя параметрами, так что если вы собираетесь запустить его без каких-либо, с одним или с двумя, пожалуйста, не надо. В случае успеха вы не увидите никаких ошибок, и вы получите сообщение.
Проверка отправки просто текста
$ ./zbxtg.py "<chat_id>" "test" "test"
Если ничего не произошло:
- username регистрозависимый
- проверить, что послали боту сообщение (one-to-one message)
- если видите “User ‘username’ needs to send some text bot in private” , это означает что вы не послали сообщение боту
Тест отправки графика в канал
sudo -u zabbix /var/lib/zabbixsrv/alertscripts/zbxtg_channel.py "@TestZabbix" "Test" "$(echo -e 'zbxtg;graphs\nzbxtg;itemid:28458\nzbxtg;debug\nzbxtg;title:test')" --channel