我有 2 个 centos 服务器
服务器 1-centos 6.8
服务器2-centos 6.7
最初我在服务器 1 上遇到了这个问题,但我能够使用此处解释的修复方法修复我遇到的问题
当我尝试在服务器 2 上进行相同的修复时,出现了如上述链接所述的错误。
root@server2 [/usr/local/nagios/libexec]# ./check_nrpe -H 127.0.0.1 -c check_exim
NRPE: Unable to read output
但如果我在本地运行命令,它就会起作用
root@server2 [/usr/local/nagios/libexec]#
/usr/local/nagios/libexec/check_exim_queue -c 20 -w 40 Mailqueue OK -
0 messages on queue
为了测试,我以用户身份运行了它,并且它可以工作
nagios@cloud-03 [/usr/local/nagios/libexec]# sudo /usr/local/nagios/libexec/check_exim_queue -c 20 -w 40
Mailqueue OK - 0 messages on queue
任何想法都会有帮助
答案1
在 nrpe 代理中启用调试
从:https://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf
如何调试其他问题...调试问题时,编辑 NRPE 配置文件并将 debug=0 条目更改为 debug=1 可能会很有用。完成此操作后,如果 NRPE 守护进程作为独立守护进程运行,请重新启动它。再次尝试使用 check_nrpe 插件后,您应该能够在远程主机的日志文件中看到一些调试信息。仔细检查您的日志 - 它们应该能够帮助提供有关问题所在位置的线索...
答案2
我找到了问题所在。问题出在 check_mailq 插件上。经过一番挖掘和查看后,我终于修复了它。
修复方法是在脚本中添加 sudo 命令。
前
elsif ( $mailq eq "exim" ) {
## open mailq
if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) )
后
elsif ( $mailq eq "exim" ) {
## open mailq
if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
if (! open (MAILQ, "/usr/bin/sudo $utils::PATH_TO_MAILQ | " ) )
所以在做出这个改变之后
root@server2 [/usr/local/nagios/libexec]# ./check_nrpe -H 127.0.0.1 -c check_exim
OK: mailq (0) is below threshold (20/40)|unsent=0;20;40;0
谢谢您的帮助