Zabbix и Telegram

Материал из Записки на полях
Перейти к навигации Перейти к поиску

Установка Zabbix

Установка и базовая настройка системы мониторинга Zabbix 3.0 LTS на Ubuntu Server 14.04 LTS

Zabbix Wiki Установка

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

Ссылки