Plugin IPMI Sensor Monitoring

Z Thomas-Krenn-Wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Pierwszy zasilacz serwera nie dostarcza prądu - Icinga dzięki pluginowi IPMI Sensor Monitoring zgłasza niezwłocznie zaistniały problem.

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

Trzystronny artykuł "Lebenszeichen" z czasopisma ADMIN 01/2011 (j. niem) pokazuje jak z pluginem IPMI można skutecznie monitorować swój hardware.

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:

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

Konfiguracja pluginu wersja 3.x

Otrzymane dane mogą zostać przeanalizowane np. w PNP4Nagios. W tym przykładzie widoczny jest zwiększony pobór mocy drugiego zasilacza, po tym jak o godzinie 17:00 pierwszy zasilacz został odłączony od prądu.

Poniższe kroki opisują konfiguracje konieczną do zastosowania pluginu.

Wymagania programowe

Plugin IPMI Sensor Monitoring wymaga poniższego oprogramowania:

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

Otrzymane dane mogą zostać przeanalizowane np. w PNP4Nagios. W tym przykładzie widoczny jest zwiększony pobór mocy drugiego zasilacza, po tym jak o godzinie 17:00 pierwszy zasilacz został odłączony od prądu.

Poniższe kroki opisują konfiguracje konieczną dla pluginu.

Wymagania programowe

Plugin IPMI Sensor Monitoring wymaga poniższego oprogramowania:

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

Powiązane artykuły

Konfiguracja IPMI w systemach Supermicro
Podstawowe informacje o IPMI
Przegląd rozwiązań zdalnego zarządzania