IPMI Sensor Thresholds anpassen

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

IPMI Sensoren der Sensor Klasse Threshold liefern einen analogen Messwert (z.B. aktuelle Temperatur) mit zugehörigen Unter-/Obergrenzen. Bei Bedarf können Sie die vordefinierten Grenzwerte (Thresholds) an Ihre individuellen Bedürfnisse anpassen. Die angepassten Werte werden sofort gültig, werden allerdings nicht bei allen Systemen im SDR permanent gespeichert. Wenn Sie den Server vom Stromnetz trennen und danach wieder anschließen und hochfahren, müssen Sie bei solchen Systemen die Anpassungen der Grenzwerte erneut vornehmen (z.B. über ein Init-Skript unter Linux).[1] Wir zeigen Ihnen in diesem Artikel die Anpassung der Thresholds am Beispiel von ipmi-sensors-config aus dem FreeIPMI Paket und ipmitool. Wir verwenden dabei einen Intel SR2500 Server und passen den Sensor Serverboard Temp an.

Systeme mit permanenter Speicherung von angepassten Thresholds

Bei folgendem System haben wir eine permanente Speicherung von angepassten Werten beobachtet:

  • Supermicro X9SCM-F Mainboard (getestet mit IPMI Firmware v1.30, Anpassung des Sensors FAN 1)
  • Supermicro X11SSH-F Mainboard (getestet mit IPMI Firmware v1.25, Anpassung des Sensors FAN4)

Wie in der Einleitung geschrieben, findet eine solche permanente Speicherung im SDR aber nicht bei allen Systemen statt.

Grenzwerte

IPMI sieht bis zu sechs mögliche Grenzwerte vor. Diese sind:

  • unr: Upper Non-Recoverable
  • ucr: Upper Critical
  • unc: Upper Non-Critical
  • lnc: Lower Non-Critical
  • lcr: Lower Critical
  • lnr: Lower Non-Recoverable

Einschränkungen

Sie können nur Grenzwerte verändern, die ursprünglich auch vorhanden sind. Grenzwerte, die vom Hersteller nicht vorgesehen sind können auf diese Weise nicht nachgetragen werden. IPMI sieht explizit vor, nur bestimmte Grenzwerte für Threshold-Sensoren zu nutzen. Genaue Infos finden Sie dazu in der "Settable Threshold Mask" und "Readable Threshold Mask" in der IPMI Spezifikation.[2]

Bei manchen Sensoren können darüber hinaus nur bestimmte Werte gesetzt werden. So erlauben etwa die Sensoren zur Messung der Lüfterdrehzahlen (z.B. Fan1) eines Supermicro X8DT3-F Mainboards nur Werte im Abstand von 135 RPMs (z.B. 270/405/540/675/...).

ipmi-sensors-config (FreeIPMI)

FreeIPMI bietet das Tool ipmi-sensors-config zur Anpassung der Grenzwerte.

Grenzwerte auslesen

Mit der Option -L können Sie einzelnen Sensoren auflisten. ipmi-sensors-config fügt den Sensornamen dabei eine Nummer hinzu, da bei manchen Servern gleiche Sensornamen für mehrere Sensoren verwendet werden. Mit -o -S können Sie die Grenzwerte anschließend auslesen:

user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -l admin -u admin -p **** -L
1_BB_+1.2V_Vtt
2_BB_+1.5V_AUX
3_BB_+1.5V
4_BB_+1.8V
5_BB_+3.3V
6_BB_+3.3V_STB
7_BB_+1.5V_ESB
8_BB_+5V
9_BB_+12V_AUX
10_BB_+0.9V
11_Serverboard_Temp
[...]
user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -u admin -p **** -l ADMIN -o -S 11_Serverboard_Temp
Section 11_Serverboard_Temp
	## Possible values: Yes/No
	Enable_All_Event_Messages                                                   Yes
	## Possible values: Yes/No
	Enable_Scanning_On_This_Sensor                                              Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Lower_Non_Critical_Going_Low                         Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Lower_Critical_Going_Low                             Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Upper_Non_Critical_Going_High                        Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Upper_Critical_Going_High                            Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Lower_Non_Critical_Going_Low                       Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Lower_Critical_Going_Low                           Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Upper_Non_Critical_Going_High                      Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Upper_Critical_Going_High                          Yes
	## Give valid input for sensor type = Temperature; units = degrees C
	Lower_Non_Critical_Threshold                                                10.000000
	## Give valid input for sensor type = Temperature; units = degrees C
	Lower_Critical_Threshold                                                    5.000000
	## Give valid input for sensor type = Temperature; units = degrees C
	Upper_Non_Critical_Threshold                                                61.000000
	## Give valid input for sensor type = Temperature; units = degrees C
	Upper_Critical_Threshold                                                    66.000000
	## Give valid input for sensor type = Temperature; units = degrees C; 'None' to not use hysteresis
	Positive_Going_Threshold_Hysteresis                                         2.000000
	## Give valid input for sensor type = Temperature; units = degrees C; 'None' to not use hysteresis
	Negative_Going_Threshold_Hysteresis                                         2.000000
