在数据中心虚拟化之后,我将在新的虚拟机上用新服务器替换旧的仅供内部使用的 Nagios 服务器。为了简单起见,并且因为我们知道它可以正常工作,我只是复制了旧系统,包括重新安装 Nagios 3。
主机上的大多数详细检查都是使用 check_by_ssh 完成的,使用 ssh 密钥访问远程系统。这在旧系统上始终运行良好,但在新系统上,所有检查都在 nagios.log 文件和屏幕上给出(例如)“远程命令 check_disk -w5% -c3% -p /data -u GB 返回状态 3”。
设置完键后,我可以手动运行命令并且它们返回预期值,例如:
ssh -i ~ng3/.ssh/id_rsa user@server "/usr/local/nagios/libexec/check_disk -w25% -c10% -p /store-web -u MB"
返回
DISK OK - free space: /store-web 1405862 MB (70%);| /store-web=609875MB;1511802;1814162;0;2015736
但日志和前端说
UNKNOWN - check_by_ssh: Remote command 'check_disk -w5% -c3% -p /store-web -u MB' returned status 3
有人能指出哪里出了问题吗?没有 SSH 横幅中断数据,无密码 ssh 已检查,正确用户可以完全访问,命令可以完整指定或在路径中指定 - 并且从 Nagios 框手动运行它们可以正常工作。无论私钥是明确指定的还是用户只是假设的,结果都是相同的。
如果这是一个自行开发的插件,我可以看到问题是发出了不正确的(或没有)退出代码,但由于结果与官方 Nagios 插件(在本例中为 check_disk)相同,所以我假设不是那样。