4 IPMI-Prüfungen

Übersicht

Sie können den Zustand und die Verfügbarkeit von Intelligent Platform Management Interface (IPMI)-Geräten in Zabbix überwachen. Um IPMI-Prüfungen durchzuführen, muss der Zabbix-Server zunächst mit IPMI-Unterstützung konfiguriert werden.

IPMI ist eine standardisierte Schnittstelle für die Remote-Verwaltung ("lights-out" oder "out-of-band") von Computersystemen. Sie ermöglicht die Überwachung des Hardwarestatus direkt über sogenannte "out-of-band"-Management-Karten, unabhängig vom Betriebssystem und davon, ob die Maschine überhaupt eingeschaltet ist.

Die Zabbix-IPMI-Überwachung funktioniert nur für Geräte mit IPMI-Unterstützung (HP iLO, DELL DRAC, IBM RSA, Sun SSP usw.).

Ein IPMI-Manager-Prozess plant die IPMI-Prüfungen durch IPMI-Poller. Ein Host wird dabei immer nur von einem einzigen IPMI-Poller gleichzeitig abgefragt, wodurch die Anzahl offener Verbindungen zu BMC-Controllern reduziert wird. Daher kann die Anzahl der IPMI-Poller bedenkenlos erhöht werden, ohne eine Überlastung der BMC-Controller befürchten zu müssen. Der IPMI-Manager-Prozess wird automatisch gestartet, wenn mindestens ein IPMI-Poller gestartet wird.

Siehe auch bekannte Probleme für IPMI-Prüfungen.

Konfiguration

Host-Konfiguration

Ein Host muss konfiguriert werden, um IPMI-Prüfungen zu verarbeiten. Eine IPMI-Schnittstelle muss hinzugefügt werden, mit den entsprechenden IP- und Portnummern, und die IPMI-Authentifizierungsparameter müssen definiert werden.

Weitere Einzelheiten finden Sie unter Konfiguration von Hosts.

Server-Konfiguration

Standardmäßig ist der Zabbix-Server nicht so konfiguriert, dass IPMI-Abfrager gestartet werden. Daher funktionieren hinzugefügte IPMI-Datenpunkte nicht. Um dies zu ändern, öffnen Sie als root die Zabbix-Server-Konfigurationsdatei (zabbix_server.conf) und suchen Sie nach der folgenden Zeile:

# StartIPMIPollers=0

Entfernen Sie das Kommentarzeichen und setzen Sie die Anzahl der Abfrager beispielsweise auf 3, sodass die Zeile wie folgt aussieht:

StartIPMIPollers=3

Speichern Sie die Datei und starten Sie anschließend zabbix_server neu.

Datenpunkt-Konfiguration

Beim Konfigurieren eines Datenpunkts auf Host-Ebene:

  • Wählen Sie „IPMI agent“ als Typ aus.
  • Geben Sie einen Schlüssel für den Datenpunkt ein, der innerhalb des Hosts eindeutig ist (zum Beispiel ipmi.fan.rpm).
  • Wählen Sie für Host-Schnittstelle die entsprechende IPMI-Schnittstelle (IP und Port) aus. Beachten Sie, dass auf dem Host eine IPMI-Schnittstelle vorhanden sein muss.
  • Geben Sie den IPMI-Sensor an (zum Beispiel „FAN MOD 1A RPM“ auf Dell Poweredge), von dem der Messwert abgerufen werden soll. Standardmäßig sollte die Sensor-ID angegeben werden. Es ist auch möglich, Präfixe vor dem Wert zu verwenden:
    • id: - zur Angabe der Sensor-ID;
    • name: - zur Angabe des vollständigen Sensornamens. Dies kann in Situationen nützlich sein, in denen Sensoren nur durch Angabe des vollständigen Namens unterschieden werden können.
  • Wählen Sie den entsprechenden Informationstyp aus („Numerisch (Gleitkommazahl)“ in diesem Fall; bei diskreten Sensoren „Numerisch (Ganzzahl ohne Vorzeichen)“), die Einheiten (höchstwahrscheinlich rpm) sowie alle anderen erforderlichen Datenpunkt-Attribute aus.
Unterstützte Prüfungen

Der IPMI Agent unterstützt den integrierten Datenpunkt ipmi.get, der Informationen zu IPMI-Sensoren zurückgibt und für die Discovery von IPMI-Sensoren verwendet werden kann.
Rückgabewert: JSON-Objekt

Timeout und Sitzungsbeendigung

Zeitüberschreitungen für IPMI-Nachrichten und die Anzahl der Wiederholungsversuche sind in der OpenIPMI-Bibliothek definiert. Aufgrund des aktuellen Designs von OpenIPMI ist es nicht möglich, diese Werte in Zabbix zu konfigurieren, weder auf Schnittstellen- noch auf Datenpunkt-Ebene.

Das Inaktivitäts-Timeout einer IPMI-Sitzung für LAN beträgt 60 +/-3 Sekunden. Derzeit ist es nicht möglich, mit OpenIPMI das periodische Senden des Befehls „Activate Session“ zu implementieren. Wenn es von Zabbix an einen bestimmten BMC länger als das im BMC konfigurierte Sitzungs-Timeout keine Prüfungen von IPMI-Datenpunkten gibt, dann wird die nächste IPMI-Prüfung nach Ablauf des Timeouts aufgrund individueller Nachrichten-Timeouts, Wiederholungsversuche oder Empfangsfehler mit einer Zeitüberschreitung fehlschlagen. Danach wird eine neue Sitzung geöffnet und ein vollständiger erneuter Scan des BMC wird gestartet. Es kann ein neuer UDP- Port geöffnet werden, um die neue Sitzung zu verwalten. Inaktivität ist definiert als das Ausbleiben sowohl ausgehender Anfragen als auch eingehender Antworten. Wenn Sie unnötige erneute Scans des BMC vermeiden möchten, wird empfohlen, das Abfrageintervall des IPMI- Datenpunkts unterhalb des im BMC konfigurierten Inaktivitäts-Timeouts der IPMI-Sitzung festzulegen.

