我在使用 Nagios 插件时遇到了问题check_tcp
,无法找到我需要的任何插件。
我正在通过一个端口发送一个字符串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
有什么方法可以做到这一点或有任何我还没有找到的插件吗?
答案1
创建您自己的包装器,即在 Perl 中,内部执行 check_tcp,然后分析响应并根据响应返回退出代码。
通过如此简单的检查,您甚至可以在 Perl 中实现整个过程,而无需包装其他命令。示例代码如下:http://xmodulo.com/how-to-write-simple-tcp-server-and-client-in-perl.html
答案2
最后,我编写了一个小型 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