IPMI Sensor Monitoring Plugin

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche
Aufgrund einer unterbrochenen Stromzufuhr liefert das erste Netzteil dieses Servers keinen Strom mehr - Icinga meldet dank des IPMI Sensor Monitoring Plugins umgehend das Problem.
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.

Server-Systeme von Thomas-Krenn

Aktuelle Version

Der dreiseitige Artikel "Lebenszeichen" aus dem ADMIN Magazin 01/2011 zeigt Ihnen wie Sie mit dem IPMI Plugin Ihre Hardware zuverlässig überwachen.
Die aktuelle Version des check_ipmi_sensor Plugins finden Sie auf GitHub:

Funktionen der v3-Version

In der README des Plugins finden Sie eine detaillierte Auflistung, welche Komponenten überwacht werden:

Version 2

Version 2 des Plugins ist ebenfalls auf GitHub zu finden:

Repository

Über das Ubuntu Package nagios-plugins-thomas-krenn im Thomas Krenn Ubuntu Repository kann das Plugin ebenfalls installiert werden. Weitere Plugins von Thomas-Krenn finden Sie in der Übersichtsseite Monitoring Plugins für Thomas Krenn Server.

GitHub Issues

Es gibt zwei GitHub Repositories bei dem Issues geöffnet werden können:

Einstiegsartikel aus ADMIN Magazin

Einen dreiseitigen Artikel zum Plugin finden Sie im ADMIN Magazin 01/2011. Als Leser des Thomas Krenn Wikis können Sie den Artikel exklusiv hier kostenlos als PDF herunterladen:

Plugin Version 3.x 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:

Plugin einspielen

Damit das Plugin verwendet werden kann muss es in Nagios eingespielt werden. Kommt etwa Nagios unter Debian zum Einsatz wird das Plugin an folgende Stelle kopiert:

  • /usr/lib/nagios/plugins/check_ipmi_sensor

sudo Konfiguration

Achtung: Folgende Schritte sind nur nötig, wenn das IPMI Plugin am lokalen Host oder über NRPE aufgerufen wird! Bei der Verwendung des Plugins am lokalen Host, muss der User Nagios die Programme ipmi-sensors, ipmi-sel und (optional) ipmi-fru mit root-Rechten ausführen dürfen:

$ sudo vi /etc/sudoers.d/check_ipmi_sensor
nagios ALL=(root) NOPASSWD: /usr/sbin/ipmi-sensors, /usr/sbin/ipmi-sel

Um zu prüfen, welche Kommandos vom Plugin aufgerufen werden, verwenden Sie am besten die '-vvv' Option!

Kommando Definition

Definieren sie das Kommando check_ipmi_sensor in ihrer commands.cfg (unter Debian 5 z.B. in /etc/nagios3/commands.cfg, unter Ubuntu 12.04 z.B. in /etc/icinga/commands.cfg):

define command{
  command_name  check_ipmi_sensor
  command_line  $USER1$/check_ipmi_sensor -H $_HOSTIPMI_IP$ -f $ARG1$
  }

Host Definition

In der jeweiligen Host Definition konfigurieren sie die IP Adresse des IPMI Interfaces als Custom Object Variable[1] _ipmi_ip:

define host{
  use           linux-server
  host_name     centos4
  alias         centos4
  address       192.168.1.151
  _ipmi_ip      192.168.1.211
  }

Service Definition

Die abschließende Servicedefinition erfordert als Parameter nur mehr den Pfad zur Free-IPMI-Konfigurationsdatei, die

define service{
  use                  generic-service
  host_name            centos4
  service_description  IPMI
  check_command        check_ipmi_sensor!/etc/ipmi-config/ipmi.cfg
  }

FreeIPMI Konfiguration

