Hier sind ein paar "quick & dirty" zusammengezimmerte Userparameter für Zabbix 🙂 , welche zum Einen prüfen, wieviele Pfade pro Device zur Verfügnung stehen, sowie einmal schauen, ob sich Pfade in einem Fehlerstatus befinden.

Anzahl der Pfade

UserParameter=Count.Multipath.Devices, echo $(( $(echo 'show paths' | sudo /sbin/multipathd -k | grep ready | wc -l) / $(echo 'show maps' | sudo /sbin/multipathd -k | grep dm | wc -l) ))

Hier wird der multipathd -k aufgerufen und die Pfade und Maps abgefragt. Ist die Summe aus Pfade / Maps = 4 so wird davon ausgegangen, dass alle 4 Pfade für das jeweilige Device da ist.

Fehlerstatus Überprüfung

UserParameter=Check.Failed.Path, echo 'show paths' | sudo /sbin/multipathd -k | awk '/failed/||/faulty/||/shaky/||/offline/ {print $2,$5,$6,$7}'|wc -l

Hier wird die Ausgabe von echo 'show path' | multipathd -k durch einen awk geschleift und geprüft ob einer dieser Fehlerstatus auftaucht. - shaky / faulty Ist ein Pfad verbunden und bereit für I/O ist der Status "online" ansonsten wird er auf faulty oder shaky gesetzt. - failed Ist ein DM down wird es als "failed" markiert. Ist das selbe wie bei "faulty". - offline Ist ein SCSI Device deaktivert, wird der Online_Status auf offline gesetzt.

Der Rückgabewert ist 0, sofern keine Fehler erkannt werden. Ist also der Rückgabewert höher als 0, so muss interveniert werden.

Trigger

Im Zabbix sind Trigger eingerichtet, welche dann entsprechend des Verwendungszweckes auf die Werte reagieren.

Berechtigungen

Um multipathd in den Zabbixuserparametern zu nutzen, ist es erforderlich die Berechtigungen anzupassen. Dies wird im Artikel SUDO Einstellungen für Zabbix.