www.thomas-krenn.com - der Server Spezialist
IPMI Sensor Monitoring Plugin
Aus Wiki Thomas-Krenn.AG
Dieser Artikel beschreibt die Konfiguration des IPMI Sensor Monitoring Plugins in Nagios bzw. Icinga. Mit diesem Plugin kann der Hardware-Status eines Servers mit Nagios/Icinga überwacht werden. Konkret werden beispielsweise Lüfterdrehzahlen, Temperaturen, Spannungen, Stromaufnahme, Netzteilleistung etc. überwacht.
Inhaltsverzeichnis |
Download
Das IPMI Sensor Plugin kann hier heruntergeladen werden:
- check_ipmi_sensor.tar.gz (Version 1.1)
- ältere Versionen siehe Datei:Check ipmi sensor.tar.gz
Versionen
| Version | Datum | Changelog |
|---|---|---|
| 1.0 | 20091021 | Initiale Version (stable) |
| 1.1 | 20091204 |
(contributor: Ulrich Zehl, lagis Internet Serviceprovider GmbH) |
| 1.2beta | (na) | geplante Erweiterungen für künftige Versionen (noch nicht verfügbar):
|
Konfiguration
Die folgenden Schritte beschreiben die notwendige Konfiguration für die Verwendung des Plugins.
Softwareanforderungen
Das IPMI Sensor Monitoring Plugin benötigt folgende Software-Komponenten:
- ipmitool
- gawk
Plugin einspielen
Damit das Plugin verwendet werden kann muss es in Nagios eingespielt werden. Kommt etwa Nagios unter Debian Lenny zum Einsatz wird das Plugin an folgende Stelle kopiert:
- /usr/lib/nagios/plugins/check_ipmi_sensor
host Definition
Die IP Adresse des IPMI Interface des betreffenden Servers kann als Custom Object Variable[1] _ipmi_ip definiert werden:
define host {
host_name host-sr2500-1
alias Host SR2500 1
address 192.168.1.151
use generic-host
_ipmi_ip 192.168.1.211
}
command Definition
Das Kommando check_ipmi_sensor wird wie folgt definiert (unter Debian z.B. in /etc/nagios3/commands.cfg).
define command{
command_name check_ipmi_sensor
command_line $USER1$/check_ipmi_sensor -H $_HOSTIPMI_IP$ -U $ARG1$ -P $ARG2$ -T $ARG3$ -L user
}
Hier wird auf die zuvor definierte Custom Object Variable als $_HOSTIPMI_IP$ zugegriffen.[1]
service Definition
Das folgende Beispiel zeigt einen Service zur Überwachung aller Sensoren vom Typ Fan:
define service{
use generic-service
host_name host-sr2500-1
service_description IPMI Fans SR2500-6fans
check_command check_ipmi_sensor!$USER3$!$USER4$!Fan
}
Anmerkung: Zum Testen können Sie zu Beginn normal_check_interval und retry_check_interval an dieser Stelle auf einen kleinen Wert stellen, um Statusänderungen schneller zu sehen - z.B.:
define service{
use generic-service
host_name host-sr2500-1
service_description IPMI Fans SR2500-6fans
normal_check_interval 1
retry_check_interval 1
check_command check_ipmi_sensor!$USER3$!$USER4$!Fan
}
Eine Liste der möglichen IPMI SDR Typen finden Sie hier: Liste der möglichen SDR Typen.
Mit ipmitool sdr elist full (zeigt die Liste aller Sensor Records) bzw. ipmitool sdr elist all (zeigt eine Liste aller Sensor und Locator Records) können Sie sich alle Sensoren Ihres Servers anzeigen lassen und so einen Überblick bekommen welche SDR Typen Sie überwachen möchten.
Hinweis: Alternativ können Sie auch anstelle eines bestimmten SDR Typs als Typ auch "full" angeben. Dadurch wird beim Check ipmitool sdr elist full verwendet. Auf diese Weise haben Sie nur einen Hardware-Server pro Server. Diese Methode ist hauptsächlich in größeren Umgebungen interessant.
IPMI Userdaten in resource.cfg
Der IPMI Benutzername und das zugehörige Password werden in der resource.cfg konfiguriert (bei Debian in /etc/nagios3/resource.cfg).
Hinweis: aus Sicherheitsgründen empfehlen wir für das Monitoring einen IPMI Benutzer vom Privilege Level 'USER' zu benützen. Dazu ist bei der command Definition auch der Parameter -L user angegeben. Weitere Informationen zu den unterschiedlichen IPMI Privilege Levels finden Sie im Absatz Channel Privilege Levels des Artikels IPMI Grundlagen. Informationen zum Erstellen eines IPMI Benutzers mittels ipmitool finden Sie im Artikel IPMI Konfiguration unter Linux mittels ipmitool. Dabei muss ipmitool entweder lokal auf dem Server aufgerufen werden, auf dem der IPMI Benutzer angelegt werden soll. Oder es ist schon ein anderer IPMI Benutzer mit Administrator Privilege Level vorhanden - dann kann die Konfiguration auch remote erfolgen. Alternativ bieten je nach Serverhersteller spezielle Management-Boot-CDs oder ein Webinterface des Remote Managements (KVM over IP) die Möglichkeit IPMI Benutzer zu verwalten.
Hier der Beispielinhalt einer resource.cfg:
########################################################################### # # RESOURCE.CFG - Resource File for Nagios # # You can define $USERx$ macros in this file, which can in turn be used # in command definitions in your host config file(s). $USERx$ macros are # useful for storing sensitive information such as usernames, passwords, # etc. They are also handy for specifying the path to plugins and # event handlers - if you decide to move the plugins or event handlers to # a different directory in the future, you can just update one or two # $USERx$ macros, instead of modifying a lot of command definitions. # # The CGIs will not attempt to read the contents of resource files, so # you can set restrictive permissions (600 or 660) on them. # # Nagios supports up to 32 $USERx$ macros ($USER1$ through $USER32$) # # Resource files may also be used to store configuration directives for # external data sources like MySQL... # ########################################################################### # Sets $USER1$ to be the path to the plugins $USER1$=/usr/lib/nagios/plugins # Sets $USER2$ to be the path to event handlers #$USER2$=/usr/lib/nagios/plugins/eventhandlers # Store some usernames and passwords (hidden from the CGIs) # username for use in check_ipmi_sensors plugin $USER3$=monitor # password for use in check_ipmi_sensors plugin $USER4$=relation
Nagios Konfiguration neu einlesen
Nun wird die Konfiguration neu eingelesen:
/etc/init.d/nagios3 reload
Darstellung in Nagios
Darstellung mit NagiosGrapher
Für die entsprechende Konfiguration siehe NagiosGrapher Konfiguration#Beispiel mit graph perf regex.
Beispielausgaben
Die folgenden Beispiele zeigen die unterschiedlich umfangreichen Ausgaben des Plugins (je nach verbose-Level). Die Ausgaben entsprechen dabei den Vorschlägen der Nagios plug-in development guidelines.[2]
Normale Abfrage
Status OK:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan Fan Status: OK | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480 debian:/usr/lib/nagios/plugins# echo $? 0 debian:/usr/lib/nagios/plugins#
Status Warning:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan Fan Status: Warning [Fan3 = ns, Fan4 = ns, Fan8 = ns] | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480 debian:/usr/lib/nagios/plugins# echo $? 1 debian:/usr/lib/nagios/plugins#
Status Warning (hier mit '-T full'):
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T full full Status: Warning [CPU2 Temp = ns, CPU2 Vcore = ns, CPU2 DIMM = ns, Intrusion = lnc] | 'System Temp'=31 'CPU1 Vcore'=0.98 'CPU1 DIMM'=1.51 '+1.5V'=1.50 '+3.3V'=3.24 '+3.3VSB'=3.24 '+5V'=5.12 '+12V'=12.19 'VBAT'=3.19 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480 debian:/usr/lib/nagios/plugins#
Abfrage mit -v 1
Status OK: die Ausgabe ist in diesem Fall ident mit der normalen Abfrage oben.
Status Warning:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 1 Fan Status: Warning [Fan3 = ns (No Reading), Fan4 = ns (No Reading), Fan8 = ns (No Reading)] | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480 debian:/usr/lib/nagios/plugins# echo $? 1 debian:/usr/lib/nagios/plugins#
Abfrage mit -v 2
Status OK:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 2 Fan Status: OK | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480 Fan1 = 6480 RPM (Status: ok) Fan2 = 7020 RPM (Status: ok) Fan5 = 5265 RPM (Status: ok) Fan6 = 5265 RPM (Status: ok) Fan7 = 6480 RPM (Status: ok) debian:/usr/lib/nagios/plugins# echo $? 0 debian:/usr/lib/nagios/plugins#
Status Warning:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 2 Fan Status: Warning [Fan3 = ns (No Reading), Fan4 = ns (No Reading), Fan8 = ns (No Reading)] | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480 Fan1 = 6480 RPM (Status: ok) Fan2 = 7020 RPM (Status: ok) Fan3 = No Reading (Status: ns) Fan4 = No Reading (Status: ns) Fan5 = 5265 RPM (Status: ok) Fan6 = 5265 RPM (Status: ok) Fan7 = 6480 RPM (Status: ok) Fan8 = No Reading (Status: ns) debian:/usr/lib/nagios/plugins# echo $? 1 debian:/usr/lib/nagios/plugins#
Abfrage mit -v 3
Status OK:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 3
------------- begin of debug output (-v 3 is set): ------------
script was executed with the following parameters:
./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 3
ipmitool was executed with the following parameters:
/usr/bin/ipmitool -I lan -H 10.10.10.233 -U monitor -P relation -L user -S /tmp/ipmi-sdr-cache-10.10.10.233 sdr type "Fan"
ipmitool return code: 0
output of ipmitool:
Fan1 | 0Eh | ok | 7.2 | 6480 RPM
Fan2 | 0Fh | ok | 7.2 | 7020 RPM
Fan5 | 12h | ok | 7.2 | 5265 RPM
Fan6 | 13h | ok | 7.2 | 5265 RPM
Fan7 | 14h | ok | 7.2 | 6480 RPM
--------------------- end of debug output ---------------------
Fan Status: OK | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480
Fan1 = 6480 RPM (Status: ok)
Fan2 = 7020 RPM (Status: ok)
Fan5 = 5265 RPM (Status: ok)
Fan6 = 5265 RPM (Status: ok)
Fan7 = 6480 RPM (Status: ok)
debian:/usr/lib/nagios/plugins# echo $?
0
debian:/usr/lib/nagios/plugins#
Status Warning:
debian:/usr/lib/nagios/plugins# ./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 3
------------- begin of debug output (-v 3 is set): ------------
script was executed with the following parameters:
./check_ipmi_sensor -H 10.10.10.233 -L user -U monitor -P relation -T Fan -v 3
ipmitool was executed with the following parameters:
/usr/bin/ipmitool -I lan -H 10.10.10.233 -U monitor -P relation -L user -S /tmp/ipmi-sdr-cache-10.10.10.233 sdr type "Fan"
ipmitool return code: 0
output of ipmitool:
Fan1 | 0Eh | ok | 7.2 | 6480 RPM
Fan2 | 0Fh | ok | 7.2 | 7020 RPM
Fan3 | 10h | ns | 7.2 | No Reading
Fan4 | 11h | ns | 7.2 | No Reading
Fan5 | 12h | ok | 7.2 | 5265 RPM
Fan6 | 13h | ok | 7.2 | 5265 RPM
Fan7 | 14h | ok | 7.2 | 6480 RPM
Fan8 | 15h | ns | 7.2 | No Reading
--------------------- end of debug output ---------------------
Fan Status: Warning [Fan3 = ns (No Reading), Fan4 = ns (No Reading), Fan8 = ns (No Reading)] | 'Fan1'=6480 'Fan2'=7020 'Fan5'=5265 'Fan6'=5265 'Fan7'=6480
Fan1 = 6480 RPM (Status: ok)
Fan2 = 7020 RPM (Status: ok)
Fan3 = No Reading (Status: ns)
Fan4 = No Reading (Status: ns)
Fan5 = 5265 RPM (Status: ok)
Fan6 = 5265 RPM (Status: ok)
Fan7 = 6480 RPM (Status: ok)
Fan8 = No Reading (Status: ns)
debian:/usr/lib/nagios/plugins# echo $?
1
debian:/usr/lib/nagios/plugins#
Mögliche Sensortypen
Die folgende Tabelle zeigt beispielhaft welche Sensortypen (SDR Types) bei bestimmten Server abgefragt werden können:
| SDR Type | Intel SR2500 | Supermicro Server mit X8DT3-F Mainboard |
|---|---|---|
| Temperature | ja | ja |
| Voltage | ja | ja |
| Current | ja | |
| Fan | ja | ja |
| Physical Security | ja | ja |
| Platform Security | ja | |
| Processor | ja | |
| Power Supply | ja | ja |
| Power Unit | ja | |
| Other | ja (gibt Netzteil-Leistungsaufnahme an) | |
| Memory | ja | |
| Drive Slot / Bay | ja | |
| Event Logging Disabled | ja | |
| System Event | ja | |
| Critical Interrupt | ja | |
| Button | ja | |
| Slot / Connector | ja | |
| System ACPI Power State | ja | |
| Entity Presence | ja | |
| Battery | ja | |
| Session Audit | ja |
Lüfter bei Supermicro Systemen
Bei den Supermicro Systemen hängt es vom jeweiligen Gehäuse welche Lüfter vorhanden sind. Für nicht vorhandene Lüfter können im IPMI BMC die SDR Einträge entfernt werden (siehe Supermicro Mainboards mit WPCM450 BMC IPMI Sensoren ausblenden).
| Gehäuse | Fan1 | Fan2 | Fan3 | Fan4 | Fan5 | Fan6 | Fan7 | Fan8 |
|---|---|---|---|---|---|---|---|---|
| SC823 | ja | ja | ja | ja | - | - | - | - |
| SC836 | ja | ja | ja | - | ja | ja | - | - |
| SR108 low noise | ja | ja | - | - | ja | - | ja | ja |
Einzelnachweise
- ↑ 1,0 1,1 http://nagios.sourceforge.net/docs/3_0/customobjectvars.html
- ↑ Nagios plug-in development guidelines (Kapitel 2.2. Verbose output)
