IPMI Sensor Monitoring Plugin

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
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.

Hier geht es zu unseren Server-Systemen im Onlineshop 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!

Icinga und Nagios Konfiguration

Nachfolgender Abschnitt beschreibt die Konfiguration des Plugins unter Icinga bzw. Nagios.

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
  }

Icinga 2 Konfiguration

Das IPMI Sensor Monitoring Plugin kann ebenso mit Icinga 2 verwendet werden, der nachfolgende Abschnitt erläutert die Konfiguration.

Kommando Definition

Ein Check Kommando zu unserem check_ipmi_sensor Monitoring Plugin ist bereits standardmäßig bei einer Icinga 2 Installation mit enthalten. Es befindet sich bei Ubuntu im Verzeichnis /usr/share/icinga2/include/plugins-contrib.d/ipmi.conf.

Es wird nun eine sogenannte Apply Rule im Icinga 2 Konfigurationsverzeichnis angelegt, damit wird bei einem Host mit entsprechend gesetztem Parameter dieser Servicecheck automatisch angefügt. Erstellen Sie dazu unterhalb des Icinga 2 Konfigurationsverzeichnisses, bei Ubuntu /etc/icinga2/conf.d, den Ordner services und legen dort eine neue Datei mit der Bezeichnung "ipmi.conf" an.

Diese neue Konfigurationsdatei enthält folgendes Kommando:

apply Service "check-ipmi-sensor" {
	import "generic-service"
	check_command = "ipmi-sensor"
	assign where host.vars.ipmi_address
}

Der Ausdruck assign where host.vars.ipmi_address bedeutet, wenn ein überwachter Host einen Parameter vars.ipmi_address mit zugehöriger IP-Adresse enthält, wird automatisch der Servicecheck "check-ipmi-sensors" auf das angegebene Interface ausgeführt.

Host Definition

Ergänzen Sie in der Host-Konfiguration die beiden Zeilen vars.ipmi_address und vars.ipmi_config_file.

object Host "Testserver" {
	import "generic-host"
	address = "<IP-Adresse>"
	vars.ipmi_address = "<IPMI-IP-Adresse>"
	vars.ipmi_config_file = [ SysconfDir + "/icinga2/conf.d/hosts/testserver/ipmi.cfg" ]
}

FreeIPMI Konfiguration

Bei Servern mit einem Supermicro 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

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

Bootdevice mit ipmitool setzen
IPMI Sensor Types
Softwaretools für IPMI im Überblick