Hinweise zu diskreten IPMI-Sensoren

Um Sensoren auf einem Host zu finden, starten Sie den Zabbix Server mit aktiviertem DebugLevel=4. Warten Sie einige Minuten und suchen Sie dann im Logfile des Zabbix Server nach Einträgen zur Sensorerkennung:

$ grep 'Added sensor' zabbix_server.log
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'

Zum Dekodieren von IPMI-Sensortypen und -zuständen ist eine Kopie der IPMI-2.0-Spezifikation verfügbar (bitte beachten Sie, dass keine weiteren Aktualisierungen der IPMI-Spezifikation geplant sind).

Der erste Parameter, mit dem Sie beginnen sollten, ist "reading_type". Verwenden Sie zum Dekodieren des Codes "reading_type" die "Table 42-1, Event/Reading Type Code Ranges" aus der Spezifikation. Die meisten Sensoren in unserem Beispiel haben "reading_type:0x1", was einen "threshold"-Sensor bedeutet. "Table 42-3, Sensor Type Codes" zeigt, dass "type:0x1" einen Temperatursensor bedeutet, "type:0x2" einen Spannungssensor, "type:0x4" einen Lüftersensor usw. Threshold-Sensoren werden manchmal auch als "analoge" Sensoren bezeichnet, da sie kontinuierliche Parameter wie Temperatur, Spannung oder Umdrehungen pro Minute messen.

Ein weiteres Beispiel ist ein Sensor mit "reading_type:0x3". "Table 42-1, Event/Reading Type Code Ranges" besagt, dass Reading-Type-Codes von 02h bis 0Ch einen "Generic Discrete"-Sensor bedeuten. Diskrete Sensoren haben bis zu 15 mögliche Zustände (mit anderen Worten: bis zu 15 bedeutungsvolle Bits). Für den Sensor 'CATERR' mit "type:0x7" zeigt "Table 42-3, Sensor Type Codes" beispielsweise, dass dieser Typ "Processor" bedeutet und die einzelnen Bits folgende Bedeutung haben: 00h (das niederwertigste Bit) - IERR, 01h - Thermal Trip usw.

In unserem Beispiel gibt es einige Sensoren mit "reading_type:0x6f". Für diese Sensoren empfiehlt "Table 42-1, Event/Reading Type Code Ranges", zum Dekodieren der Bitbedeutungen "Table 42-3, Sensor Type Codes" zu verwenden. Beispielsweise hat der Sensor 'Power Unit Stat' den Typ "type:0x9", was "Power Unit" bedeutet. Offset 00h bedeutet "PowerOff/Power Down". Mit anderen Worten: Wenn das niederwertigste Bit 1 ist, dann ist der Server ausgeschaltet. Um dieses Bit zu prüfen, kann die Funktion bitand mit der Maske '1' verwendet werden. Der Auslöser-Ausdruck könnte wie folgt aussehen:

bitand(last(/www.example.com/Power Unit Stat,#1),1)=1

um vor einem ausgeschalteten Server zu warnen.

Hinweise zu Namen diskreter Sensoren in OpenIPMI-2.0.16, 2.0.17, 2.0.18 und 2.0.19

Namen diskreter Sensoren in OpenIPMI-2.0.16, 2.0.17 und 2.0.18 haben am Ende oft zusätzlich eine „0“ (oder eine andere Ziffer bzw. einen anderen Buchstaben) angehängt. Während beispielsweise ipmitool und OpenIPMI-2.0.19 die Sensornamen als „PhysicalSecurity“ oder „CATERR“ anzeigen, lauten die Namen in OpenIPMI-2.0.16, 2.0.17 und 2.0.18 entsprechend „PhysicalSecurity0“ bzw. „CATERR0“.

Wenn Sie einen IPMI-Datenpunkt mit dem Zabbix Server unter Verwendung von OpenIPMI-2.0.16, 2.0.17 und 2.0.18 konfigurieren, verwenden Sie diese auf „0“ endenden Namen im Feld IPMI sensor von IPMI-Agent-Datenpunkten. Wenn Ihr Zabbix Server auf eine neue Linux-Distribution aktualisiert wird, die OpenIPMI-2.0.19 (oder neuer) verwendet, werden Datenpunkte mit diesen diskreten IPMI-Sensoren zu „NOT SUPPORTED“. Sie müssen deren Namen im Feld IPMI sensor ändern (die „0“ am Ende entfernen) und некоторое время warten, bevor sie wieder zu „Enabled“ werden.

Hinweise zur gleichzeitigen Verfügbarkeit von Schwellenwert- und diskreten Sensoren

Einige IPMI-Agenten stellen sowohl einen Schwellenwertsensor als auch einen diskreten Sensor unter demselben Namen bereit. Dem Schwellenwertsensor wird immer der Vorzug gegeben.

Hinweise zur Beendigung der Verbindung

Wenn keine IPMI-Prüfungen durchgeführt werden (aus beliebigen Gründen: alle IPMI-Datenpunkte des Hosts deaktiviert/nicht unterstützt, Host deaktiviert/gelöscht, Host in Wartung usw.), wird die IPMI-Verbindung vom Zabbix Server oder Proxy innerhalb von 3 bis 4 Stunden beendet, abhängig davon, wann der Zabbix Server/Proxy gestartet wurde.