Данный пост является переосмылением предыдущего поста на эту тему и предполагает настройку Docker контейнера Zabbix, описанную в этом посте. Цель - отделить данные от контейнера и упростить процес обновления контейнера.
Для тонкой настройки оповещений следует использовать пункт меню Настройка/действия(не является темой заметки). Интересующимся сюда .
Создаем Telegram бота
- Для этого в Telegram добавляем бота @BotFather и жмем "запустить"
- Отправляем боту команду /newbot (можно нажать ссылку меню)
- Вводим имя бота, которое будет отображаться в контактах
- Вводим имя бота для вызова, которое должно заканчиваться на bot и быть уникальным и в ответ получаем токен
- Добавляем в контакт лист Telegram @userinfobot
- Жмем запуск и узнаем user_ID
- Для отправки сообщений в группу, необходимо в группу добавить @groupinfobot, после чего инфобота можно удалить
- Из консоли проверяем отправку(вместо User_ID можно указать Group_ID со знаком "-")
curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"User_ID","text":"Пров.org/bot<bot_token>/sendMessage"
- Пишем скрипт отправки zsender.sh
#!/bin/sh token='bot_token' chat="$1" subject="$2" message="$3" /usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subject}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage
- Делаем исполняемым
chmod +x zsender.sh
- Проверяем
./zsender.sh User_ID 'Test message' 'it is test message'
Скрипт работает
Настройка Zabbix для работы с ботом
- Внимание!
- Предполагается что мы имеем дело с последней версией контейнера, если нет - имеет смысл существующий контейнер удалить и на базе свежего образа запустить новый. Обновлять пакеты внутри контейнера не вижу смысла. Созданный на предыдущем этапе скрипт необходимо поместить в каталог хоста, связанный с
/usr/lib/zabbix/alertscripts
контейнера в моем случае это/var/lib/zabbix/alertscripts.
- Подключаемся к контейнеру с Zabbix-Server
docker exec -i -t zabbix-server sh /var/lib/zabbix #
- устанавливаем curl
apk add curl
- С помощью комбинации
<Ctrl><D>
отключаемся от консоли контейнера -
Добавляем в Zabbix новый способ оповещения, для чего идем
Администрирование/Способы оповещения/Создать способ оповещения - Указываем наш скрипт, задаем имя и параметры:
- В итоге имеем
Жмем тест - В получателя вводим User_ID или Group_ID со знаком "-"
Результат тестирования - Добавляем оповещение для пользователя
Жмем добавить Вводим User_ID/-Group_ID Результат
Для тонкой настройки оповещений следует использовать пункт меню Настройка/действия(не является темой заметки). Интересующимся сюда .
Интересно, спасибо!
ОтветитьУдалитьНо есть вопрос, как сделать чтобы бот мог отвечать на некоторые запросы?
К примеру: Сколько по времена определённый хост/триггер находится в состоянии ПРОБЛЕМА?
Я такого не делал, поэтому не отвечу
УдалитьДобрый день !! а как быть рутом в докер контейнере ?!? При подключении docker exec -i -t zabbix-server sh , я обычный пользователь и при попытке apk add curl - выдает permission denied
ОтветитьУдалитьТам зависит от базового образа - apk - для образа на базе alpine.
Удалитьпопробуйте выполнить команду whoami должен быть root, если нет необходимо выполнить sudo.