Nagios check_udp_ports返回关键:结果到计划检查,手动运行良好

我们在Ubuntu 14.04上使用Nagios核心4.3.2解决scheme来对远程客户端设备进行简单的主机检查监控。 我们使用的一种设备不可用于ping,但作为专有控制系统的一部分,UDP端口5246开放响应“capwap-control”。 我正在尝试使用check_udp_port插件

https://exchange.nagios.org/directory/Plugins/Network-Protocols/*-TCP-and-UDP-(Generic)/check_udp_port/details

然而,当试图在testing设备上实现时,它显示为状态信息为“关键:”没有进一步的信息或除了主机检查的日志中的任何条目运行。

它使用nmap实用程序进行需要sudo的检查,我在/ etc / sudoers的最后一行添加了条目以跳过上面链接中的每个指令的密码。

nagios ALL = NOPASSWD:/usr/local/nagios/libexec/check_udp_port *

下面是它在定义命令{

  command_line sudo $USER1$/check_udp_port -H $HOSTADDRESS$ -p $ARG1$ -s $ARG2$ 

我打开debugging,并观看日志条目,我在nagiosnetworkingpipe理员运行了几次检查,每次最终的输出命令看起来是完全正确的。

 [1497380591.600863] [2048.1] [pid=1259] **** BEGIN MACRO PROCESSING *********** [1497380591.600880] [2048.1] [pid=1259] Processing: 'sudo $USER1$/check_udp_port -H $HOSTADDRESS$ -p $ARG1$ -s $ARG2$' [1497380591.600893] [2048.1] [pid=1259] Done. Final output: 'sudo /usr/local/nagios/libexec/check_udp_port -H 172.15.192.211 -p 5246 -s capwap-control' [1497380591.600901] [2048.1] [pid=1259] **** END MACRO PROCESSING ************* 

首先我检查了pid是在nagios用户下运行的

  1259 nagios 20 0 37404 17036 2800 S 0.3 0.2 12:21.88 nagios 

然后,我以nagios用户身份login,并直接从debugging日志中运行该命令,并且运行正常。

 nagios@Monitoring:/usr/local/nagios/libexec$ sudo /usr/local/nagios/libexec/check_udp_port -H 172.15.192.211 -p 5246 -s capwap-control UDP OK - capwap-control listening on port 5246: 5246/udp open capwap-control 

我已经testing没有在sudoers中的行,并且nagios中的系统信息更改为关于需要sudo的错误。 即使从命令行它完美运行和日志显示它正在正确运行命令它仍然失败,只是显示“CRITICAL:”的信息。

这可能是sudo的requiretty设置。 尝试添加Defaults:nagios !requiretty sudoers(或在/etc/sudoers.d某处)。

更安全的select是修改插件通过sudo调用nmap ,而不是通过sudo运行整个插件。

或者,更好的方法是使用库存check_udp插件,不需要root / sudo。

另外,当在命令行上手动testing时,通过env -i来运行你的插件来模拟没有定义的$ENV将会有什么帮助。