Bei Servern mit Supmicro Mainboard muss SMC RAKP wie hier dargestellt deaktiviert sein, damit IPMI Anfragen mittels FreeIPMI möglich sind.
Die FreeIPMI Konfigurationsdatei enthält IPMI-Benutzernamen, -Passwort und Channel-Privilege-Level:
username monitoring
password ao5$snNc!
privilege-level user

Die Konfigurationsdatei kann auch weiter FreeIPMI Konfigurationsparameter enthalten, etwa Workaround-Flags (in diesem Beispiel als Workaround bei diesem Problem: FreeIPMI Abfrage an Supermicro System scheitert über LAN Channel):

username monitoring
password ao5$snNc!
privilege-level user
ipmi-sensors-workaround-flags nochecksumcheck,noauthcodecheck

Beispielausgabe

Das folgende Beispiel zeigt die Ausgaben des Plugins beim Abfragen eines 1HE Intel Single-CPU CSE512 Servers (Version 3.*) mit X9SCM-F Mainboard (IPMI Firmware 2.24):

adminuser@ubuntu-12-04:~$ cat ipmi.cfg
username monitoring
password ao5$snNc!
privilege-level user
adminuser@ubuntu-12-04:~$ ./check_ipmi_sensor -H 192.168.255.5 -f ipmi.cfg -v
IPMI Status: OK | 'System Temp'=27.00 'Peripheral Temp'=35.00 'FAN 1'=1725.00 'Vcore'=0.71 '3.3VCC'=3.36 '12V'=11.93 'VDIMM'=1.53 '5VCC'=5.09 '-12V'=-12.09 'VBAT'=3.14 'VSB'=3.34 'AVCC'=3.38
adminuser@ubuntu-12-04:~$ ./check_ipmi_sensor -H 192.168.255.5 -f ipmi.cfg -vv
IPMI Status: OK | 'System Temp'=27.00 'Peripheral Temp'=35.00 'FAN 1'=1725.00 'Vcore'=0.71 '3.3VCC'=3.36 '12V'=11.93 'VDIMM'=1.53 '5VCC'=5.09 '-12V'=-12.09 'VBAT'=3.14 'VSB'=3.34 'AVCC'=3.38
System Temp = 27.00 (Status: Nominal)
Peripheral Temp = 35.00 (Status: Nominal)
CPU Temp = 'Low' (Status: Nominal)
FAN 1 = 1725.00 (Status: Nominal)
Vcore = 0.71 (Status: Nominal)
3.3VCC = 3.36 (Status: Nominal)
12V = 11.93 (Status: Nominal)
VDIMM = 1.53 (Status: Nominal)
5VCC = 5.09 (Status: Nominal)
-12V = -12.09 (Status: Nominal)
VBAT = 3.14 (Status: Nominal)
VSB = 3.34 (Status: Nominal)
AVCC = 3.38 (Status: Nominal)
Chassis Intru = 'OK' (Status: Nominal)
adminuser@ubuntu-12-04:~$ ./check_ipmi_sensor -H 192.168.255.5 -f ipmi.cfg -vvv
------------- begin of debug output (-vvv is set): ------------
  script was executed with the following parameters:
    ./check_ipmi_sensor -H 192.168.255.5 -f ipmi.cfg -vvv
  check_ipmi_sensor version:
    3.1 2012-05-24
  FreeIPMI version:
    ipmi-sensors - 1.2.3
  FreeIPMI was executed with the following parameters:
    /usr/local/sbin/ipmi-sensors -h 192.168.255.5 --config-file ipmi.cfg --quiet-cache --sdr-cache-recreate --interpret-oem-data --output-sensor-state --ignore-not-available-sensors
  FreeIPMI return code: 0
  output of FreeIPMI:
ID   | Name            | Type              | State    | Reading    | Units | Event
4    | System Temp     | Temperature       | Nominal  | 27.00      | C     | 'OK'
71   | Peripheral Temp | Temperature       | Nominal  | 35.00      | C     | 'OK'
138  | CPU Temp        | OEM Reserved      | Nominal  | N/A        | N/A   | 'Low'
205  | FAN 1           | Fan               | Nominal  | 1725.00    | RPM   | 'OK'
540  | Vcore           | Voltage           | Nominal  | 0.75       | V     | 'OK'
607  | 3.3VCC          | Voltage           | Nominal  | 3.36       | V     | 'OK'
674  | 12V             | Voltage           | Nominal  | 11.93      | V     | 'OK'
741  | VDIMM           | Voltage           | Nominal  | 1.53       | V     | 'OK'
808  | 5VCC            | Voltage           | Nominal  | 5.09       | V     | 'OK'
875  | -12V            | Voltage           | Nominal  | -12.09     | V     | 'OK'
942  | VBAT            | Voltage           | Nominal  | 3.14       | V     | 'OK'
1009 | VSB             | Voltage           | Nominal  | 3.34       | V     | 'OK'
1076 | AVCC            | Voltage           | Nominal  | 3.38       | V     | 'OK'
1143 | Chassis Intru   | Physical Security | Nominal  | N/A        | N/A   | 'OK'

--------------------- end of debug output ---------------------
IPMI Status: OK | 'System Temp'=27.00 'Peripheral Temp'=35.00 'FAN 1'=1725.00 'Vcore'=0.75 '3.3VCC'=3.36 '12V'=11.93 'VDIMM'=1.53 '5VCC'=5.09 '-12V'=-12.09 'VBAT'=3.14 'VSB'=3.34 'AVCC'=3.38
System Temp = 27.00 (Status: Nominal)
Peripheral Temp = 35.00 (Status: Nominal)
CPU Temp = 'Low' (Status: Nominal)
FAN 1 = 1725.00 (Status: Nominal)
Vcore = 0.75 (Status: Nominal)
3.3VCC = 3.36 (Status: Nominal)
12V = 11.93 (Status: Nominal)
VDIMM = 1.53 (Status: Nominal)
5VCC = 5.09 (Status: Nominal)
-12V = -12.09 (Status: Nominal)
VBAT = 3.14 (Status: Nominal)
VSB = 3.34 (Status: Nominal)
AVCC = 3.38 (Status: Nominal)
Chassis Intru = 'OK' (Status: Nominal)
adminuser@ubuntu-12-04:~$ 

Plugin Version 2.x Konfiguration

Die gelieferten Performance-Daten können mit Visualisierungstools wie PNP4Nagios ausgewertet werden. In diesem Beispiel wird die erhöhte Leistungsaufnahme des zweiten Netzteils sichtbar, nachdem um 17:00 Uhr die Stromzufuhr zum ersten Netzteil hin ausgefallen ist. Damit muss nun Netzteil 2 den Server alleine mit Energie versorgen.
Die folgenden Schritte beschreiben die notwendige Konfiguration für die Verwendung des Plugins.

Softwareanforderungen

Das IPMI Sensor Monitoring Plugin benötigt folgende Software-Komponenten:

Plugin einspielen

Damit das Plugin verwendet werden kann muss es in Nagios eingespielt werden. Kommt etwa Nagios unter Debian 5 zum Einsatz wird das Plugin an folgende Stelle kopiert:

  • /usr/lib/nagios/plugins/check_ipmi_sensor

Kommando Definition

Definieren sie das Kommando check_ipmi_sensor in ihrer commands.cfg (unter Debian 5 z.B. in /etc/nagios3/commands.cfg):

define command{
  command_name  check_ipmi_sensor
  command_line  $USER1$/check_ipmi_sensor -H $_HOSTIPMI_IP$ -f $ARG1$
  }

Host Definition

In der jeweiligen Host Definition konfigurieren sie die IP Adresse des IPMI Interfaces als Custom Object Variable[1] _ipmi_ip:

define host{
  use           linux-server
  host_name     centos4
  alias         centos4
  address       192.168.1.151
  _ipmi_ip      192.168.1.211
  }

