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

Как настроить обработчик событий nagios для работы только в нерабочее время?

У меня настроен и работает обработчик событий в 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
    ...
}

Если вы действительно хотите это сделать, у меня есть идея (это первое, что приходит мне в голову):

  1. поместите определение службы в отдельный файл, чтобы упростить задачу
  2. напишите скрипт для проверки текущего времени
  3. в начале рабочего времени вы оставите комментарий event_handler в файле конфигурации, и в конце вы оставите комментарий. (вы можете сделать это с sed)

Попробуйте это и дайте мне знать, работает ли это.