EndSection
user@ubuntu-10-10:~$ 

Grenzwerte anpassen

Mit -c -e können Sie einzelne Grenzwerte anpassen:

user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -u admin -p **** -l ADMIN -c -e 11_Serverboard_Temp:Upper_Non_Critical_Threshold=51
user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -u admin -p **** -l ADMIN -c -e 11_Serverboard_Temp:Upper_Critical_Threshold=56
user@ubuntu-10-10:~$ 

Wenn Sie mehrere Werte anpassen möchten, können Sie auch die gesamten Grenzwerte in eine Datei auslesen, diese bearbeiten, und anschließend hochladen:

user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -u admin -p **** -l ADMIN --checkout -n sensors.orig
user@ubuntu-10-10:~$ cp sensors.orig sensors.new
user@ubuntu-10-10:~$ vi sensors.new
user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -u admin -p **** -l ADMIN --commit -n sensors.new
user@ubuntu-10-10:~$ 

Grenzwerte überprüfen

Mit -o -S lesen Sie die Grenzwerte nach der Anpassung wieder aus:

user@ubuntu-10-10:~$ ipmi-sensors-config -h 192.168.1.211 -u admin -p **** -l ADMIN -o -S 11_Serverboard_Temp
Section 11_Serverboard_Temp
	## Possible values: Yes/No
	Enable_All_Event_Messages                                                   Yes
	## Possible values: Yes/No
	Enable_Scanning_On_This_Sensor                                              Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Lower_Non_Critical_Going_Low                         Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Lower_Critical_Going_Low                             Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Upper_Non_Critical_Going_High                        Yes
	## Possible values: Yes/No
	Enable_Assertion_Event_Upper_Critical_Going_High                            Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Lower_Non_Critical_Going_Low                       Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Lower_Critical_Going_Low                           Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Upper_Non_Critical_Going_High                      Yes
	## Possible values: Yes/No
	Enable_Deassertion_Event_Upper_Critical_Going_High                          Yes
	## Give valid input for sensor type = Temperature; units = degrees C
	Lower_Non_Critical_Threshold                                                10.000000
	## Give valid input for sensor type = Temperature; units = degrees C
	Lower_Critical_Threshold                                                    5.000000
	## Give valid input for sensor type = Temperature; units = degrees C
	Upper_Non_Critical_Threshold                                                51.000000
	## Give valid input for sensor type = Temperature; units = degrees C
	Upper_Critical_Threshold                                                    56.000000
	## Give valid input for sensor type = Temperature; units = degrees C; 'None' to not use hysteresis
	Positive_Going_Threshold_Hysteresis                                         2.000000
	## Give valid input for sensor type = Temperature; units = degrees C; 'None' to not use hysteresis
	Negative_Going_Threshold_Hysteresis                                         2.000000
EndSection
user@ubuntu-10-10:~$ 

ipmitool

ipmitool ermöglicht ebenfalls die Anpassung von Grenzwerten. Allerdings nutzt ipmitool zur Identifikation rein den Sensornamen, was bei Servern mit mehreren Sensoren mit dem gleichen Namen zu Problemen führen kann.

Grenzwerte auslesen

Mit ipmitool sensor get SENSORNAME lesen Sie die aktuellen Grenzwerte des Sensors aus:

