У меня проблема с 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