У меня настроен и работает обработчик событий в nagios, который запускается каждый раз, когда данная служба находится в КРИТИЧЕСКОМ состоянии.
Проблема в том, что мы решили, что в обычное рабочее время нет необходимости запускать обработчик событий, поскольку мы можем исправить проблему вручную и более эффективным способом.
Вопрос в том, могу ли я настроить этот обработчик событий для запуска только в определенный период времени и при этом получать уведомления о КРИТИЧЕСКОМ состоянии? Скажем в нерабочее время?
Заранее спасибо за вашу помощь.
Взгляните на макрос Nagios ISVALIDTIME.
This is a special on-demand macro that returns a 1 or 0 depending on whether or not a particular time is valid within a specified timeperiod. There are two ways of using this macro:
$ISVALIDTIME:24x7$ will be set to "1" if the current time is valid within the "24x7" timeperiod. If not, it will be set to "0".
$ISVALIDTIME:24x7:timestamp$ will be set to "1" if the time specified by the "timestamp" argument (which must be in time_t format) is valid within the "24x7" timeperiod. If not, it will be set to "0".
Не знаю, присутствует ли это в контексте службы, но вы можете это проверить. Определите временной период «нерабочие часы» и возьмите ISVALIDTIME в качестве параметра сценария обработчика событий. Когда скрипт вызывается в рабочее время, дайте ему ничего не делать и выйдите.
Если это не сработает, вы можете просто проверить время дня в скрипте обработчика событий.
Прежде чем приступить к собственному ответу, нужно обратить внимание на одну хитрость: когда я настраивал нашу систему маршрутизации вызовов для разумной, а не ручной обработки «рабочего времени», я полностью забыл учесть праздничные дни, оставив срочные звонки клиентов. в пустой офис на половину следующего выходного дня в понедельник.
Я уверен, что вы будете более осторожны :-)
Помимо этого предостережения, из документов похоже, что вы хотите определить некоторые объекты timeperiod в вашей конфигурации Nagios, например:
define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 08:00-17:00
tuesday 08:00-17:00
wednesday 08:00-17:00
thursday 08:00-17:00
friday 08:00-17:00
}
А затем вызовите их с помощью check_period в конфигурации вашего сервиса:
define service{
use some-service
name service-name
...
check_period 24x7
...
}
Если вы действительно хотите это сделать, у меня есть идея (это первое, что приходит мне в голову):
event_handler
в файле конфигурации, и в конце вы оставите комментарий. (вы можете сделать это с sed
)Попробуйте это и дайте мне знать, работает ли это.