user@ubuntu-10-10:~$ ipmitool -I lan -H 192.168.1.211 -U admin -P **** sensor get "Serverboard Temp"
Locating sensor record...
Sensor ID              : Serverboard Temp (0x30)
 Entity ID             : 7.1
 Sensor Type (Analog)  : Temperature
 Sensor Reading        : 32 (+/- 1.500) degrees C
 Status                : ok
 Lower Non-Recoverable : na
 Lower Critical        : 5.000
 Lower Non-Critical    : 10.000
 Upper Non-Critical    : 61.000
 Upper Critical        : 66.000
 Upper Non-Recoverable : na
 Assertion Events      : 
 Assertions Enabled    : lnc- lcr- unc+ ucr+ 
 Deassertions Enabled  : lnc- lcr- unc+ ucr+ 

user@ubuntu-10-10:~$

Grenzwerte anpassen

user@ubuntu-10-10:~$ ipmitool -I lan -H 192.168.1.211 -U admin -P **** sensor thresh "Serverboard Temp" unc 51
Locating sensor record 'Serverboard Temp'...
Setting sensor "Serverboard Temp" Upper Non-Critical threshold to 51.000
user@ubuntu-10-10:~$ ipmitool -I lan -H 192.168.1.211 -U admin -P **** sensor thresh "Serverboard Temp" ucr 56
Locating sensor record 'Serverboard Temp'...
Setting sensor "Serverboard Temp" Upper Critical threshold to 56.000
user@ubuntu-10-10:~$

Grenzwerte überprüfen

Die neuen Grenzwerte sind nun gültig, wie ipmitool sensor get "Serverboard Temp" zeigt:

user@ubuntu-10-10:~$ ipmitool -I lan -H 192.168.1.211 -U admin -P **** sensor get "Serverboard Temp"
Locating sensor record...
Sensor ID              : Serverboard Temp (0x30)
 Entity ID             : 7.1
 Sensor Type (Analog)  : Temperature
 Sensor Reading        : 33 (+/- 1.500) degrees C
 Status                : ok
 Lower Non-Recoverable : na
 Lower Critical        : 5.000
 Lower Non-Critical    : 10.000
 Upper Non-Critical    : 51.000
 Upper Critical        : 56.000
 Upper Non-Recoverable : na
 Assertion Events      : 
 Assertions Enabled    : lnc- lcr- unc+ ucr+ 
 Deassertions Enabled  : lnc- lcr- unc+ ucr+ 

user@ubuntu-10-10:~$ 

Im Sensor Data Record Repository (SDR) sind weiterhin die ursprünglichen Grenzwerte hinterlegt. Wenn Sie den Server vom Stromnetz trennen und erneut anschließen, gelten daher wieder die ursprünglichen Grenzwerte.

user@ubuntu-10-10:~$ ipmitool -I lan -H 192.168.1.211 -U admin -P **** sdr get "Serverboard Temp"
Sensor ID              : Serverboard Temp (0x30)
 Entity ID             : 7.1 (System Board)
 Sensor Type (Analog)  : Temperature
 Sensor Reading        : 33 (+/- 1.500) degrees C
 Status                : ok
 Nominal Reading       : 38.000
 Normal Minimum        : 20.000
 Normal Maximum        : 55.000
 Upper critical        : 66.000
 Upper non-critical    : 61.000
 Lower critical        : 5.000
 Lower non-critical    : 10.000
 Positive Hysteresis   : 2.000
 Negative Hysteresis   : 2.000
 Minimum sensor range  : Unspecified
 Maximum sensor range  : Unspecified
 Event Message Control : Per-threshold
 Readable Thresholds   : lcr lnc unc ucr 
 Settable Thresholds   : lcr lnc unc ucr 
 Threshold Read Mask   : lcr lnc unc ucr 
 Assertion Events      : 
 Assertions Enabled    : lnc- lcr- unc+ ucr+ 
 Deassertions Enabled  : lnc- lcr- unc+ ucr+ 

user@ubuntu-10-10:~$ 

Einzelnachweise

  1. Some sensor configuration may not be stored in non-volatile memory, so users may wish to veryify that new configurations exist after system reboots or to always run ipmi-sensors-config during system initialization. (Manpage ipmi-sensors-config)
  2. http://download.intel.com/design/servers/ipmi/IPMI2_0E4_Markup_061209.pdf auf Seite 521 (Seite 549 im PDF)


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

FreeIPMI authentication type unavailable for attempted privilege level
IPMI Konfiguration für Supermicro Server mittels ipmicfg
Windows über die serielle Schnittstelle debuggen