Service Definition

Die abschließende Servicedefinition erfordert als Parameter nur mehr den Pfad zur Free-IPMI-Konfigurationsdatei, die

define service{
  use                  generic-service
  host_name            centos4
  service_description  IPMI
  check_command        check_ipmi_sensor!/etc/ipmi-config/ipmi.cfg
  }

FreeIPMI Konfiguration bis FreeIPMI 0.7.*

Die FreeIPMI Konfigurationsdatei enthält IPMI-Benutzernamen, -Passwort und Channel-Privilege-Level und kann auch weitere FreeIPMI Konfigurationsparameter enthalten:

username monitor
password ao5$snNc!
privilege-level user

FreeIPMI Konfiguration bei FreeIPMI 0.8.* und neuer

Bei FreeIPMI 0.8.* ist die legacy-output Option für ipmimonitoring notwendig (da sich die Standardausgabe des Kommandos mit dieser Version geändert hat). Sie können diese Option bequem in der FreeIPMI Konfigurationsdatei ergänzen:

username monitor
password ao5$snNc!
privilege-level user
ipmimonitoring-legacy-output on

Außerdem können Sie die Option ipmi-sensors-interpret-oem-data on ergänzen. Dadurch werden OEM Sensoren interpretiert (sofern die OEM-Sensoren ihres Systems bereits FreeIPMI bekannt sind - z.B. bei dem Sensor CPU1 Temp des Supermicro Mainboards X8DT3-F, abgefragt mit FreeIPMI Version 1.0.1):

username monitor
password ao5$snNc!
privilege-level user
ipmimonitoring-legacy-output on
ipmi-sensors-interpret-oem-data on

Sofern Unrecognized Events von FreeIPMI gemeldet werden, können Sie diese bei Bedarf über folgende Option in der Konfigurationsdatei ignorieren:

ipmi-sensors-ignore-unrecognized-events on

Falls Sie das Plugin ohne Konfigurationsdatei nutzen, steht Ihnen dafür die -O Option zur Verfügung:

./check_ipmi_sensor -H 10.1.102.10 -U monitor -P ***** -L user -O '--legacy-output --interpret-oem-data'

Plugin Version 1.x Konfiguration

Informationen zur Konfiguration des IPMI Plugin Version 1.x finden Sie in folgendem Wiki Artikel:

Mögliche Plugin Erweiterungen

Geplante Erweiterungen für künftige Versionen (noch nicht verfügbar):

  • for version 2.x and 1.x:
    • option to change performance data output to omit quotes and to use underscores instead, e.g. to return Fan_1=5432 instead of 'Fan 1'=5432 - this should allow Zenoss users to use this plugin (a Zenoss user reported that zenoss has issues with creating graphs for data sources with quotes)
    • option to query only defined sensors (like a single sensor or a list of sensors)
    • option to exclude OEM sensors (see this posting the plugin's mailinglist)
  • for version 1.x:
    • remove searching for "error" string as this causes problem when a sensor has the term "error" in its name, see this posting the plugin's mailinglist
    • error handling for creation of SDR cache file
    • search/query for other locations of ipmitool in case it is not in /usr/bin/ (e.g. in /bin, /usr/bin, /usr/local/bin) - e.g. using IPMITOOL=$(which ipmitool)
    • if $ipmioutput contains "error" maybe add query if server is switched on -> error message could be more precise then
    • validate if an option to execute different ipmitool queries instead of 'ipmitool sdr', e.g. 'ipmitool sunoem sbled get SERVICE' (with additional info on how the output should look like) would be useful

Einzelnachweise

  1. 1,0 1,1 http://nagios.sourceforge.net/docs/3_0/customobjectvars.html

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

IPMI Power Supply Sensor
Linux Software RAID Monitoring Plugin
Performance Graphen für check procs erstellen