IPMI Sensor Monitoring Plugin Version 1.x

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

In diesem Artikel finden Sie Informationen zum IPMI Sensor Monitoring Plugin Version 1.x. Informationen zur aktuellen Version 2.x finden Sie im Artikel IPMI Sensor Monitoring Plugin.

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 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

Nagios 3.0.6 IPMI Plugin Fan Beispiel

Darstellung mit NagiosGrapher

NagiosGrapher 1.6.1 IPMI Plugin Fan Beispiel

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# 

Hinweis bei geänderten Sensoren am Server

Wenn Sie Sensoren ausblenden müssen Sie anschließend am Nagios-Server die Cache-Datei /tmp/ipmi-sdr-cache-$IPMI_IP des betreffenden Servers löschen. Die Cache Datei enthält nämlich die einzelnen Adressen der IPMI Sensoren, somit auch die Adressen der soeben ausgeblendeten Sensoren. Die Cache Datei wird nach dem Löschen bei der nächsten Abfrage automatisch erstellt und enthält dann die ausgeblendeten Sensoren nicht mehr.

Einzelnachweise

  1. 1,0 1,1 http://nagios.sourceforge.net/docs/3_0/customobjectvars.html
  2. Nagios plug-in development guidelines (Kapitel 2.2. Verbose output)


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

Icinga 2 Graphen mit PNP unter Ubuntu 14.04 Trusty
Icinga Web 2 mit Icinga 1.x verwenden
NagiosGrapher Konfiguration