nagios插件,通过nrpe远程调用和本地执行结果不一致

部署过很多次nagios监控系统。但此次部署时,出现nrpe调用脚本的执行结果和本地执行不一致的情况。具体如下:
这里写图片描述
以gmond的为例:
在被监控主机上执行gmond的监控脚本
显示结果为OK - Gmond is running.
在nagios server上面,通过nrpe调用
./check_nrpe -H 192.168.181.13 -c mycheck_gmond
结果为:Critical - Gmond is down.
看下gmond的脚本

#!/bin/sh

var3=`sudo service gmond status|awk NR==3 `;

var1=`echo $var3 | awk '{print $3}' `;

if ( [ $var1 = "(running)" ]  ) ; then
    echo  "OK - Gmond is running."
    exit 0
else
    echo "Critical - Gmond is down."
    exit 1
fi

显示,在server调用,var1应该不是running
最好的调试方法,就是输出日志到文件。
在脚本中,添加了
echo var3 > /tmp/nagios.log
echo var1 >> /tmp/nagios.log
用nrpe调用,发现,打印了两行空值。
也就是说第一行就出错了。那应该就是sudo权限的问题了。
当采用nrpe调用的时候,在被监控主机上,实际上执行监控脚本的就是在被监控主机上运行nrpe的用户。
在我这里,实际就是nrpe这个用户。查看visudo
nrpe ALL=(ALL) NOPASSWD: ALL
放下nrpe已经有sudo权限了。
切换到nrpe用户执行一下这个语句。由于nrpe是/sbin/nologin,因此是无法登录的。手工修改一下, 发现是可以执行sudo语句。
到此,就不知道原因是什么了。搞了一整天。
晚上在网上搜的时候,发现visudo里面有这样一个选项:
Defaults requiretty
意思就是只有登录到tty,才能执行sudo命令。
事实发现就是这个问题。坑啊。。。
另外,如果实在分析不出来,可以在nrpe的commans定义时,添加:
>>/tmp/output 2>&1
这样,就可以通过日志分析。
日志是非常重要的排错手段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值