今天要监控一个服务的进程___xl2tpd;该服务有几个IP就会有几个进程;

目前累计服务客户成百上千家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站建设、网站制作、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。成都创新互联公司始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。
本来是想利用nagios的check_nrpe插件取值,然后判断报警,脚本写好了,本地测试正常,可是部署上去发现每次都取得反值,比如,现在有2个进程(2个IP),结果监控端取到值就是crit;郁闷啊;不知道这个nagios的check_nrpe是什么机制,第一次自定义;
最后没办法使用了check_pros
command[check_aa]=/usr/local/nagios/libexec/check_procs -c 2:2 -a '/usr/sbin/xl2tpd'
这样是正常的,可是我的脚本感觉也没错,虽然写的粗糙了点;
vim check_srv.pl
#!/usr/bin/perl
use Getopt::Std;
use strict;
use vars qw($opt_m $opt_c $opt_h);
getopts('m:c:h');
my ($srv_name,$srv_count,$back,$output,$help);
my $sr_count=`netstat -naputl |grep -c "$opt_m"`;
my %re;
   $re{ok}=0;
   $re{crit}=2;
& main();
sub main {
    get_args();
    check_result();
    warning();
}
sub get_args{
    $srv_name = $opt_m if $opt_m;
    $srv_count = $opt_c if $opt_c;
    &Usage() if (!defined($srv_name) || !defined($srv_count)); 
    }
sub check_result {
    if ($sr_count == $srv_count) {
        $back=$re{ok};
        $output="$srv_name service is ok";
    }else{
        $back=$re{crit};
        $output="$srv_name service is crit";
    }
}
sub warning{
    print "$output\n";
    exit $back;
    }    
sub Usage {
    print << "END";
    ./check_service.pl -m 
END
    exit 2;
}
##################################END##########################################
本地执行./check_srv.pl -m xl2tpd -c 2
xl2tpd_service is ok!
可是在监控端执行./check_nrpe -H hostip -c check_aa
就是不行,得到空值;
今天接着弄:
将日志打到一个文件中瞧瞧吧;
command[check_aa]=/usr/local/nagios/libexec/check_srv.pl -m xl2tpd -c 2 >> /tmp/output 2>&1
打开看看:
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
xl2tpd_service is crit;
发现是权限问题:
在被监控端;
vim /etc/sudoers
nagios ALL=NOPASSWD:ALL (新增)
然后执行 ./check_nrpe -H hostip -c check_aa
发现OK了,哈哈,
那就到此为止吧
分享名称:perl_Script_nagios_自定义插件
网站链接:http://www.scyingshan.cn/article/jgeogo.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 