Vor mir steht ein Dell Server mit Linux darauf welcher ins Monitoring aufgenommen werden soll. Die üblichen Verdächtigen wie CPU, Arbeitsspeicher, Netzwerk-, Platten- und Systemlast habe ich. Die laufenden Dienste sowieso. Mir fehlt nur noch der Status vom RAID. Also bin ich auf die Suche gegangen. Mit vier Schritten zum Erfolg:

1. Verbaute Hardware ermitteln

Ein lspci verrät schon mal die erste Richtung was hier verbaut sein soll:

00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
00:01.1 PCI bridge: Intel Corporation Skylake PCIe Controller (x8) (rev 07)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:16.1 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #2 (rev 31)
00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] (rev 31)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 (rev f1)
00:1d.2 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #11 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
02:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS-3 3108 [Invader] (rev 02)
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
04:00.0 PCI bridge: Renesas Technology Corp. SH7758 PCIe Switch [PS]
05:00.0 PCI bridge: Renesas Technology Corp. SH7758 PCIe Switch [PS]
06:00.0 PCI bridge: Renesas Technology Corp. SH7758 PCIe-PCI Bridge [PPB]
07:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. G200eR2 (rev 01)

Aha, ein LSI MegaRAID. Also mal wieder die Suchmaschine des Vertrauens bemüht und nachgeschaut ob es irgendwas gibt zum Thema „Nagios MegaRAID“. Da war nichts dabei was wirklich gefallen hätte. Meist tausende Abhängigkeiten oder dieser Controller fehlte schlichtweg in der Liste der unterstützen Modelle. Jedoch bin auf der Suche nach einem passenden Check der LSI MegaRAID Storcli begegnet: https://www.broadcom.com/products/storage/raid-controllers/megaraid-sas-9271-8i#downloads. Das klang doch mal spannend. Fix installiert und aufgerufen mittels /opt/MegaRAID/MegaCli/MegaCli64 -CfgDsply -aALL -nolog (gekürzte Ausgabe):

# /opt/MegaRAID/MegaCli/MegaCli64 -CfgDsply -aALL -nolog
                                     
==============================================================================
Adapter: 0
Product Name: PERC H730 Adapter
Memory: 1024MB
BBU: Present
Serial No: 1234567
==============================================================================
Number of DISK GROUPS: 1

DISK GROUP: 0
Number of Spans: 1
SPAN: 0
Span Reference: 0x00
Number of PDs: 2
Number of VDs: 1
Number of dedicated Hotspares: 0
Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
Size                : 931.0 GB
Sector Size         : 512
Is VD emulated      : No
Mirror Data         : 931.0 GB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 2
**snip**

Ok, bei Dell heißt der wohl PERC H730 Adapter. Soll auch recht sein 😉 Aber mit der Ausgabe lässt sich doch mal was anfragen. Der Status vom RAID wird etwas weiter unten als „Optimal“ angegeben. Ich hab nur einen RAID-Verbund, also fix diese Ausgabe durch grep gejagt und mit einer kurzen, passenden Statusmeldung versehen.

2. NRPE command erstellen

Da dieser Server via NRPE geprüft wird also fix die nrpe.cfg um folgende Zeile erweitert:

command[check_megaraid]=[ $(echo $(sudo /opt/MegaRAID/MegaCli/MegaCli64 -CfgDsply -aALL -nolog | grep "^State" | cut -d: -f2)) == "Optimal" ] && (echo "RAID Status Optimal"; exit 0) || (echo "RAID Problem"; exit 2)

3. Via sudo die passenden Rechte geben

NRPE läuft bei mir unter der User-Kennung nagios. MegaCLI lässt sich aber nur via root wirklich sinnig aufrufen Also per sudo aufrufen und dazu noch via visudo folgende Zeile eingefügt:

nagios ALL=(ALL) NOPASSWD: /opt/MegaRAID/MegaCli/MegaCli64 -CfgDsply -aALL -nolog

4. Testen, einbauen und fertig

Ein erster Check via Konsole vom Monitoring-Server aus:

# /usr/lib/nagios/plugins/check_nrpe -H 10.16.23.61 -c check_megaraid
RAID Status Optimal

Sieht gut aus! Also noch fix ins eigentliche Monitoring eingebaut – hier ist es egal ob Nagios, Icinga, Shinken oder was auch immer verwendet wird: Solange es Naigos-Checks via NRPE prüfen kann sollte sich die Prüfung des LSI MegaRAIDs leicht einfügen lassen. So sieht es dann final bei mir in Icinga2 aus:

Nagios Check LSI MegaRAID

Nagios Check LSI MegaRAID

Einfach, schlicht, funktionell. Für meine Zwecke völlig ausreichend. Wie dieses Beispiel zeigt geht es oftmals auch ohne extra CheckCommand welches noch vorher in bash, Python oder was auch immer erstellt hätte werden müssen. Das spart Zeit.

Und morgen ist noch der IPMI dran um den allgemeinen Systemstatus zu ermitteln.