【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】nagios磁盤(pán)利用率監(jiān)控_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】nagios磁盤(pán)利用率監(jiān)控_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】nagios磁盤(pán)利用率監(jiān)控_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】nagios磁盤(pán)利用率監(jiān)控

#!/usr/bin/envperl####################################Version1.1#Auth

Badboy#FileNameCheck_disk_utilization.pl#LastModify20120722###################################usestrict;useNet::SNMP;useNagios::Plugin;(my$snmpVersion=Net::SNMP->VERSION)=~s/\D//g;my$TIMEOUT=15;my$np=Nagios::Plugin->new(

shortname=>'CheckDiskUtilization',

usage=>'Usage:%s-H<host>-C<community>-c<threshold>-w<threshold>',

version=>'Version1.1');subisnotnum{#Returntrueifargisnotanumber

my$num=shift;

if($num=~/^-?(\d+\.?\d*)|(^\.\d+)$/){return0;}

return1;}$SIG{'ALRM'}=sub{

$np->nagios_exit(UNKNOWN,"ERROR:Alarmsignal(Nagiostime-out)");};subverbose{

my$t=shift;

print$t,"\n"if$np->opts->verbose>0;}subcheck_options{

$np->add_arg(spec=>'hostname|H=s',

help=>'HostnameorIPaddresstopoll',required=>1,label=>['HOSTNAME']);

$np->add_arg(spec=>'community|C=s',

help=>'SNMPcommunitytousewhenconnecting',required=>1,default=>'public',label

=>['COMMUNITY']);

$np->add_arg(spec=>'critical|c=i',

help=>'Returncriticalstatusiflargerthancriticalthreshold',label=>['thresholdnum']);

$np->add_arg(spec=>'warning|w=i',

help=>'Returnwarningstatusiflargerthanwarningthreshold',label=>['thresholdnum']);

$np->add_arg(spec=>'port|p=i',

help=>'ChangestheSNMPport,defaultsto161',default=>161,label=>['PORT']);

$np->add_arg(spec=>'snmpv1|1',

help=>'UseSNMPv1insteadofthedefaultversion2c');

$np->add_arg(spec=>'perfdata',

help=>'Writeoutperformancedata(numberofdiskusedsize)');

$np->getopts();

if(defined($np->opts->timeout)&&(isnotnum($np->opts->timeout)||($np->opts->timeout<2)||($np->opts->timeout>60))){

$np->nagios_exit(UNKNOWN,'Timeoutmustbebetween1and60');

}

if(!defined($np->opts->critical)||!defined($np->opts->warning)||isnotnum($np->opts->critical)||isnotnum($np->opts->warning)){

$np->nagios_exit(UNKNOWN,'Thevaluesforcriticalandwarningthresholdmustbeintegers');

}}check_options();my$disk_warning=$np->opts->warning;my$disk_critical=$np->opts->critical;if(defined($TIMEOUT)){

verbose("Alarmat$TIMEOUT");

alarm($TIMEOUT);}else{

verbose("Notimeoutdefined:".$np->opts->timeout."+10");

alarm($np->opts->timeout+10);}#snmpdatamy$disk_index_table=".1.3.6.1.2.1.25.2.3.1.1";my$disk_index_result=get_snmp_data($disk_index_table);my$disk_desrc_table=".1.3.6.1.2.1.25.2.3.1.3";my$disk_desrc_result=get_snmp_data($disk_desrc_table);my$disk_units_table=".1.3.6.1.2.1.25.2.3.1.4";my$disk_units_result=get_snmp_data($disk_units_table);my$disk_size_table=".1.3.6.1.2.1.25.2.3.1.5";my$disk_size_result=get_snmp_data($disk_size_table);my$disk_used_table=".1.3.6.1.2.1.25.2.3.1.6";my$disk_used_result=get_snmp_data($disk_used_table);my$status=undef;my$critical_count=0;foreachmy$oid(keys(%$disk_index_result)){

my$disk_desrc=${$disk_desrc_result}{$disk_desrc_table.".".${$disk_index_result}{$oid}};

my$disk_total_size=${$disk_size_result}{$disk_size_table.".".${$disk_index_result}{$oid}};

my$disk_used_size=${$disk_used_result}{$disk_used_table.".".${$disk_index_result}{$oid}};

if($disk_desrc!~/VirtualMemory|R:/

and$disk_desrc!~/PhysicalMemory|R:/and$disk_total_size!=0){

my$disk_used_utilization=$disk_used_size/$disk_total_size*100;

if($disk_used_utilization>$disk_critical){

printf"%.2sCritical%2.2f%%;",$disk_desrc,$disk_used_utilization;

$status=2;

++$critical_count;

next;

}

elsif($disk_used_utilization>$disk_warning){

printf"%.2sWarning%2.2f%%;",$disk_desrc,$disk_used_utilization;

$status=1;

next;

}

elsif($status!=1and$status!=2

){

printf"%.2sOK;",$disk_desrc;

$status=0;

}

}

}if($critical_count!=0){

$status=2;

verbose("\nPluginExitCode=$status");}verbose("PluginExitCode=$status");exit$status;subget_snmp_data(){my$oid=shift;my($session,$error)=(undef,undef);if(defined($np->opts->snmpv1)){

#SNMPv1login

($session,$error)=Net::SNMP->session(

-hostname

=>$np->opts->hostname,

-community=>$np->opts->community,

-port

=>$np->opts->port,

-timeout

=>$np->opts->timeout

);}else{

#SNMPv2login

($session,$error)=Net::SNMP->session(

-hostname

=>$np->opts->hostname,

-version

=>2,

-community=>$np->opts->community,

-port

=>$np->opts->port,

-timeout

=>$np->opts->timeout

);}if(!defined($session)){

$np->nagios_exit(UNKNOWN,'SNMPError:'.$error);}#getsnmpdata

my$result=undef;

$result=($snmpVersion<4)?$session->get_table($oid):$sess

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論