check_tcp Nagios 插件中缺少功能

check_tcp Nagios 插件中缺少功能

我在使用 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

相关内容