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

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

我们在 Ubuntu 14.04 上使用 Nagios core 4.3.2 解决方案对远程客户端设备进行简单的主机检查监控。我们使用的一种设备无法 ping 通,但作为其专有控制系统的一部分,UDP 端口 5246 已打开,可响应“capwap-control”。我正在尝试使用 check_udp_port 插件,可从

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

但是,当尝试在测试设备上实施时,它显示为关闭状态信息:“严重:”没有提供进一步的信息,也没有提供除主机检查之外的日志中的任何条目。

它使用 nmap 实用程序进行需要 sudo 的检查,我根据上面链接中的说明将条目添加到 /etc/sudoers 的最后一行以跳过密码。

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

以下是它在 define 命令中的样子{

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

我打开调试并查看日志条目,在 nagios 网络管理员中运行检查几次,每次的最终输出命令看起来都非常正确。

[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 用户身份登录并直接从调试日志运行命令,并且运行没有问题。

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

我测试了 sudoers 中没有这行,nagios 中的系统信息更改为需要 sudo 的错误,正如预期的那样。尽管从命令行运行完美,日志显示它正在正确运行命令,但它仍然失败,只显示“CRITICAL:”作为信息。

答案1

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

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

check_udp或者,更好的是,只使用不需要 root/sudo 的股票插件。

此外,在命令行上手动测试时,运行插件来env -i模拟它在没有$ENV定义的情况下会有所帮助。

相关内容