Recurso ausente no check_tcp Plug-in do Nagios

4

Eu tenho um problema com o check_tcp plugin do Nagios e não encontrei nenhum plugin que funcione como eu preciso.

Estou enviando uma string para uma porta por meio de check_tcp e recebo um número de volta, neste caso, 2580. Nesse número, preciso definir os valores de aviso e critais.

Exemplo:

/usr/lib/nagios/plugins# ./check_tcp -H XXXXXXXXXX -p 51031 -E -s "status\r\n" -d 1 -t 30 -e "SOMEThING"
TCP WARNING - Unexpected response from host/socket: 2580|time=0,000358s;;;0,000000;30,000000

Eu preciso de algo como:

/usr/lib/nagios/plugins# ./check_tcp -H XXXXXXXXXX -p 51031 -E -s "status\r\n" -d 1 -t 30 -w  2500 -c 3000

Existe alguma maneira de fazer isso ou qualquer plugin que eu não encontrei ainda?

    
por Kjellson 18.12.2015 / 01:49

2 respostas

3

Crie seu próprio wrapper, por exemplo. em Perl, para executar o check_tcp internamente, analise a resposta e retorne o código de saída de acordo com a resposta.

Com uma verificação tão simples, você pode até implementar a coisa toda em Perl sem envolver o outro comando. Exemplo de código está aqui: link

    
por 18.12.2015 / 09:41
0

Finalmente eu escrevi um pequeno script bash que basicamente funciona bem ... Ainda tem alguns bugs dentro, então se houver alguma idéia para melhoria:

#!/bin/bash
#
# Check TCP Response fuer NAGIOS
#
# by Kjell Krenz
#
#
# Version 0.1
#
#


while [ $# -gt 0 ]
do
    case $1 in
        -h)
            HOST=$2
            shift 2
        ;;
        -p)
            PORT=$2
            shift 2
        ;;
        -s)
            STRING=$2
            shift 2
        ;;
        -w)
            WARN=$2
            shift 2
        ;;
        -c)
            CRIT=$2
            shift 2
        ;;
        -m)
            MSG=$2
            shift 2
        ;;
        *)
            echo "Usage:"
            echo "-h: Host (IP)"
            echo "-p: TCP Port"
            echo "-s: STRING"
            echo "-w: WARNING VALUE"
            echo "-c: CRITICAL VALUE"
            echo "-m: Custom Message Label"
            shift 1
        ;;
    esac
done



exec 3<>/dev/tcp/$HOST/$PORT
echo -en "$STRING\n" >&3
RESPONSE="'cat <&3'"



if [ $RESPONSE -lt $WARN ]
then
    echo "OK- $RESPONSE $MSG"
    exit 0
elif [ $RESPONSE -ge $CRIT ]
then
    echo "CRITICAL- $RESPONSE $MSG"
    exit 2
elif [ $RESPONSE -ge $WARN ]
then
    echo "WARNING- $RESPONSE $MSG"
    exit 1
else
echo "UNKNOWN- $RESPONSE"
exit 3
fi

esac
echo $RESPONSE
exit $EXIT
    
por 20.12.2015 / 00:06