戴尔H700 Nagios警告问题

我已经使用了nagios插件check_dell_omreport.pl。 一切都很好,直到最近。 现在有个问题,我想咨询一下。 也许有人可以帮忙。 问题是戴尔增加了供应商lockingRAID控制器,而不是由他们authentication的驱动器。 特别是H700 H800。 我仔细检查了我的服务器上的设置,一切正常。 但插件会检查OMSA alertlog中的警报。 它看到像这样的警告消息:

Severity : Non-Critical ID : 2335 Date and Time : Tue Feb 22 21:17:22 2011 Category : Storage Service Description : Controller event log: PD 05(e0x20/s5) is not a certified drive: Controller 0 (PERC H700 Integrated) 

因此,尽pipe一切正常,插件显示OK和Warning:

 WARNING: Controller0=Ok/Ready [ Battery0=Ok/Ready Vdisk0=Ok/Ready 0 [ 0:0:0=Non-Critical/Online 0:0:1=Non-Critical/Online ] Vdisk1=Ok/Ready 1 [ 0:0:2=Non-Critical/Online 0:0:3=Non-Critical/Online 0:0:4=Non-Critical/Online 0:0:5=Non-Critical/Online ] ] 

我试图解决这个问题好几天。 我会降级控制器固件。 没有帮助。 光盘是不可能取代的。

有人有一个想法如何解决这些警告? 我猜想,除了编辑Perl脚本,别无他法。 它没有修改,这里有一个链接:

http://exchange.nagios.org/directory/Plugins/Hardware/Server-Hardware/Dell/check_dell_omreport/details

也许有一个补丁,已经写了某人?

看起来代码只是假的。

perl脚本的第194行说:

  } elsif ( $state =~ /non-critical|degrad|charging|learning/i ) { $warn++; 

所以,如果它在文本中检测到“非关键”,那么它就会被警告。

更改

  } elsif ( $state =~ /non-critical|degrad|charging|learning/i ) { 

  } elsif ( $state =~ /degrad|charging|learning/i ) { 

我已经试过这个插件,并决定我宁愿直接使用SNMP与check_snmp插件。

例如,我有一些服务,如:

 define service { service_description Dell Controller State ... check_command check_snmp!-o 1.3.6.1.4.1.674.10893.1.20.130.1.1.5.1 -s 1 } define service { service_description Dell Model and SVC Tag ... check_command check_snmp!-m MIB-Dell-10892 -o chassisServiceTagName.1,chassisModelName.1 

这个参考命令是:

 define command { command_name check_snmp command_line /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C '$USER3$' $ARG1$ } 

巴勃罗的改变剧本的答案似乎是正确的做法。 但是我认为,只要获得MIB,走它,并确切知道你正在得到什么是值得的。

谢谢,但不幸的是,它并不欺骗。 但是我做了另一个改变:

 } elsif ($state =~ /(degrad|regen|rebuild)/i ) { $warn++; } elsif ($state =~ /(non-critical)/i ) { $ok++; 

我在WARN中删除了'non-critical',并且在循环中增加了一个部分,在那里我写了'non-critical',必须有$ ok ++。

它的窍门。 但是nagios警报不会隐藏。 :(但它表明,一切OK:

 OK: Controller0=Ok/Ready [ Battery0=Ok/Ready Vdisk0=Ok/Ready 0 [ 0:0:0=Non-Critical/Online 0:0:1=Non-Critical/Online ] Vdisk1=Ok/Ready 1 [ 0:0:2=Non-Critical/Online 0:0:3=Non-Critical/Online 0:0:4=Non-Critical/Online 0:0:5=Non-Critical/Online ] ] 

我使用Devel :: Trace运行插件,并看到:

 perl -T -d:Trace /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl ...... some stdout ...... >> /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl:205: for ( $vdisk_ndx=0; $vdisk_ndx < @{$vdisk} ; $vdisk_ndx++ ) { >> /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl:256: $message .= " ] "; >> /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl:163: for ( $ctrlr_ndx=0; $ctrlr_ndx < @{$controller} ; $ctrlr_ndx++ ) { >> /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl:259: if ( $crit != 0 ) { >> /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl:266: print "OK:$message\n"; OK: Controller0=Ok/Ready [ Battery0=Ok/Ready Vdisk0=Ok/Ready 0 [ 0:0:0=Non-Critical/Online 0:0:1=Non-Critical/Online ] Vdisk1=Ok/Ready 1 [ 0:0:2=Non-Critical/Online 0:0:3=Non-Critical/Online 0:0:4=Non-Critical/Online 0:0:5=Non-Critical/Online ] ] >> /usr/lib64/nagios/plugins/mon/check_dell_omreport.pl:267: exit(0); 

退出(0)是可以的。 但警觉在这里。 :(我做了一个重新检查它的力量。

这个补丁帮助:

     @@ -239,15 +239,15 @@
                                 $ progress =“”;
                         }
                         $ message。=“$ an = $ state $ progress”;
 -  if($ state =〜/ ^ ok \ /(ready | online)/ i){
 + if($ state =〜/ ^ ok \ /(ready | online)| non-critical / i){
                                 $ OK ++;
 - } elsif($ state =〜/(degrading | regen | rebuild | non-critical)/ i){
 +} elsif($ state =〜/(degrad | regen | rebuild)/ i){
                                 $警告++;
                         } else {
                                 $暴击++;
                                 $ message。=“**”;
                         }
                         #print STDERR“adisk = $ an Status = $ adisk  - > [$ adisk_ndx] [$ adisk_flds  - > {Status}] State = $ adisk  - > [$ adisk_ndx] [$ adisk_flds  - > {State}] \ n”;
                 }
                 $ message。=“]”;
         }