我们在 Ubuntu 14.04 上使用 Nagios core 4.3.2 解决方案对远程客户端设备进行简单的主机检查监控。我们使用的一种设备无法 ping 通,但作为其专有控制系统的一部分,UDP 端口 5246 已打开,可响应“capwap-control”。我正在尝试使用 check_udp_port 插件,可从
但是,当尝试在测试设备上实施时,它显示为关闭状态信息:“严重:”没有提供进一步的信息,也没有提供除主机检查之外的日志中的任何条目。
它使用 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
定义的情况下会有所帮助。