Объяснение плагина check_megaraid_sas nagios - PullRequest
0 голосов
/ 29 октября 2018

Может ли кто-нибудь объяснить следующий фрагмент кода в https://github.com/simondeziel/custom-nagios-plugins/blob/master/plugins/check_megaraid_sas. (строка № 220-223) Почему этот код там

} elsif ( $slotnumber != 255 ) {
            $pdbad++;
            $status = 'CRITICAL';
        }

1 Ответ

0 голосов
/ 29 октября 2018

Имеет смысл посмотреть полный раздел:

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 назначается, когда в содержимом PDLIST присутствует Slot Number : .... Если посмотреть на логику, если есть строка Firmware state, которая не Hotspare, Online или Unconfigured, а $slotnumber не 255, то что-то пошло не так, и статус считается CRITICAL. Количество плохих PD ($pdbad) увеличивается на единицу.

...