Назад | Перейти на главную страницу

Icinga 2 отправляет уведомления вне указанного периода времени

Я пытаюсь отправлять разные уведомления в разные периоды времени, в основном я хочу отправлять все уведомления в рабочее время, но только уведомления для хостов, отмеченных как аварийные в нерабочее время.

apply Notification "mike-on" to Host {
  import "mail-host-notification"
  users = [ "sms" ]
  period = "mikehours"
  assign where host.vars.notification.mail
}

apply Notification "mike-off" to Host {
  import "mail-host-notification"
  users = [ "sms" ]
  period = "nonmikehours"
  assign where host.vars.emergency == true
}

sms - это просто контакт с адресом электронной почты mynumber@carrier.net, а периоды времени определены следующим образом

object TimePeriod "mikehours" {
  import "legacy-timeperiod"

  display_name = "Mike's work hours"
  ranges = {
    "monday"    = "06:00-23:00"
    "tuesday"   = "06:00-23:00"
    "wednesday" = "06:00-23:00"
    "thursday"  = "06:00-23:00"
    "friday"    = "06:00-23:00"
    "saturday"  = "07:00-22:00"
    "sunday"    = "07:00-22:00"
  }
}

object TimePeriod "nonmikehours" {
  import "legacy-timeperiod"
  display_name = "Mike's off hours"
  ranges = {
    "monday"    = "00:00-06:00,23:00-24:00"
    "tuesday"   = "00:00-06:00,23:00-24:00"
    "wednesday" = "00:00-06:00,23:00-24:00"
    "thursday"  = "00:00-06:00,23:00-24:00"
    "friday"    = "00:00-06:00,23:00-24:00"
    "saturday"  = "00:00-07:00,22:00-24:00"
    "sunday"    = "00:00-07:00,22:00-24:00"
  }
}

Тем не менее, я до сих пор получаю все уведомления по смс даже вне указанного рабочего времени.

Правила применения оцениваются самостоятельно. Если ваши выражения assign / ignore where совпадают (например, «assign where host.vars.notification.mail», вероятно, соответствует всем хостам), они сгенерируют объект уведомления. Убедитесь, что с помощью «списка объектов» или остальных конечных точек api / v1 / objects / notifications. Второе правило применения соответствует только заданному настраиваемому атрибуту и ​​добавляет дополнительный объект уведомления. Итак, решение вашего комментария в порядке.

Кстати, вы можете опустить сравнение "== true". Icinga 2 предполагает это автоматически для логических атрибутов.

Я нашел это решение, которое мне подходит:

apply Notification "mike-on" to Host {
  import "mail-host-notification"

  users = [ "sms" ]

  period = "mikehours"

  assign where host.vars.notification.mail && !host.vars.emergency
}

apply Notification "emergency" to Host {
  import "mail-host-notification"
  users = [ "sms" ]
  period = "24x7"
  assign where host.vars.emergency == true
}

Я все еще хотел бы получить ответ о том, почему мое первоначальное решение не удалось, но в любом случае это гораздо лучший способ сделать это.