IPMI – Execution of ipmitool failed with return code 127

Die Fehlermeldung Execution of ipmitool failed with return code 127. wird ausgegeben, wenn auf dem Nagios-Server das ipmi-Paket fehlt.

Alternative 1

Das fehlende Pakte lässt sich bei einem (K)Ubuntu-System über die Konsole oder einen grafischen Paketmanager einfach nachinstallieren.

sudo aptitude install ipmi-tools

Alternative 2

Das fehlende Pakte lässt sich bei einem (K)Ubuntu-System über die Konsole oder einen grafischen Paketmanager einfach nachinstallieren.
Anstatt das ipmi-tools zu installieren, wird das zweite IPMI-Paket, ipmitool, installiert.

sudo aptitude install ipmitool

Achtung

Bei beiden Varianten ist darauf zu achten, dass die Plugins im Verzeichnis /usr/lib/nagios/plugins auch ausführbar sind.

Weitere Fehlermeldung

Es kann auch vorkommen, dass auf einmal kein Plugin mehr funktioniert und die Ausgabe in Nagios so aussieht.

Hier läuft ein notwendiger Daemon nicht, den das Plugin dringend benötigt. Aber über die Konsole lässt sich das sehr schnell beheben:

sudo /etc/init.d/ipmievd start

Noch ein kleiner Tipp.
Nagios benötigt auch SNMP, das man über den Befehlt

sudo /etc/init.d/snmpd start


starten kann.

IPMI Sensor Monitoring Plugin

Das Plugin kann den Hardware-Status von Servern abfragen. Das ist z.B. dann möglich, wenn ein Server eine Managementkarte eingebaut hat.

Installation

Bevor mit der Installation des Plugins begonnen werden kann, sind aber noch ein paar Abhängigkeiten zu beachten. Da alle Pakete in den Repositories verfügbar sind, ist die Installation sehr einfach durchzuführen.

sudo aptitude install gawk


Es wird auch das FreeIPMI-Paket für das Plugin benötigt. Leider musste ich aber feststellen, dass es dabei ein paar Probleme geben kann. Es gibt zwei Pakete, die dafür verwendet werden können:

  • freeipmi-tools
  • ipmitool

Eine ausführliche Beschreibung findet ihr hier ➡ IPMI – Execution of ipmitool failed with return code 127.

Nun kann man das Plugins von der Seite des Herstellers herunterladen (:arrow: thomas-krenn.com).

Die heruntergeladene Datei kopiert man nun in das Verzeichnis /usr/lib/nagios/plugins. Die Rechte sind unbedingt zu prüfen.

Zum Abschluss muss man Nagios noch mitteilen, dass ein neues Plugin vorhanden ist, also auf der Konsole eingeben

sudo /etc/init.d/nagios3 reload

Konfiguration

Zu Beginn der Konfiguration muss der Abfragebefehl definiert werden, z.B. in der Datei 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
}

Danach muss man die Gerätedateien so konfigurieren, dass das IPMI-Tool darauf zugreifen kann. In meinem Beispiel habe ich einen Server mit einer statischen IP-Adresse der auf einer Hardware mit einer Managementkarte läuft, die ebenfalls über eine statische IP verfügt.
Nun soll in Nagios die Management-Karte zum Server zugeordnet werden. Es ist ziemlich leicht das vorzunehmen.
In dem Bereich define host ist die Zeile _ipmi_ip einzufügen.

define host{
        use                     generic-server            ; Name of host template to use
        host_name               Server1
        alias                   Server1
        address                 192.168.2.2
	_ipmi_ip      192.168.3.50
        }

Die Services können ebenfalls in der gleichen Datei definiert werden:


atusmap_image  base/suse.gd2
        }


define service{
      use 				generic-service
      host_name				Server1
      service_description		SSH
		check_command		check_ssh!172.16.0.4
}

define service{
	use 				generic-service
	host_name			Server1
	service_description		SSH Port 22
	      check_command		check_ssh_port!22!172.16.0.4
}

# Doku für ipmitool --> http://www.webhosternews.com/2010/10/uberwachen-sie-server-hardwaremit-dem-ipmi-plugin-in-nagios/
# http://www.thomas-krenn.com/de/wiki/IPMI_Grundlagen
# Konsolenabfrage: ipmitool -I lan -H  -U  -P  sensor
define service{
use generic-service
host_name     Server1
service_description  IPMI_Hardware_Status
check_command    check_ipmi_sensor!$USER5$!$USER6$!full
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Fan
check_command    check_ipmi_sensor!$USER5$!$USER6$!fan
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Voltage
check_command    check_ipmi_sensor!$USER5$!$USER6$!Voltage
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Temparature
check_command    check_ipmi_sensor!$USER5$!$USER6$!Temperature
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Memory
check_command    check_ipmi_sensor!$USER5$!$USER6$!Memory
}

define service{
use generic-service-1m-check
host_name     Server1
service_description  IPMI_Hardware_Processor
check_command    check_ipmi_sensor!$USER5$!$USER6$!Processor
}

Die Platzhalter $USER5$ und $USER6$ sind für den Benutzernamen und das Passwort reserviert. Da der Zugriff auf die Managementkarte des Servers einen Login benötigt, müssen diese Werte Nagios mitgeteilt werden.
Die beiden Informationen werden in der resource.cfg hinterlegt. Hier ist zwingend zu beachten, dass beide Werte in Plaintext dort gespeichert werden. Nach Möglichkeit ist ein separater User auf der Netwerkkarte anzulegen, der nur Lesezugriff auf die benötigten Informationen hat, um ggf. bei Passwortdiebstahl Missbrauch zu vermeiden.

Ist die Konfiguration abgeschlossen, dann teilt man das Nagios mit, indem man auf der Konsole den Befehl eingibt:

sudo /etc/init.d/nagios3 reload