Настраиваем канал для получения уведомлений о проблемах с хостами и сервисами в Telegram
Шаг 1. Создание бота в Telgram
Добавляем бота под названием BotFather и отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов и адрес. Например, «My Alert Checker» с адресом «MyPrivateBot».
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
Шаг 2. Создание канала
Создаём канал с любым названием и адресом, и переходим в его настройки.
Необходимо добавить в список администраторов созданного нами бота — именно он будет публиковать уведомления в канал.
Шаг 3. Идентификация чата
Отправим в чат любое сообщение, чтобы отследить ID-канала для отправки уведомлений.
После того, как отправили сообщение, выполним curl-запрос, подставив ранее полученный токен для бота.
apply Notification "telegram-icingaadmin" to Service { import "mail-service-notification" command = "telegram-service-notification"
users = [ "mytestuser" ]
assign where host.name }
Добавим скрипт для отправки уведомлений
Создаем скрипт telegram-host-notification.sh в директории scripts для отправки уведомлений по хостам.
#!/bin/sh if [ -n "$ICINGAWEB2_URL" ]; then HOSTDISPLAYNAME="<a href=\"$ICINGAWEB2_URL/host/show?host=$HOSTNAME\">$HOSTDISPLAYNAME</a>" fi template=$(cat <<TEMPLATE <strong>$NOTIFICATIONTYPE</strong> - $HOSTDISPLAYNAME is $HOSTSTATE
<pre>$HOSTOUTPUT</pre> TEMPLATE ) if [ -n "$NOTIFICATIONCOMMENT" ]; then template="$template Comment: ($NOTIFICATIONAUTHORNAME) $NOTIFICATIONCOMMENT " fi
Создаем скрипт telegram-service-notification.sh в директории scripts для отправки уведомлений по сервисам.
#!/bin/sh if [ -n "$ICINGAWEB2_URL" ]; then HOSTDISPLAYNAME="<a href=\"$ICINGAWEB2_URL/host/show?host=$HOSTNAME\">$HOSTDISPLAYNAME</a>" SERVICEDISPLAYNAME="<a href=\"$ICINGAWEB2_URL/service/show?host=$HOSTNAME&service=$SERVICEDESC\">$SERVICEDISPLAYNAME</a>" fi template=$(cat <<TEMPLATE <strong>$NOTIFICATIONTYPE</strong> $HOSTDISPLAYNAME - $SERVICEDISPLAYNAME is $SERVICESTATE
Address: $HOSTADDRESS Date/Time: $LONGDATETIME
<pre>$SERVICEOUTPUT</pre> TEMPLATE )
if [ -n "$NOTIFICATIONCOMMENT" ]; then template="$template Comment: ($NOTIFICATIONAUTHORNAME) $NOTIFICATIONCOMMENT " fi
Команды будут выполнять соответствующий скрипт, который вытягивает информацию о проблеме с хостом или сервисом, и curl-запросом отправляет это в Telegram. Определяем собственную конфигурацию команд в файле commands.conf: