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

Nagios проверяет, исправна ли хотя бы одна из двух служб

У меня есть два следующих пассивных сервиса: ServiceA, ServiceB на одной машине.

Я хотел бы иметь ситуацию, когда состояние ОК удовлетворяется следующими условиями:

Я хотел бы иметь тревогу, когда:

Какой вариант конфигурации я должен использовать для этого? Зависимость от обслуживания выглядит неплохо, но с этим мне не повезло.

Это называется мониторингом «кластера» услуг. Вы можете использовать check_cluster сценарий.

В документированном методе вместо прямого вызова используется сценарий-оболочка, подобный этому:

define command{

command_name    check_service_cluster

command_line    /usr/local/nagios/libexec/check_cluster --service -l $ARG1$ -w $ARG2$ -c $ARG3$ -d $ARG4$ 

}

а затем определите свой собственный конкретный сервис:

define service{

...

check_command   check_service_cluster!"DNS Cluster"!1!2!$SERVICESTATEID:host1:dnsservicename,$SERVICESTATEID:host2:dnsservicename,$SERVICESTATEID:host3:dnsservicename

...

}

В этом примере 1/3 служб не в порядке - это предупреждение, 2/3 службы не в порядке - критическое значение.

Nagios Docs

Дополнительные объяснения в базе знаний Groundworks

check_cluster как уже упоминалось, это "олдскульный" способ сделать это. Но в лучшем случае это неуклюже.

check_multi это много лучший вариант для этого; он разработан именно для того, что вы хотите.

Один из способов добиться этого - использовать зависимость от службы с «неудачей» в «ОК состоянии», как показано ниже:

define servicedependency{
 host_name                       hostX
 service_description             ServiceA
 dependent_host_name             hostX
 dependent_service_description   ServiceB
 execution_failure_criteria      o
 notification_failure_criteria   o
 }

«o» в «execution_failure_criteria» означает, что если ServiceA находится в состоянии ОК, он не будет проверять наличие ServiceB. Он также не будет уведомлять, если ServiceB имеет состояние «кроме ОК» (оно все равно не будет проверяться)

Это ПОЧТИ идеальное решение. Есть еще две незначительные проблемы:

  • это работает только для двух служб (однако вы можете использовать «имя_зависимой_группы_узла», которое заставит зависимость службы работать на многих хостах)
  • как только ServiceB помечен как сбой, неизвестно, предупреждение и т. д., он останется в этом состоянии, потому что он не проверен из-за «o» (состояние «ОК» для ServiceA)

Как было сказано ранее, check_multi - это решение (лучшее, если вы вообще не хотите видеть, что только одна из служб не работает)

Другой - использовать Nagios BPI: http://assets.nagios.com/downloads/nagioscore/docs/Using_The_BPI_Addon.pdf

С помощью этого дополнения вы можете создавать сложные "бизнес-показатели", такие как: все в порядке, если только один из моих веб-серверов в порядке И только один из моих серверов баз данных в порядке

Другой вариант, такой как Nagios BPI, - это Check_MK BI (но вам обязательно нужно переключиться на Check_MK, который является отличным продуктом, чтобы его использовать): http://mathias-kettner.de/checkmk_bi.html