Sieben Probleme. So viele Stolpersteine habe ich gezählt, bis das Hardware-Monitoring für drei HP ProLiant Server endlich lief. Dabei klang es in der Dokumentation so einfach: SNMP aktivieren, check_hpasm ausführen, fertig.
Oder: Wie ich lernte, dass “Community-Projekt” manchmal “bring dein eigenes Pflaster mit” bedeutet
Falls du gerade vor einem ähnlichen Setup stehst – HP ProLiant Server via iLO überwachen, OMD Labs als Monitoring-System – dann wird dir dieser Bericht einiges an Frust ersparen.
Die Ausgangssituation
Drei HP ProLiant DL360p Gen8 Server mit VMware ESXi 7.0.3. Jeder Server hat einen iLO4 Management-Controller mit eigenem Netzwerkinterface:
| Server | ESXi IP | iLO IP |
|---|---|---|
| esxi-01 | 192.168.20.x | 192.168.21.101 |
| esxi-02 | 192.168.20.x | 192.168.21.102 |
| esxi-03 | 192.168.20.x | 192.168.21.103 |
Ziel: Umfassendes Hardware-Monitoring – Lüfter, Temperaturen, Netzteile, RAM, RAID – über die iLO-Schnittstelle.
Monitoring-System: OMD Labs 5.60 (ConSol Edition) mit Naemon als Core und PNP4Nagios für Graphing.
Klingt straightforward? War es nicht.
Problem 1: “Failed to create new file: invalid path”
Beim allerersten Versuch, einen Host über das Thruk Web-Interface anzulegen, begrüßte mich sofort eine Fehlermeldung:
Failed to create new file: invalid path
Was ist passiert? Das Verzeichnis für Konfigurationsdateien existierte schlicht nicht. OMD Labs ist ein Community-Projekt – manche Grundfunktionen sind nicht perfekt out-of-the-box konfiguriert.
Die Lösung:
su - monitoring # Als OMD-Site-User
mkdir -p ~/etc/naemon/conf.d/hosts
mkdir -p ~/etc/naemon/conf.d/services
mkdir -p ~/etc/naemon/conf.d/commands
Lesson Learned: Für produktive Setups empfiehlt es sich, Konfigurationen direkt per CLI zu erstellen. Das Web-Interface ist nett für Quick Wins, aber nicht immer zuverlässig.
Der Umweg über ESXi SNMP
Bevor wir uns dem iLO widmeten, haben wir zunächst ESXi selbst via SNMP überwacht.
SNMP auf ESXi aktivieren
Per SSH auf den ESXi-Host:
esxcli system snmp set --communities public
esxcli system snmp set --enable true
esxcli network firewall ruleset set --ruleset-id snmp --enabled true
Problem 2: SNMP MIBs nicht geladen
Beim ersten Test:
snmpwalk -v2c -c public esxi-01.example.com sysDescr
Kam die Meldung:
sysDescr: Unknown Object Identifier (Sub-id not found: (top) -> sysDescr)
Die SNMP MIBs waren auf dem OMD-Server nicht geladen. Kein Drama – numerische OIDs sind ohnehin universeller:
snmpwalk -v2c -c public esxi-01.example.com .1.3.6.1.2.1.1.1.0
Ergebnis:
iso.3.6.1.2.1.1.1.0 = STRING: "VMware ESXi 7.0.3 build-24411414 VMware, Inc. x86_64"
Lesson Learned: Für Nagios/Naemon Checks immer numerische OIDs verwenden – sie sind unabhängig von installierten MIB-Dateien und funktionieren überall.
Warum iLO statt ESXi?
ESXi SNMP liefert Basis-Informationen (Uptime, NICs), aber für echtes Hardware-Monitoring ist der iLO-Controller der bessere Weg:
- Dedizierte Hardware-Management-Schnittstelle – genau dafür gebaut
- Zugriff auch bei ausgeschaltetem Server – kritisch für Troubleshooting
- Detailliertere Sensor-Daten – 41 Temperatursensoren statt einer Handvoll
- HP-spezifische MIBs – CPQHLTH-MIB kennt jeden Sensor im System
Problem 3: SNMP auf iLO nicht aktiv
Erster Test gegen die iLO-IP:
snmpwalk -v2c -c public 192.168.21.101 .1.3.6.1.2.1.1.1.0
→ Timeout
SNMP war auf dem iLO4 nicht aktiviert bzw. keine Community konfiguriert.
Die Lösung: Im iLO4 Web-Interface:
- Browser öffnen:
https://192.168.21.101 - Navigation: Administration → Management → SNMP Settings
- Read Community eintragen (z.B.
public– oder besser was Sicheres) - Apply klicken
Nach der Konfiguration:
snmpwalk -v2c -c public 192.168.21.101 .1.3.6.1.2.1.1.1.0
Ergebnis:
iso.3.6.1.2.1.1.1.0 = STRING: "Integrated Lights-Out 4 1.50"
check_hpasm: Das richtige Tool für den Job
Wir hätten einzelne SNMP-Checks für jeden Sensor schreiben können. Aber
check_hpasm ist speziell für HP ProLiant Hardware entwickelt:
- Automatische Erkennung aller Komponenten
- Aggregierter Gesundheitsstatus
- Performance-Daten für alle Sensoren
- Menschenlesbare Ausgabe
Problem 4: Perl Locale-Warnung
Beim ersten Aufruf:
~/lib/nagios/plugins/check_hpasm -H 192.168.21.101 -C public
Erschienen Warnungen:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
Die Locale-Einstellungen im OMD-Site-Environment waren nicht korrekt gesetzt.
Die Lösung:
echo 'export LC_ALL=C' >> ~/.profile
source ~/.profile
Danach lief der Check sauber:
WARNING - system fan overall status is degraded, fan 6 (system) degraded,
System: 'proliant dl360p gen8', S/N: 'XXXXXXXXXX', ROM: 'P71 07/01/2015'
Überraschung: Der Check hat sofort einen echten Hardware-Fehler gefunden – Fan 6 ist degradiert!
Problem 5: --perfdata Option funktioniert nicht
Wir wollten Performance-Daten für Graphen aktivieren:
~/lib/nagios/plugins/check_hpasm -H 192.168.21.101 -C public --perfdata
Fehlermeldung:
Option perfdata requires an argument
Die OMD-Version von check_hpasm wurde ohne --enable-perfdata kompiliert. Die
Option erwartet einen Wert.
Die Lösung: Explizit --perfdata=short verwenden:
~/lib/nagios/plugins/check_hpasm -H 192.168.21.101 -C public --perfdata=short
Ergebnis mit Performance-Daten:
WARNING - system fan overall status is degraded... | pc_1=112;460;460 pc_2=99;460;460
fan_1=50% fan_2=50% ... temp_1=24;42;42 temp_2=40;70;70 ...
Naemon Konfiguration
Architektur-Entscheidung: Separate iLO-Hosts
Wichtige Design-Entscheidung: iLO-Hosts separat von ESXi-Hosts definieren:
- Unterschiedliche IPs – iLO hat eigenes Management-Netzwerk
- Zukunftssicher – Neue HP-Server ohne ESXi passen ins Schema
- Klare Trennung – Hardware-Monitoring vs. Virtualisierung
Datei: ~/etc/naemon/conf.d/hosts/ilo-hosts.cfg
# iLO Hostgroup
define hostgroup {
hostgroup_name ilo-servers
alias HP iLO Management Interfaces
}
# iLO Host Template
define host {
name ilo-host
use generic-host
check_command check-host-alive
check_interval 5
register 0
}
# iLO Hosts
define host {
use ilo-host
host_name ilo-esxi-01
alias iLO ESXi-01 (DL360p Gen8)
address 192.168.21.101
hostgroups ilo-servers
}
define host {
use ilo-host
host_name ilo-esxi-02
alias iLO ESXi-02 (DL360p Gen8)
address 192.168.21.102
hostgroups ilo-servers
}
define host {
use ilo-host
host_name ilo-esxi-03
alias iLO ESXi-03 (DL360p Gen8)
address 192.168.21.103
hostgroups ilo-servers
}
Datei: ~/etc/naemon/conf.d/commands/check_hpasm.cfg
define command {
command_name check_hpasm
command_line $USER1$/check_hpasm -H $HOSTADDRESS$ -C $ARG1$ --perfdata=short
}
Datei: ~/etc/naemon/conf.d/services/hpasm-services.cfg
define service {
use generic-service
hostgroup_name ilo-servers
service_description HP Hardware Health
check_command check_hpasm!public
check_interval 5
}
Problem 6: Hostgroup nicht gefunden
omd check
Fehlermeldung:
Error: Could not find any hostgroup matching 'ilo-servers'
Die Hostgroup-Definition fehlte oder wurde nicht korrekt geladen.
Die Lösung: Sicherstellen, dass die Hostgroup im selben File oder vor den Services definiert ist. Nach Korrektur:
omd check && omd reload naemon
Status prüfen via Livestatus
echo "GET services
Filter: description = HP Hardware Health
Columns: host_name description state plugin_output" | unixcat ~/tmp/run/live
Ergebnis:
ilo-esxi-01;HP Hardware Health;1;WARNING - system fan overall status is degraded, fan 6 (system) degraded...
ilo-esxi-02;HP Hardware Health;2;CRITICAL - dimm module 0:12 (module 12 @ cartridge 0) needs attention (degraded)...
ilo-esxi-03;HP Hardware Health;0;OK - System: 'proliant dl360p gen8', hardware working fine...
PNP4Nagios Graphing
Nach einigen Check-Durchläufen:
ls ~/var/pnp4nagios/perfdata/ilo-esxi-01/
HP_Hardware_Health.xml
HP_Hardware_Health_fan_1.rrd
HP_Hardware_Health_fan_2.rrd
...
HP_Hardware_Health_temp_1.rrd
HP_Hardware_Health_temp_2.rrd
...
8 Lüfter, 41 Temperatursensoren, 2 Power Consumption Werte – perfekt!
Problem 7: PNP4Nagios zeigt Fehler statt Graphen
Beim Aufruf von PNP4Nagios im Browser:
Please check the documentation for information about the following error.
Undefined array key 14
file [line]:
templates.dist/check_hpasm.php [35]:
Das mitgelieferte PNP4Nagios-Template für check_hpasm definiert nur 14 Farben:
$colors=array("CC3300","CC3333","CC3366",...); // nur 14 Einträge
Aber unser DL360p Gen8 hat 41 Temperatursensoren! Bei Sensor 15 gibt es keinen Farbeintrag mehr → Array-Index-Fehler.
Die Lösung: Angepasstes Template mit mehr Farben und zyklischer Verwendung:
Datei: ~/share/pnp4nagios/htdocs/templates/check_hpasm.php
<?php
#
# Fixed check_hpasm template with more colors
#
$colors=array(
"CC3300","CC3333","CC3366","CC3399","CC33CC","CC33FF",
"336600","336633","336666","336699","3366CC","3366FF",
"33CC33","33CC66","33CC99","33CCCC","33CCFF","339900",
"339933","339966","339999","3399CC","3399FF","993300",
"993333","993366","993399","9933CC","9933FF","996600",
"996633","996666","996699","9966CC","9966FF","999900",
"999933","999966","9999CC","9999FF","00CC00","00CC33",
"00CC66","00CC99","00CCCC","00CCFF","0099FF","0066FF"
);
$max_rpm=5400;
$col_f=0;
$col_t=0;
$num_colors=count($colors);
foreach($DS as $KEY => $VAL){
if(preg_match('/^fan_/',$NAME[$KEY])){
$ds_name[1] = "Fan Speed";
$opt[1] = "-X0 --slope-mode -u $max_rpm --vertical-label \"RPMs\" --title \"HPASM Fan Speed\" ";
if(!isset($def[1])){
$def[1] = "";
}
$def[1] .= "DEF:ovar$KEY=$RRDFILE[$KEY]:$DS[$KEY]:AVERAGE " ;
$def[1] .= "CDEF:var$KEY=ovar$KEY,100,/,$max_rpm,* " ;
// Modulo-Operator für zyklische Farbverwendung
$def[1] .= "LINE:var$KEY#".$colors[$col_f % $num_colors].":\"$NAME[$KEY]\" " ;
$def[1] .= "GPRINT:var$KEY:LAST:\"%6.0lf RPM LAST \" ";
$def[1] .= "GPRINT:var$KEY:MAX:\"%6.0lf RPM MAX \" ";
$def[1] .= "GPRINT:var$KEY:AVERAGE:\"%6.2lf RPM AVERAGE \\n\" ";
$col_f++;
}
if(preg_match('/^temp_/',$NAME[$KEY])){
$ds_name[2] = "Temperature";
$opt[2] = "--slope-mode --vertical-label \"Grad Celsius\" --title \"HPASM Temperature\" ";
if(!isset($def[2])){
$def[2] = "";
}
$def[2] .= "DEF:var$KEY=$RRDFILE[$KEY]:$DS[$KEY]:AVERAGE " ;
// Modulo-Operator für zyklische Farbverwendung
$def[2] .= "LINE:var$KEY#".$colors[$col_t % $num_colors].":\"$NAME[$KEY]\\t\" " ;
$def[2] .= "GPRINT:var$KEY:LAST:\"%6.0lf $UNIT[$KEY] LAST \" ";
$def[2] .= "GPRINT:var$KEY:MAX:\"%6.0lf $UNIT[$KEY] MAX \" ";
$def[2] .= "GPRINT:var$KEY:AVERAGE:\"%6.2lf $UNIT[$KEY] AVERAGE \\n\" ";
$col_t++;
}
// Zusätzlich: Power Consumption Graph
if(preg_match('/^pc_/',$NAME[$KEY])){
$ds_name[3] = "Power Consumption";
$opt[3] = "--slope-mode --vertical-label \"Watts\" --title \"HPASM Power Consumption\" ";
if(!isset($def[3])){
$def[3] = "";
}
$def[3] .= "DEF:var$KEY=$RRDFILE[$KEY]:$DS[$KEY]:AVERAGE " ;
$def[3] .= "LINE:var$KEY#".$colors[$KEY % $num_colors].":\"$NAME[$KEY]\" " ;
$def[3] .= "GPRINT:var$KEY:LAST:\"%6.0lf W LAST \" ";
$def[3] .= "GPRINT:var$KEY:MAX:\"%6.0lf W MAX \" ";
$def[3] .= "GPRINT:var$KEY:AVERAGE:\"%6.2lf W AVERAGE \\n\" ";
}
}
?>
Nach dem Fix:
omd reload apache
Jetzt werden drei separate Graphen angezeigt:
- Fan Speed – Alle 8 Lüfter
- Temperature – Alle 41 Temperatursensoren
- Power Consumption – Stromverbrauch beider Netzteile
Was haben wir gelernt?
Die sieben Stolpersteine im Überblick
| Problem | Ursache | Lösung |
|---|---|---|
| “Failed to create new file” | Verzeichnisse fehlen | mkdir -p ~/etc/naemon/conf.d/{hosts,..} |
| SNMP OID “Unknown” | MIBs nicht geladen | Numerische OIDs verwenden |
| iLO SNMP Timeout | Community nicht gesetzt | Im iLO Web-UI “Read Community” eintragen |
| Perl Locale-Warnung | LC_ALL nicht gesetzt | export LC_ALL=C in ~/.profile |
| –perfdata ohne Argument | Compile-Option fehlt | --perfdata=short verwenden |
| Hostgroup nicht gefunden | Definition fehlt | Hostgroup im Config-File ergänzen |
| PNP “Undefined array key” | Zu wenige Farben | Eigenes Template mit 48+ Farben |
Der eigentliche Gewinn
Ja, das Setup war aufwändiger als erwartet. Aber das Monitoring hat sich sofort bezahlt gemacht:
- Fan 6 auf Server 1 ist degradiert – hätte ohne Redundanz zum Thermal-Shutdown geführt
- DIMM 0:12 auf Server 2 ist defekt – ECC korrigiert noch, aber das Modul muss raus
Beide Probleme wären ohne aktives Hardware-Monitoring wahrscheinlich erst aufgefallen, wenn es zu spät gewesen wäre. (Ich wusste natürlich davon!)
Dateistruktur für die Nachwelt
~/etc/naemon/conf.d/
├── commands/
│ └── check_hpasm.cfg
├── hosts/
│ └── ilo-hosts.cfg
└── services/
└── hpasm-services.cfg
~/share/pnp4nagios/htdocs/templates/
└── check_hpasm.php # Angepasstes Template
Fazit
Sieben Probleme, sieben Lösungen. Ein langer Abend mit SNMP, Perl und zu vielen Temperatursensoren. Aber am Ende steht ein solides Hardware-Monitoring, das auch die bekannten Defekte gefunden hat (guter proof ;) ).
War es den Aufwand wert? Definitiv. Hardware-Probleme zu finden, bevor sie kritisch werden, ist unbezahlbar.