Назад | Перейти на главную страницу

Отсутствует функция в плагине check_tcp Nagios

У меня проблема с check_tcp плагин от Nagios и не смог найти плагин, который работает так, как мне нужно.

Я отправляю строку в порт через check_tcp и верните число, в данном случае 2580. Для этого числа мне нужно определить значения предупреждения и критические значения.

Пример:

/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

Мне нужно что-то вроде:

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

Есть ли способ сделать это или какой-либо плагин, который я еще не нашел?

Создайте свою собственную оболочку, т.е. в Perl, чтобы выполнить check_tcp внутренне, затем проанализировать ответ и вернуть код выхода в соответствии с ответом.

С такой простой проверкой вы даже можете реализовать все это на Perl, не оборачивая другую команду. Пример кода здесь: http://xmodulo.com/how-to-write-simple-tcp-server-and-client-in-perl.html

Наконец, я написал небольшой сценарий bash, который в основном работает нормально ... Просто внутри все еще есть ошибки, поэтому, если есть какие-то идеи по улучшению:

#!/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