Nest check_by_ssh no Nagios?

3

Estou tentando monitorar um cluster remoto de servidores com um servidor que tenha um IP público. Estou tentando aninhar check_by_ssh para verificar coisas como load, etc. Mas não importa o tipo de citação e escape que eu faço, não consigo fazer com que funcione.

Aqui está minha última tentativa:

command_line $USER1$/check_by_ssh -H [gatewayhost] -C '$USER1$/check_by_ssh -H $HOSTADDRESS$ -C "$USER1$/check_load -w $ARG1$ -c $ARG2$"'

Mas Nagios reclama sobre "não foi possível abrir o pipe". Outras combinações de aspas e barras invertidas resultam no mesmo erro ou queixam-se dos parâmetros check_by_ssh na invocação externa ou interna. Como faço para que isso funcione?

Eu poderia usar NRPE , suponho, mas prefiro muito mais check_by_ssh .

    
por KernelM 19.11.2009 / 01:12

5 respostas

3

O NRPE é uma opção que deve funcionar. Mas você também pode usar o NSCA para configurar o monitoramento distribuído onde você executa o Nagios, com o daemon NSCA e menos o interface web, na máquina que possui um IP público no site remoto. O bônus adicional com a NSCA é que a comunicação é criptografada pelo menos.

Outra opção é configurar um túnel VPN entre os sites, no ponto em que você pode monitorar diretamente os computadores no cluster.

    
por 19.11.2009 / 02:20
3

Aha, finalmente percebi! Obrigado a todos por suas sugestões. No final, decidi, em vez de tentar usar aspas para o comando check_by_ssh interno, para escapar dos espaços. Os blackslashes duplos funcionaram, então a linha nagios.cfg de trabalho final é:

command_line $USER1$/check_by_ssh -H [gatewayhost] -C "$USER1$/check_by_ssh -H $HOSTADDRESS$ -C $USER1$/check_load\ -w\ $ARG1$\ -c\ $ARG2$"

Para facilitar a tentativa de descobrir tudo, acabei escrevendo uma expansão dos parâmetros em um script Bash e ajustei-o até que finalmente funcionou.

    
por 19.11.2009 / 22:02
2

Você pode configurar um script de verificação simples em seu servidor público que recebe um endereço IP e um comando de verificação secundário. Então os nagios poderiam chamar, por exemplo: check.sh 192.168.1.12 check_load.

Check.sh, em seguida, envia o ssh para o endereço IP que você passou, executa o comando que você passou e retorna o resultado para nagios

    
por 19.11.2009 / 02:53
2

Verifique a configuração correta da chave para o usuário do Nagios:
Eu uso check_by_ssh para todos os tipos de verificações e funciona bem. Primeiro, verifique se você tem as chaves ssh configuradas corretamente. Mude para o usuário nagios com a sintaxe exata a seguir (você precisa das variáveis env que eu acho):

su - nagios

Em seguida, ssh para a outra caixa para garantir que não haja problemas com a autenticação baseada em chaves.

Quoting Issues:
As citações / expansões podem ser um pouco difíceis de descobrir às vezes. A chave para superar isso é ativar a depuração completa para que você possa ver para onde as coisas se expandem. Para fazer isso, defina as seguintes três coisas em seu nagios.cfg e, em seguida, tail -f seu arquivo de depuração:

debug_level=-1
# DEBUG VERBOSITY
# This option determines how verbose the debug log out will be.
# Values: 0 = Brief output
#         1 = More detailed
#         2 = Very detailed
debug_verbosity=2
# DEBUG FILE
# This option determines where Nagios should write debugging information.   
debug_file=/usr/local/nagios/var/nagios.debug

Pode ser necessário filtrar através do grep porque você acaba com uma boa quantidade de resultados.

Referência para verificação por SSH:
Também para sua referência, e exemplo de comando check_by_ssh:

command_line $USER1$/check_by_ssh -t 300 -H $HOSTADDRESS$ -C "$USER1$/checkBandwidth.pl -w $_HOSTPARAM_BAND_W$  -c $_HOSTPARAM_BAND_C$ -s 8 -d"

Editar, talvez use IPTables para ignorar o aninhamento:
Oh, eu senti falta da parte inteira do ninho ... suspiro. De qualquer forma, verificar as chaves de ambas as partes, bem como a posição do log de depuração. No entanto, uma vez que com o aninhado check_by_ssh está executando um comando, você pode não obter as variáveis de ambiente necessárias. Você pode considerar o uso do iptables no host do meio para encaminhar uma porta para ignorar todo o problema de aninhamento.

Talvez seja necessário especificar o arquivo-chave na verificação aninhada por ajuda. Eu acho que a seguinte opção para check_by_ssh pode ajudar:

 identity of an authorized key [optional]
 -O, --output=FILE 
    
por 19.11.2009 / 20:06
1

Citação

check_by_ssh -H $HOSTADDRESS$ -C '$USER1$/check_load -w $ARG1$ -c $ARG2$'"

    
por 19.01.2012 / 06:35

Tags