NRPE: O script personalizado retorna incapaz de ler a entrada, mas o script funciona corretamente, o que poderia ser?

2

Eu escrevi um script de verificação do Nagios que recebe um caminho como argumento e verifica:

  • if the path is mounted
  • if it is accessible by touching a file in the path.
  • If the mount point directory is empty
[root@hadoop-nn1 mass1]# su - nagios
[nagios@hadoop-nn1 ~]$ /usr/lib64/nagios/plugins/check_nfsmount.sh /mass2/hpfiles/
Warning: /mass2/hpfiles/ is mounted but directory is empty!
[nagios@hadoop-nn1 ~]$ /usr/lib64/nagios/plugins/check_nfsmount.sh /mass1/hpfiles/
Warning: /mass1/hpfiles/ is MOUNTED properly but not writeable for user nagios
[nagios@hadoop-nn1 ~]$ /usr/lib64/nagios/plugins/check_nfsmount.sh /mass1/hp_offline/
Ok: /mass1/hp_offline/ is MOUNTED properly and writeable for user nagios
[nagios@hadoop-nn1 ~]$

O comando em /etc/nagios/nrpe.cfg é assim:

command[check_nfsmounts]=/usr/lib64/nagios/plugins/check_nfsmounts.sh $ARG1$

Como você vê, ao executar o comando da máquina monitorada usando o usuário Nagios, o resultado é o esperado, mas quando eu executo o comando usando nrpe do servidor Nagios, ele retorna "NRPE: Não é possível ler a entrada" .

Outras coisas que eu tentei:

  • Providing the path within the script itself so no argument needs to be passed through NRPE but got the same result.
  • Providing the path within the nrpe.cfg, also to avoid passing arguments but to no avail.

Eu editei nrpe.cfg e habilitei a depuração, então enquanto eu estava rodando tail -f /var/log/messages |grep nrpe e enviando o comando remoto do servidor Nagios, eu vejo estas duas linhas no log:

Dec 15 04:09:44 hadoop-nn1 nrpe[9354]: Error: Request contained illegal metachars!
Dec 15 04:09:44 hadoop-nn1 nrpe[9354]: Client request was invalid, bailing out...

Mas não tenho como saber quais caracteres ilegais eles eram ...

Don't_blame_nrpe está definido como 1. O script é assim:

#!/bin/bash
# This script checks if the provided mount point is mounted and writeable.
# Script by Itai Ganot
if [ -z "$1" ]; then
        echo "Usage: $(basename $0) PATH_TO_CHECK"
        echo "Available PATH's: /mass1/hp_offline -- /mass1/hpfiles -- /mass2/hpfiles"
        exit 3
fi
DF="/bin/df -t nfs"
GREP="/bin/grep -q"
AWK="/bin/awk"
TOUCH="/bin/touch"
LS="/bin/ls"
WC="/usr/bin/wc"
TESTFILE="test.dat"
USER=$(whoami)
NFS_MOUNT="$1"
        $DF | $GREP "$NFS_MOUNT" | $AWK '{print $5}'
                if [ $? = 0 ]; then
                MOUNTED="yes"
        else
                MOUNTED="no"
        fi
        if [[ "$MOUNTED" = "yes" ]] && [[ $($LS -A "$NFS_MOUNT" | "$WC" -l) -gt "1"  ]]; then
                "$TOUCH" "$NFS_MOUNT""$TESTFILE" 2>/dev/null
                        if [ $? = 0 ]; then
                                TOUCHED="yes"
                        else
                                TOUCHED="no"
                        fi
        elif [[ "$MOUNTED" = "yes" ]] && [[ $($LS -A "$NFS_MOUNT" | "$WC" -l) -eq "0"  ]]; then
                TXT="$NFS_MOUNT is mounted but directory is empty!"
                RETVAL="1"
                STATUS="Warning"
        elif [ "$MOUNTED" = "no" ]; then
                TXT="$NFS_MOUNT not MOUNTED"
                RETVAL="2"
                STATUS="Critical"
        fi

if [[ "$TOUCHED" = "yes" ]]; then
TXT="$NFS_MOUNT is MOUNTED properly and writeable for user $USER"
RETVAL="0"
STATUS="Ok"
elif [[ "$TOUCHED" = "no" ]] || [[ "$MOUNTED" = "no" ]]; then
TXT="$NFS_MOUNT is MOUNTED properly but not writeable for user $USER"
RETVAL="1"
STATUS="Warning"
fi
echo "$STATUS: $TXT"
exit $RETVAL

Qual poderia ser o motivo do erro "NRPE: não é possível ler a entrada"?

Editar # 1:

[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -c check_nfsmounts -a /mass1/hp_offline
NRPE: Unable to read output
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -c check_nfsmounts -a '/mass1/hp_offline'
NRPE: Unable to read output
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -c check_nfsmounts /mass1/hp_offline
NRPE: Unable to read output
[root@mon1 ~]#

Editar # 2: O SSL está desabilitado no servidor Nagios e em todos os clientes ...

[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -n -c check_nfsmounts '/mass1/hp_offline'
CHECK_NRPE: Error receiving data from daemon.
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -n -c check_nfsmounts -a '/mass1/hp_offline'
CHECK_NRPE: Error receiving data from daemon.

Obrigado antecipadamente

    
por Itai Ganot 15.12.2014 / 12:53

1 resposta

3

O comando que você está executando no nrpe é /usr/lib64/nagios/plugins/check_nfsmounts.sh , mas o que você está testando na linha de comando é /usr/lib64/nagios/plugins/check_nfsmount.sh . Você confirmou que essa discrepância é a fonte do problema - e não se preocupe, isso pode acontecer com qualquer um de nós. Um segundo par de olhos é sempre útil para pegar esses grininhos muito irritantes!

    
por 15.12.2014 / 14:41

Tags