Plugin IPMI Sensor Monitoring
Artykuł ten opisuje konfigurację pluginu IPMI Sensor Monitoring w Nagios lub Icinga. Dzięki temu pluginowi możliwy jest monitoring serwera z Nagios/Icinga, konkretnie kontrola prędkości wentylatorów, temperatury, napięcia, zużycia energii, mocy zasilacza itd.
Download
Plugin w następujących wersjach dostępny jest na stronie Thomas Krenn Open Source Software:
- Plugin IPMI wersji 3.x opierający się na FreeIPMI; zalecana wersja (plugin Perl)
- Plugin IPMI wersji 2.x opierający się na FreeIPMI; starsza wersja (plugin Bash)
Listy dyskusyjne
Do pluginu IPMI dostępne są 2 listy dyskusyjne:
- https://github.com/thomas-krenn/check_ipmi_sensor_v3/issues
- https://github.com/thomas-krenn/check_ipmi_sensor_v2/issues
Artykuł z magazynu ADMIN
Trzystronny artykuł odnośnie do pluginu znajduje się w ADMIN Magazin 01/2011(j. niem). Czytelnicy wiki Thomas Krenn mogą go tu pobrać:
- Lebenszeichen - Serverhardware mit dem IPMI-Plugin für Nagios überwachen (PDF z magazynu ADMIN 01/2011)
Konfiguracja pluginu wersja 3.x
Poniższe kroki opisują konfiguracje konieczną do zastosowania pluginu.
Wymagania programowe
Plugin IPMI Sensor Monitoring wymaga poniższego oprogramowania:
- Nagios lub Icinga (np. Icinga 1.6.1 w Ubuntu 12.04 Precise)
- FreeIPMI
- libipc-run-perl
Import pluginu
Aby plugin mógł zostać wykorzystany musi zostać najpierw importowany do oprogramowania Nagios. W przypadku zastosowaniu pluginu w Debianie 5 musi on zostać skopiowany w następujące miejsce:
- /usr/lib/nagios/plugins/check_ipmi_sensor
Definicja polecenia
Zdefiniowanie polecenia check_ipmi_sensor w commands.cfg (pod Debianem 5 np. w /etc/nagios3/commands.cfg):
define command{ command_name check_ipmi_sensor command_line $USER1$/check_ipmi_sensor -H $_HOSTIPMI_IP$ -f $ARG1$ }
Definicja hosta
W definicji poszczególnego hosta należy skonfigurować adres IP interfejsu IPMI jako Custom Object Variables[1] _ipmi_ip
:
define host{ use linux-server host_name centos4 alias centos4 address 192.168.1.151 _ipmi_ip 192.168.1.211 }
Definicja serwisu
Definicja serwisu wymaga jako parametru jedynie ścieżkę do pliku konfiguracyjnego FreeIPMI:
define service{ use generic-service host_name centos4 service_description IPMI check_command check_ipmi_sensor!/etc/ipmi-config/ipmi.cfg }
Konfiguracja FreeIPMI
W pliku konfiguracyjnym FreeIPMI zawarta jest nazwa użytkownika, hasło, Channel-Privilege-Level oraz opcjonalnie dodatkowe parametry konfiguracji FreeIPMI:
username monitoring password ao5$snNc! privilege-level user
Plik konfiguracyjny może nadal zawierać parametry konfiguracyjne FreeIPMI, jak Workaround-Flags (w tym przykładzie jako workaround następującego problemu: FreeIPMI query to Supermicro Systems fails via LAN channel):
username monitoring password ao5$snNc! privilege-level user ipmi-sensors-workaround-flags nochecksumcheck,noauthcodecheck
Przykład
Następujący przykład pokazuje wynik z pluginu podczas odczytu z 1U Intel single CPU CSE512 [Wersja 3.*]) z płytą główną X9SCM-F (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:~$
Konfiguracja pluginu wersja 2.x
Poniższe kroki opisują konfiguracje konieczną dla pluginu.
Wymagania programowe
Plugin IPMI Sensor Monitoring wymaga poniższego oprogramowania:
- Nagios lub Icinga (vide Instalacja oprogramowania Nagios w Debianie 5.0 Lenny)
- FreeIPMI od wersji 0.5.1, w wersji 0.8 należy korzystać z opcji legacy-output
- gawk
Import pluginu
Aby plugin mógł zostać wykorzystany musi zostać najpierw importowany do oprogramowania Nagios. W przypadku zastosowaniu pluginu w Debianie 5 musi on zostać skopiowany w następujące miejsce:
- /usr/lib/nagios/plugins/check_ipmi_sensor
Definicja polecenia
Zdefiniowanie polecenia check_ipmi_sensor w commands.cfg (pod Debianem 5 np. w /etc/nagios3/commands.cfg):
define command{ command_name check_ipmi_sensor command_line $USER1$/check_ipmi_sensor -H $_HOSTIPMI_IP$ -f $ARG1$ }
Definicja hosta
W definicji poszczególnego hosta należy skonfigurować adres IP interfejsu IPMI jako Custom Object Variables[1] _ipmi_ip
:
define host{ use linux-server host_name centos4 alias centos4 address 192.168.1.151 _ipmi_ip 192.168.1.211 }
Definicja serwisu
Definicja serwisu wymaga jako parametru jedynie ścieżkę do pliku konfiguracyjnego FreeIPMI:
define service{ use generic-service host_name centos4 service_description IPMI check_command check_ipmi_sensor!/etc/ipmi-config/ipmi.cfg }
Konfiguracja FreeIPMI do wersji 0.7.*
W pliku konfiguracyjnym FreeIPMI zawarta jest nazwa użytkownika, hasło, Channel-Privilege-Level oraz opcjonalnie dodatkowe parametry konfiguracji FreeIPMI:
username monitor password ao5$snNc! privilege-level user
Konfiguracja FreeIPMI 0.8.* i nowszych wersji
W wersji 0.8.* do monitoringu IPMI konieczna jest opcja legacy-output. Opcja ta może zostać łatwo dodana w pliku konfiguracyjnym FreeIPMI:
username monitor password ao5$snNc! privilege-level user ipmimonitoring-legacy-output on
Poza tym może zostać dodana opcja ipmi-sensors-interpret-oem-data on
. Przez co sensory OEM są interpretowane (jeżeli sensory OEM systemu są już znane FreeIPMI - np. sensor temp. CPU1 płyty głównej Supermicro X8DT3-F, odczytany przez FreeIPMI wersja 1.0.1):
username monitor password ao5$snNc! privilege-level user ipmimonitoring-legacy-output on ipmi-sensors-interpret-oem-data on
W przypadku korzystania z pluginu bez pliku konfiguracyjnego dostępna jest opcja -O:
./check_ipmi_sensor -H 10.1.102.10 -U monitor -P ***** -L user -O '--legacy-output --interpret-oem-data'
Konfiguracja pluginu wersja 1.x
Informacje odnośnie konfiguracji pluginu w wersji 1.x znajdują się w następującym artykule:
Możliwe rozszerzenia pluginu
Zaplanowane rozszerzenia przyszłych wersji (jeszcze nie dostępne):
- 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)
- option to change performance data output to omit quotes and to use underscores instead, e.g. to return
- 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
Odnośniki
Dalsze informacje
- Podstawowe informacje o IPMI
- IPMI Sensor Monitoring Plugin (www.monitoringexchange.org)
- IPMI Sensor Monitoring Plugin (exchange.nagios.org)