任何人都可以在https://github.com/simoneziel/custom-nagios-plugins/blob/master/plugins/check_megaraid_sas中解释以下代码。(第 220-223 行)为什么有这段代码
} elsif ( $slotnumber != 255 ) {
$pdbad++;
$status = 'CRITICAL';
}
任何人都可以在https://github.com/simoneziel/custom-nagios-plugins/blob/master/plugins/check_megaraid_sas中解释以下代码。(第 220-223 行)为什么有这段代码
} elsif ( $slotnumber != 255 ) {
$pdbad++;
$status = 'CRITICAL';
}
查看完整部分是有意义的:
PDISKS: while (<PDLIST>) {
if ( m/Slot Number\s*:\s*(\d+)/ ) {
$slotnumber = $1;
$pdcount++;
} elsif ( m/(\w+) Error Count\s*:\s*(\d+)/ ) {
if ( $1 eq 'Media') {
$mediaerrors += $2;
} else {
$othererrors += $2;
}
} elsif ( m/Predictive Failure Count\s*:\s*(\d+)/ ) {
$prederrors += $1;
} elsif ( m/Firmware state\s*:\s*(\w+)/ ) {
$fwstate = $1;
if ( $fwstate eq 'Hotspare' ) {
$hotsparecount++;
} elsif ( $fwstate eq 'Online' ) {
# Do nothing
} elsif ( $fwstate eq 'Unconfigured' ) {
# A drive not in anything, or a non drive device
$pdcount--;
} elsif ( $slotnumber != 255 ) {
$pdbad++;
$status = 'CRITICAL';
}
}
} #PDISKS
该部分循环遍历 PD(主磁盘?)列表,我假设此文件/程序输出包含每个连接设备的人类可读状态。该代码查看每一行并根据该行的内容执行一些操作:
$slotnumber
只要有Slot Number : ...
的内容,就会分配PDLIST
. 从逻辑上看,如果有Firmware state
一行不是Hotspare
, Online
or Unconfigured
, 并且$slotnumber
不是 255,那么就出现了可怕的错误并考虑了状态CRITICAL
。坏 PD ( $pdbad
) 的数量然后增加一。