O plugin Nagios é executado manualmente, mas não automaticamente

1

Depois de algumas tentativas e erros, consegui que o plug-in check_hwinfo funcionasse apenas parcialmente. E parcialmente quero dizer manualmente.

No diretório '/ usr / lib64 / nagios / plugins' eu tenho o script 'check_nrpe_hwinfo.sh' com as permissões corretas:

[root@localhost plugins]# ls -lah | grep hwinfo
-rwxr-xr-x. 1 root root    419 Dec  8 15:35 check_nrpe_hwinfo.sh

No meu diretório 'conf.d' eu tenho um arquivo 'check-hwinfo.cfg' com as declarações necessárias:

define command{
        command_name    check_hwinfo
        command_line    $USER1$/check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$
}



define service{
        use                     generic-service
        hostgroup_name          1st-floor-windows-nrpe-hosts,2nd-floor-windows-nrpe-hosts
        service_description     HW Info
        notification_options    none
        normal_check_interval   240
        notification_interval   240
        retry_check_interval    2
        max_check_attempts      120
        check_command           check_hwinfo
}

Em meus hosts do Windows, eu tenho o arquivo 'check_hwinfo.wsf' fornecido em 'C: \ NSClient ++ \ scripts'. Ao clicar duas vezes, o script é executado corretamente e exibe as informações em uma janela pop-up. Além disso, modifiquei o arquivo 'nsclient-full.ini' assim:

[/settings/external scripts/scripts]
check_hwinfo=c:\windows\system32\cscript.exe //NoLogo //T:30 scripts\check_hwinfo.wsf
check_hwinfo_csv=c:\windows\system32\cscript.exe //NoLogo //T:30 scripts\check_hwinfo.wsf /sep:csv

Quando no meu servidor Nagios, no diretório '/ usr / lib64 / nagios / plugins /' eu dou este comando:

./check_nrpe -H 192.168.10.13 -c check_hwinfo

Eu recebo a saída correta.

A verificação deve ser executada automaticamente. Mas... No Nagios WebUI eu recebo este erro na linha correspondente a check_hwinfo:

(Return code of 126 is out of bounds - plugin may not be executable) 

Após algumas experiências com o Nagios, acho que isso é apenas um erro genérico.

Então ... Alguma idéia de porque a verificação é executada e retorna corretamente quando executada manualmente, mas não quando executada automaticamente?

UPDATE 1:

O arquivo 'check_nrpe_hwinfo.sh' é exatamente assim:

#!/bin/bash

ARG_HOSTNAME=${NAGIOS_HOSTNAME:-$1}
ARG_HOSTADDRESS=${NAGIOS_HOSTADDRESS:-$2}

PATH=${PATH}:/usr/lib64/nagios/plugins

HWINFO="'check_nrpe -H $ARG_HOSTNAME -c check_hwinfo_csv'"
RESULT=$?
ARG_HOSTNAME_CLEAN='echo $ARG_HOSTNAME | tr -cd '0-9a-zA-Z._-''

if [ "$RESULT" == 0 ]; then
        echo "\"$ARG_HOSTADDRESS\",$HWINFO" > /var/www/html/hwinfo/$ARG_HOSTNAME_CLEAN
fi
echo "$HWINFO"
exit $RESULT

UPDATE 2:

[root@localhost plugins]# ./check_nrpe -H 192.168.10.13 -c check_hwinfo_csv
"Gigabyte Technology Co., Ltd.","P55A-UD3","","1","Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz","2927 MHz","8192 KB","133 MHz","8192M","Non-ECC","4096M/2048M/2048M/0","932 G / 932 G","WDC WD10EALS-002BA0 ATA Device / WDC WD10EZRX-00A8LB0 ATA Device","Microsoft Windows 7 Ultimate "
    
por dsljanus 08.12.2014 / 16:00

2 respostas

4

Você se enganou ao não comparar maçãs com maçãs. O comando que você está executando manualmente é não o comando que você está pedindo que o NAGIOS execute automaticamente. Quando você executa o comando real manualmente

check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$

com substituições apropriadas, o problema vem à luz. Parece que o arquivo foi transferido de uma caixa do Windows e possui terminações de linha no estilo dos - o que faz com que o intérprete shebang fique irritado quando você está pedindo para iniciar um interpretador chamado bash^M . Execute-o em dos2unix , ou tire o terminal ^M s com vi ou outro editor com capacidade binária, e tudo deve estar bem.

    
por 08.12.2014 / 16:39
0

Para verificações de nagios de depuração, uma ferramenta incrível é o link do PyNag

Depende da sua Distro você pode obtê-lo a partir de pacotes ou do github

# cd to folder with nagios.cfg
cd /etc/nagios/

# run pynag to see what's actual command will be executed
# Usage: pynag execute <host_name> [service_description]

pynag execute my_windows_host1 "HW Info"
    
por 08.12.2014 / 16:30

Tags