我有十个不同的Web服务器的多个检查。 其中一个检查是监视build立连接的数量(使用neststat和findstr来过滤ESTABLISHED)。 它在服务器WEB1到WEB10上按预期工作。 我可以绘制(使用pnp4nagios)TCPbuild立的连接计数,因为输出是一个整数。 如果超过一定的门槛,就会进入警戒状态,高于另一个门槛则变得至关重要。
个人支票正在按我想要的方式工作。
但是,我期望做的是将所有这些连接加在一个图中。 这将是某种聚合图或所有其他的聚合图。
有没有办法从其他检查的价值/产出,并将其添加到一个?
Server TCP Connections WEB1 223 WEB2 124 WEB3 412 WEB4 555 WEB5 412 WEB6 60 WEB7 0 WEB8 144 WEB9 234 WEB10 111 TOTAL 2275
我只想绘制总数。
Nagios本身并不以任何方式使用性能数据,它只是把它传递给你在你的配置中指定的任何东西。 所以在Nagios中没有办法做到这一点(你可以将nagios的输出输出到一些tee命令中,然后把它传递给pnp4nagios和一个不同的脚本来完成所有的事情,但是这太糟糕了)。
如果我有你的问题,我会做以下几点:
在你当前插件的最后,做一些类似的事情
echo $nconnections > /some/dir/connections.$NAGIOS_HOSTNAME
其中nconnections
是插件找到的连接数。 这个例子是shell,如果你使用一些不同的语言插件取代。 重要的是:应该很容易将编号写入插件中的特殊文件。
然后,创建一个新的插件,其代码类似于:
#!/bin/bash WARN=1000 CRIT=2000 sumconn=$(cat /some/dir/connections.* | awk '{sum += $1} END {print sum}') if [ $sumconn -ge $CRIT ]; then echo "Connection sum CRITICAL: $summconn connections|conn=$sumconn;$WARN;$CRIT" exit 2 elif [ $sumconn -ge $WARN ]; then echo "Connection sum WARNING: $summconn connections|conn=$sumconn;$WARN;$CRIT" exit 1 else echo "Connection sum OK: $summconn connections|conn=$sumconn;$WARN;$CRIT" exit 0 fi
这样,无论何时探测单个服务器,都将保存新插件的数据。 该插件将只是拿起那里的数据,这使得它非常短。 当然,总结的输出会落后一点,但是可以通过将单个服务的normal_check_interval设置得足够低来使这种影响最小化。
如果您想要看起来很奇怪,请添加代码以从缓存目录中删除超过特定阈值的文件。 或者,您甚至可以从您的nagios配置中删除单个服务,并且如果您对每个服务器的连接计数真的不感兴趣,则可以从每个服务器的求和插件中调用个人服务器插件。
编辑:
为了解决nrpe问题,像这样创建一个check_nrpe_and_save plugin
:
#!/bin/bash output=$($NAGIOS_USER1/check_nrpe "$@") rc=$? nconnections=$(echo "$output" | head -1 | sed 's/.*you have \([0-9]*\) connections.*/$1/') echo $nconnections > /some/dir/connections.$NAGIOS_HOSTNAME echo $output exit $rc
为此脚本创建一个新的define command
条目,并在您的服务定义中使用新的命令。 你将不得不调整你的插件输出的sed模式。 如果您的常规输出中没有连接数,则可以使用.*connections=\([0-9]*\);.*
等表达式。 这个check_nrpe_and_save应该像check_nrpe一样工作,特别是它应该输出相同的字符串并返回相同的退出代码,并写入特殊文件。