如何在检查 NFS 时调试 Nagios“NRPE:无法读取输出”?

如何在检查 NFS 时调试 Nagios“NRPE:无法读取输出”?

我有一个有效的 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 组。

相关内容