我有一个有效的 Nagios 设置,例如,我通过 NRPE 守护程序监控磁盘使用情况,而无需出于安全原因通过 NRPE 解析参数。所以我知道 NRPE 可以工作。
现在我想使用检查挂载点插件,但我得到了
NRPE: Unable to read output
在 Nagios Monitor 主机上我已设置
define command {
command_name check_mountpoints
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c check_mountpoints
}
define service {
use generic-service
name check_mountpoints
host_name example.com
service_description Check_mountpoints for nfs cifs davfs
check_command check_nrpe!check_mountpoints
contact_groups linux-admins
}
在远程主机上我是否设置了
command[check_mountpoints]=/usr/lib/nagios/plugins/check_mountpoints.sh /nas1/home
为了验证是否给出了正确的参数,命令输出如下
[root@nas ~]# /usr/lib/nagios/plugins/check_mountpoints.sh /nas1/home
OK: all mounts were found ( /nas1/home)
[root@nas ~]#
并且 Nagios 监控主机和远程主机都运行着一个有效的 NRPE 守护进程。
问题
我该如何调试这样的事情?
答案1
根据我的经验,此错误是由于缺少权限造成的。您尝试以 root 身份执行 nrpe 客户端脚本。尝试以 nrpe 守护进程正在运行的用户身份执行它。这应该会给您提示原因。如果这没有帮助,请尝试运行
strace usr/lib/nagios/plugins/check_mountpoints.sh /nas1/home
作为nrpe用户。
答案2
我遇到了同样的问题,很多时候是权限问题。设置权限或使用 sudoers 可以解决它。
尝试以 nrpe/nagios 用户登录(su - nrpe)并尝试运行该命令。
其他可能性是 selinux,尝试禁用以进行测试:
echo 0 > /selinux/enforce
答案3
为了修复此问题,又不使 nagios 插件可供全世界读取和/或执行,请将 nrpe 用户添加到 nagios 组。