Мы используем nagios, чтобы следить за состоянием наших серверов. Теперь у нас есть задача добавить сервер, который будет работать только определенное время. И в течение этого времени мы должны убедиться, что все службы работают. К сожалению мы не знаем когда будет хозяином вниз. Итак, нам нужен какой-то автоматический способ добиться этого.
Позвольте мне поставить точки в неправильном порядке.
2) NAGIOS уже должен это сделать; если хост не работает, сервисные предупреждения отправляться не будут.
1) Я думал, что вы можете сделать это с гибким временем простоя: это время простоя заданной продолжительности окна, которое не начинается в известное время; вместо этого окно запускается автоматически при выходе из строя хоста.
Но потом мне пришло в голову: все, что вам действительно нужно, это не отправлять оповещения, когда хост не работает. Если тебе это удастся, то
Когда хост не работает, сервисные предупреждения отправляться не будут. Вам все равно, что хост не работает, потому что, как вы говорите, вы не знаете, когда он приходит и уходит, поэтому отсутствие предупреждения хоста не имеет значения. HOST DOWN по-прежнему будет регистрироваться, что позволит вам ретроспективно увидеть, что произошло, но предупреждения отправляться не будут.
Когда хост включен, сервисные оповещения будут отправляться в любом случае.
Вы ведь этого хотите? Если это так, вам нужно добавить в определение хоста
notification_options n
Я думаю, что это тоже связано с проблемой 3, как обычно. Я не могу говорить за непрофильных клиентов, таких как nagstamon. По моему опыту, это обычно средства очистки экрана, и их решения о том, что уведомлять, не основаны на логике уведомлений NAGIOS. Если ваш клиент соблюдает встроенные правила NAGIOS, все должно быть в порядке; в противном случае вам придется работать с этим конкретным инструментом, чтобы добавить аналогичную логику.
Вы можете определить настраиваемые периоды времени, используя определение периода времени в файле time period.cfg. Вот пример
# Here is a slightly friendlier period during work hours
define timeperiod{
timeperiod_name workhours
alias Standard Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
Затем используйте его для значения check_period в определениях вашего хоста и сервиса.
Вот моя идея использовать для этого пассивные проверки, но сначала мне нужно высказать предположения. Что вы вообще не хотите контролировать время безотказной работы хоста. Просто, когда хост включен, соответствующие службы работают.
На ваших случайных хостах времени безотказной работы вы можете запустить что-то вроде следующего сценария оболочки https://gist.github.com/746998. В этом примере будет отслеживаться SMTP, но это довольно просто. Вам нужно будет запустить этот запуск в качестве пользователя, который может подключиться к вашему хосту nagios по ssh с помощью пары ключей, а защита этого будет оставлена в качестве упражнения для читателя (или опубликовать новый вопрос). Я не тестировал это, но он должен работать. Документация по пассивной проверке ( http://nagios.sourceforge.net/docs/3_0/passivechecks.html ) должно быть полезно.
Это не приведет к автоматизации подготовки хостов на вашем сервере Nagios, но вы можете использовать для этого что-то вроде марионетки.
Для предупреждений вам следует проверить Nagios BPI (Business Process Intelegence). Nagios Enterprises только что выпустила это новое дополнение. зайдите в Nagios, и посмотрите там дорожную карту.
Этот ответ не будет охватывать сторонние надстройки для мониторинга, такие как nagstamon или плагин nagios для firefox, потому что он будет сильно отличаться.
Несколько способов, которые я могу придумать в своей голове:
Запланируйте время простоя для хоста и всех служб (см. Ссылку выше).
Что вы также можете сделать, так это использовать зависимости служб. Если вы проверяете хост через PING, затем добавьте службу PING и service_dependency для всех других служб на этом узле, чтобы они зависели от PING, а затем отключите уведомления ping. Это будет выглядеть примерно так:
define servicedependency {
dependent_host_name flaky_biscuit
dependent_service_description service1, service2, service3, service4, service5
host_name flaky_biscuit
service_description PING
execution_failure_criteria w,u,c
notification_failure_criteria w,u,c
}
По сути, это означает, что, когда PING находится в состоянии предупреждения, неизвестного или критического, PING уведомит, а ни одна из зависимых служб не будет. (И снова отключите уведомления для PING!) Кроме того, когда PING находится в предупреждающем, неизвестном или критическом состоянии, зависимые службы даже не выполнит.
Я не могу говорить от имени NagStaMon, но у плагина Firefox NAGIOS есть предпочтения, которые по сути говорят «игнорировать подтвержденные службы», что означает, что если вы подтверждаете или планируете услугу во время простоя, отключите уведомления или любое другое изменение службы, она будет не отображается как «предупреждение / критическое» в строке состояния, даже если он находится в этом состоянии. Я не знаю, что у NagStaMon есть, а что нет.