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

Разрешить хосту под наблюдением Nagios

Мы используем nagios, чтобы следить за состоянием наших серверов. Теперь у нас есть задача добавить сервер, который будет работать только определенное время. И в течение этого времени мы должны убедиться, что все службы работают. К сожалению мы не знаем когда будет хозяином вниз. Итак, нам нужен какой-то автоматический способ добиться этого.

  1. Есть ли способ (директива конфигурации) не сообщить, если хост выходит из строя. Я имею в виду, что даже в клиентах nagios вроде нагстамон. Мне не нравится идея с черным значком на панели задач весь день.
  2. Есть ли способ не сообщить о каких-либо службах, запущенных на хосте, когда хост не работает?
  3. При достижении очков 1. и 2. есть ли способ контролировать все службы хоста, когда и только когда хозяин встал?

Позвольте мне поставить точки в неправильном порядке.

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, потому что он будет сильно отличаться.

Несколько способов, которые я могу придумать в своей голове:

  • Отключите проверку хоста для сервера. Однако это оставит хост в постоянном состоянии «UP», и службы начнут подавать сигналы.
  • Постоянно выставляемые плавающие простои. Плавающее время простоя начнется, когда в следующий раз хост увидит «ВНИЗ», и будет работать в течение указанного вами времени. Возможно, вы могли бы сделать это с помощью задания cron, выдающего «SCHEDULE_HOST_DOWNTIME» в течение 2 плавающих часов каждые два часа. ( Видеть NAGIOS Developer - внешние команды ).
  • Запланируйте время простоя для хоста и всех служб (см. Ссылку выше).

  • Что вы также можете сделать, так это использовать зависимости служб. Если вы проверяете хост через 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 есть, а что нет.