Я настроил icinga2 для мониторинга нескольких служб с разными интервалами, поэтому одна служба может проверяться каждые 10 секунд. Если он выдает критическую ошибку, я получу уведомление, но я буду получать его каждые 10 секунд, если ошибка не устранена, или пока я не подтвержу ее. Я просто хочу получать его один раз для каждого изменения состояния. Затем, может быть, через определенное время снова, но это не так важно.
Вот моя конфигурация:
Это более или менее стандартный файл template.conf, но я добавил «интервал = 0 с», потому что я читал, что это должно предотвратить многократную отправку уведомлений.
template Notification "mail-service-notification" {
command = "mail-service-notification"
interval = 0s
states = [ OK, Critical ]
types = [ Problem, Acknowledgement, Recovery, Custom,
FlappingStart, FlappingEnd,
DowntimeStart, DowntimeEnd, DowntimeRemoved ]
vars += {
notification_logtosyslog = false
}
period = "24x7"
}
А вот часть уведомления.conf, которая включает в себя шаблон:
object NotificationCommand "telegram-service-notification" {
import "plugin-notification-command"
command = [ SysconfDir + "/icinga2/scripts/telegram-service-notification.sh" ]
env = {
NOTIFICATIONTYPE = "$notification.type$"
SERVICEDESC = "$service.name$"
HOSTNAME = "$host.name$"
HOSTALIAS = "$host.display_name$"
HOSTADDRESS = "$address$"
SERVICESTATE = "$service.state$"
LONGDATETIME = "$icinga.long_date_time$"
SERVICEOUTPUT = "$service.output$"
NOTIFICATIONAUTHORNAME = "$notification.author$"
NOTIFICATIONCOMMENT = "$notification.comment$"
HOSTDISPLAYNAME = "$host.display_name$"
SERVICEDISPLAYNAME = "$service.display_name$"
TELEGRAM_BOT_TOKEN = TelegramBotToken
TELEGRAM_CHAT_ID = "$user.vars.telegram_chat_id$"
}
}
apply Notification "telegram-icingaadmin" to Service {
import "mail-service-notification"
command = "telegram-service-notification"
user_groups = [ "icingaadmins" ]
assign where host.name
}
grep -r "interval"
(рекурсивный поиск любого вхождения интервала в каждом файле) - person eli   schedule 22.06.2018