答案1
一个好的调试方法为什么正在执行的命令没有返回任何有效输出是使用strace
。例如,我刚刚通过 NRPE 运行 check_linux_raid 命令时遇到问题。
运行strace -f -p <nrpe pid>
,然后从运行 nagios 的系统(例如/usr/lib64/nagios/plugins/check_nrpe -H remotename -c commandname -a arg1 arg2 ...
)手动执行该命令。
扫描 strace 的输出以查找错误,例如权限被拒绝或可能发生的其他类似错误。例如,在我的例子中,selinux 在从远程计算机运行时拒绝对文件的权限,即使该用户可以本地访问该文件。
答案2
来自 Nagios NRPE 文档:
check_nrpe插件返回“NRPE:无法读取输出”
此错误表示 NRPE 守护进程运行的命令未返回任何字符输出。这可能表明存在以下问题:
– 命令定义中的命令行定义不正确。请验证 NRPE 配置文件中的命令定义是否正确。
– 命令行中指定的插件出现故障。手动运行命令行以确保插件返回某种文本输出。