今天要監控一個服務的進程___xl2tpd;該服務有幾個IP就會有幾個進程;
本來是想利用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 <service_name> -c <service_counts> -h <help>
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了,哈哈,
那就到此為止吧
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。