- Работа
- Linux
- Monitoring
- Icinga2 + telegram
Icinga2 + telegram
Данный пример сделан на базе сборки docker icinga/icinga2
.
Создаем бота телеграмм
Добавляем себе @BotFather
Далее там
/newbot
В ответ пишем имя бота. Потом он попросит уникальное имя бота. В итоге получим токен созданного бота.
Для активации выполним команду
curl --silent "https://api.telegram.org/bot${TOKEN}/getUpdates"
Что бы узнавать ID группы или свой собственный добавляем в группу бота @getmyid_bot
и даем админские права. Далее просто постим что нибудь в группу и смотрим айдишники.
Загружаем скрипты отправки сообщений
Архив со скриптами . Распаковываем и копируем в каталог /data/etc/icinga2/scripts
. Не забываем дать права на исполнение.
Добавляем конфиги
commands.conf
Строку 239843925245:AAE7sMQQdDOASDKQoqWOKAbTXClU
меняем на ваш токен, что вы получили после создания бота. Можно конечно это сделать и в настройках группы или юзера, но это если вы используете более 1 телеграм бота.
object NotificationCommand "telegramm-host-notifaction" {
import "plugin-notification-command"
command = [
"/data/etc/icinga2/scripts/telegram-host-notification.sh"
]
timeout = 3s
arguments += {
"-4" = {
required = true
value = "$address$"
}
"-b" = {
required = true
value = "$notification.author$"
}
"-c" = "$notification.comment$"
"-d" = {
required = true
value = "$icinga.long_date_time$"
}
"-l" = "$host.name$"
"-n" = "$host.display_name$"
"-o" = {
required = true
value = "$host.output$"
}
"-q" = {
required = true
value = "$user.vars.telegram_chat_id$"
}
"-r" = {
required = true
value = "239843925245:AAE7sMQQdDOASDKQoqWOKAbTXClU"
}
"-s" = "$host.state$"
"-t" = "$notification.type$"
}
}
object NotificationCommand "telegramm-service-notification" {
import "plugin-notification-command"
command = [
"/data/etc/icinga2/scripts/telegram-service-notification.sh"
]
timeout = 3s
arguments += {
"-4" = {
required = true
value = "$address$"
}
"-b" = {
required = true
value = "$notification.author$"
}
"-c" = "$notification.comment$"
"-d" = {
required = true
value = "$icinga.long_date_time$"
}
"-e" = {
required = true
value = "$service.name$"
}
"-l" = "$host.name$"
"-n" = "$host.display_name$"
"-o" = {
required = true
value = "$service.output$"
}
"-q" = {
required = true
value = "$user.vars.telegram_chat_id$"
}
"-r" = {
required = true
value = "239843925245:AAE7sMQQdDOASDKQoqWOKAbTXClU"
}
"-s" = "$service.state$"
"-t" = "$notification.type$"
"-u" = {
required = true
value = "$service.display_name$"
}
}
}
templates.conf
template Notification "telegramm-host-notification" {
command = "telegramm-host-notifaction"
states = [ Up, Down ]
types = [ Problem, Acknowledgement, Recovery, Custom,
FlappingStart, FlappingEnd,
DowntimeStart, DowntimeEnd, DowntimeRemoved ]
vars += {
notification_logtosyslog = false
}
period = "24x7"
}
template Notification "telegramm-service-notification" {
command = "telegramm-service-notification"
states = [ OK, Warning, Critical, Unknown ]
types = [ Problem, Acknowledgement, Recovery, Custom,
FlappingStart, FlappingEnd,
DowntimeStart, DowntimeEnd, DowntimeRemoved ]
vars += {
notification_logtosyslog = false
}
period = "24x7"
}
notifications.conf
apply Notification "telegramm-icingaadmin" to Host {
import "telegramm-host-notification"
user_groups = host.vars.notification.telegramm.groups
users = host.vars.notification.telegramm.users
assign where host.vars.notification.telegramm
}
apply Notification "telegramm-icingaadmin" to Service {
import "telegramm-service-notification"
user_groups = host.vars.notification.telegramm.groups
users = host.vars.notification.telegramm.users
assign where host.vars.notification.telegramm
}
Добавляем уведомления
В хосте сервисе или в их шаблонах, где нужно уведомления через telegram указываем строки.
vars.notification["telegramm"] = {
groups = [ "icingaadmins" ]
}
Далее в пользователе или шаблоне пользователей добавляем переменную, где 238923885
- ID вашей группы или вашего чата с ботом.
vars.telegram_chat_id = "-238923885"
Перезапускаем исингу и радуемся сообщениям в телеграм :)
[ Править ]