Nagios verifica se pelo menos um entre dois serviços está OK

3

Eu tenho dois serviços passivos a seguir: ServiceA, ServiceB em uma máquina.

Eu gostaria de ter uma sittuation quando o estado OK for satisfeito seguindo as condições:

  • O ServiceA está OK ou o ServiceB está OK
  • O ServiceA está OK e o SericeB está OK

Eu gostaria de ter alarme quando:

  • O ServiceA está inativo e o Serviço B está inativo

Qual opção de configuração devo usar para implementar isso? Servicedependency parece bom, mas eu não tive sorte com isso.

    
por wojciechz 14.11.2013 / 21:04

4 respostas

4

check_cluster é a maneira "antiga" de fazer isso, como já foi mencionado. Mas é na melhor das hipóteses.

check_multi é uma opção muito melhor para isso; é projetado exatamente para o que você quer.

    
por 15.11.2013 / 17:50
5

Isso é conhecido como monitoramento de um "cluster" de serviços. Você pode usar o script check_cluster .

O método documentado usa um script de wrapper como este em vez de chamá-lo diretamente:

define command{

command_name    check_service_cluster

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

}

e, em seguida, definir seu próprio serviço específico:

define service{

...

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

...

}

Neste exemplo 1/3 serviços não OK é um aviso, 2/3 serviços não OK é crítico.

Nagios Docs

Mais explicações no conhecimento da Groundworks base

    
por 14.11.2013 / 21:29
0

Uma das maneiras de conseguir isso é usar a prestação de serviços com "falha" no "estado OK", como segue:

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" em "execution_failure_criteria" significa que se o ServiceA estiver no estado OK, ele não verificará o ServiceB. Ele também não notificará se o ServiceB tiver estado "diferente de OK" (ele não será verificado de qualquer maneira)

Esta é quase uma solução perfeita. Ainda existem dois pequenos problemas:

  • isso funciona apenas para dois serviços (no entanto, você pode usar "dependent_hostgroup_name", o que fará a dependência de serviço funcionar em muitos hosts)
  • assim que ServiceB for marcado como falhado, uknown, warning, whatever, ele permanecerá nesse estado porque não foi verificado devido a "o" (OK state of ServiceA)
por 15.11.2013 / 17:38
0

Como dito anteriormente, check_multi é uma solução (o melhor se você não quiser ver que apenas um dos serviços está inativo)

Outra é usar o Nagios BPI: link

Com esse addon você pode construir indicadores complexos de "negócios", como: tudo está OK se apenas um dos meus servidores web estiver OK E apenas um dos meus servidores de banco de dados estiver OK

Outra opção como o Nagios BPI é o Check_MK BI (mas você certamente precisa mudar para o Check_MK, que é um ótimo produto, para usá-lo): link

    
por 21.11.2013 / 15:20