nagios的nrpe插件可以实现监控“本地”服务器的状态,但是如果注意不当还是会出现问题。比如自己编写一个自定义脚本,在远程服务器本地执行监控脚本显示服务状态正常,但是在nagios服务器调用check_nrpe插件执行时却出现问题。即出现利用nrpe监控远程服务状态本地和远程执行结果不一致的情况。
下面是一个简单的监控脚本例子。
#!/bin/bash#define statusstate_ok=0state_warning=1state_critical=2sms_home=/home/appadmin/smscd $sms_homea=`ps -ef |grep -v grep |grep -c smsserver`if [ $a -eq 0 ];then? echo \critical - sms service is not running!\? exit $state_criticalfis1=`tail -n 10 $sms_home/sms.log |grep -c error`#modem statusm_cnt=0err=0for modem in `grep ^[a-z] smsserver.conf |grep \gateway.*\ |cut -d, -f1|awk -f \'=\' \'{print $nf}\'`do? m=`grep \gtw: $modem: gateway status\ sms.log.test |sed -n \'$p\'|awk \'{print $nf}\'`? if [ \$m\ != \started\ ];then? let err=$err 1? fi? let m_cnt=$m_cnt 1donecase $err in$m_cnt)? echo \critical - all gateway\'s status is error!\ ? exit $state_critical? ;;1 | 2 | 3 | 4)? echo \warning - there are $err modems running error!\? ;;*)? if [ $s1 -ne 0 ];then? echo \critical - sms service is running error!\? exit $state_critical? else? echo \ok - sms service is ok!\? exit $state_ok? fi? ;;esac我在远程服务器运行这个脚本的时候提示“warning – there are 2 modems running error!”,但是在nagios所在服务器运行check_nrpe的时候却不一样。
root@ubuntu:~# /usr/local/nagios/libexec/check_nrpe -h 192.168.188.105 -c check_smscritical - all gateway\'s status is error!经过排查,发现远程执行的时候$err等这些参数的值一直是0。
这里我在配置的时候就忽略了一个点。因为nagios和nrpe执行的时候使用的用户和组都是nagios,而远程本地测试的时候却是root。在远程本地使用nagios用户去执行这个脚本的时候提示没有权限读取/home/appadmin/sms目录。这个就是利用nrpe监控远程服务本地和远程状态不一致问题的原因。修改权限后监控一切正常。
贝店与电商反假联合会达成一县一品电商扶贫合作可信云服务器今日价格阿里云服务器搭建vue网站SEO中搜索引擎算法逐渐完善电脑中怎样导出狂野飙车游戏音乐和音效云服务器弹性硬盘域名的四个组成部分对象存储优点,技术架构,数据组成及应用场景分析(3)