Dell H700 Nagios 警告问题

Dell H700 Nagios 警告问题

我一直在使用 nagios 插件 check_dell_omreport.pl。直到最近一切都运行良好。现在出现了一个问题,我想咨询一下。也许有人可以帮忙。问题是戴尔为 RAID 控制器添加了供应商锁定,而不是他们认证的驱动器。特别是 H700 H800。我仔细检查了我的服务器上的设置,一切正常。但插件会检查来自 OMSA 警报日志的警报。它看到如下警告消息:

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)

因此,尽管一切正常,插件还是显示 OK 和警告:

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

也许有人已经写好了它的补丁?

答案1

看起来这段代码是伪造的。

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 ) {

答案2

我尝试过该插件并决定直接将 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$
}

Pablo 的答案是更改脚本,这似乎是正确的做法。但我认为,获取 MIB、运行它并确切了解您将获得什么,这是值得的。

答案3

谢谢,但不幸的是,它不起作用。但我做了另一个更改:

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

我删除了 WARN 处的“非关键”,并在循环中添加了另一个部分,其中我写道“非关键”必须有 $ok++。

它确实奏效了。但 nagios 警报不会隐藏。 :( 但它显示一切正常:

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);

exit(0) 没问题。但是出现了警告。:( 我强制重新检查了它。

答案4

此补丁程序帮助:

    @@ -239,15 +239,15 @@
                                $进度 = “”;
                        }
                        $message .= " $an=$state$progress";
- 如果($state =〜/ ^ ok \ /(ready|online)/i){
+ 如果($state =〜/ ^ ok \ /(ready | online)| non-critical / i){
                                $确定++;
- } elsif ($state =~ /(degrad|regen|rebuild|non-critical)/i ) {
+ } elsif ($state =~ /(degrad|regen|rebuild)/i ) {
                                $警告++;
                        } 别的 {
                                $暴击++;
                                $消息.=“**”;
                        }
                        # 打印 STDERR "adisk=$an 状态=$adisk->[$adisk_ndx][$adisk_flds->{状态}] 状态=$adisk->[$adisk_ndx][$adisk_flds->{状态}]\n";
                }
                $消息.=“ ]”;
        }

相关内容