10 IPMI agent
Omówienie
Możesz monitorować stan i dostępność urządzeń Intelligent Platform Management Interface (IPMI) w Zabbix. Aby wykonywać kontrole IPMI, serwer Zabbix musi być początkowo skonfigurowany z obsługą IPMI.
IPMI to standardowy interfejs do zdalnego zarządzania typu "lights-out" lub "out-of-band" systemami komputerowymi. Umożliwia monitorowanie stanu sprzętu bezpośrednio z tak zwanych kart zarządzania "out-of-band", niezależnie od systemu operacyjnego lub od tego, czy maszyna jest w ogóle włączona.
Monitorowanie IPMI w Zabbix działa tylko dla urządzeń obsługujących IPMI (HP iLO, DELL DRAC, IBM RSA, Sun SSP itp.).
Proces menedżera IPMI planuje kontrole IPMI wykonywane przez pollery IPMI. Host jest zawsze odpytywany w danym momencie tylko przez jeden poller IPMI, co zmniejsza liczbę otwartych połączeń do kontrolerów BMC. Dzięki temu można bezpiecznie zwiększyć liczbę pollerów IPMI bez obaw o przeciążenie kontrolerów BMC. Proces menedżera IPMI jest uruchamiany automatycznie, gdy uruchomiony zostanie co najmniej jeden poller IPMI.
Zobacz także znane problemy dotyczące kontroli IPMI.
Konfiguracja
Konfiguracja hosta
Aby przetwarzać kontrole IPMI, host musi być skonfigurowany. Należy dodać interfejs IPMI z odpowiednim adresem IP i numerem portu oraz zdefiniować parametry uwierzytelniania IPMI.
Więcej informacji można znaleźć w sekcji konfiguracja hostów.
Konfiguracja serwera
Domyślnie serwer Zabbix nie jest skonfigurowany do uruchamiania żadnych procesów odpytywania IPMI, dlatego wszelkie dodane pozycje IPMI nie będą działać. Aby to zmienić, otwórz jako root plik konfiguracyjny serwera Zabbix (zabbix_server.conf) i znajdź następujący wiersz:
# StartIPMIPollers=0
Odkomentuj go i ustaw liczbę procesów odpytywania na przykład na 3, tak aby wyglądał następująco:
StartIPMIPollers=3
Zapisz plik, a następnie uruchom ponownie zabbix_server.
Konfiguracja pozycji
Podczas konfigurowania pozycji na poziomie hosta:
- Wybierz „IPMI agent” jako Typ
- Wprowadź klucz pozycji, który jest unikalny
w obrębie hosta (na przykład
ipmi.fan.rpm) - W polu Interfejs hosta wybierz odpowiedni interfejs IPMI (adres IP i port). Pamiętaj, że interfejs IPMI musi istnieć na hoście.
- Określ Czujnik IPMI (na przykład „FAN MOD 1A RPM” w Dell
Poweredge), z którego ma być pobierana metryka. Domyślnie należy
podać identyfikator czujnika. Możliwe jest również użycie prefiksów
przed wartością:
id:— aby określić identyfikator czujnika;name:— aby określić pełną nazwę czujnika. Może to być przydatne w sytuacjach, gdy czujniki można rozróżnić tylko przez podanie pełnej nazwy.
- Wybierz odpowiedni typ informacji („Numeryczny (zmiennoprzecinkowy)” w tym przypadku; dla czujników dyskretnych — „Numeryczny (bez znaku)”), jednostki (najprawdopodobniej „rpm”) oraz wszelkie inne wymagane atrybuty pozycji
Obsługiwane testy
agent IPMI obsługuje wbudowaną pozycję ipmi.get, która zwraca informacje związane z czujnikami IPMI i może być używana do wykrywania czujników IPMI.
Wartość zwracana: obiekt JSON
Timeout i zakończenie sesji
Timeouty komunikatów IPMI oraz liczba ponowień są zdefiniowane w bibliotece OpenIPMI. Ze względu na obecną konstrukcję OpenIPMI nie ma możliwości skonfigurowania tych wartości w Zabbix, ani na poziomie interfejsu, ani pozycja.
Timeout bezczynności sesji IPMI dla LAN wynosi 60 +/-3 sekundy. Obecnie nie jest możliwe zaimplementowanie okresowego wysyłania polecenia Activate Session przy użyciu OpenIPMI. Jeśli z Zabbix do określonego BMC nie są wykonywane żadne kontrole pozycja IPMI przez czas dłuższy niż timeout sesji skonfigurowany w BMC, to następna kontrola IPMI po upływie tego timeoutu zakończy się timeoutem z powodu timeoutów pojedynczych komunikatów, ponowień lub błędu odbioru. Następnie otwierana jest nowa sesja i inicjowane jest pełne ponowne skanowanie BMC. Może zostać otwarty nowy port UDP do zarządzania nową sesją. Bezczynność jest definiowana jako brak zarówno żądań wychodzących, jak i odpowiedzi przychodzących. Jeśli chcesz uniknąć niepotrzebnych ponownych skanowań BMC, zaleca się ustawienie interwału odpytywania pozycja IPMI poniżej timeoutu bezczynności sesji IPMI skonfigurowanego w BMC.
Uwagi dotyczące dyskretnych czujników IPMI
Aby znaleźć czujniki na hoście, uruchom serwer Zabbix z włączonym DebugLevel=4. Poczekaj kilka minut i znajdź rekordy wykrywania czujników w pliku dziennika serwera Zabbix:
$ grep 'Added sensor' zabbix_server.log
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'
Aby zdekodować typy i stany czujników IPMI, dostępna jest kopia specyfikacji IPMI 2.0 (należy pamiętać, że nie są planowane dalsze aktualizacje specyfikacji IPMI).
Pierwszym parametrem, od którego należy zacząć, jest "reading_type". Użyj "Table 42-1, Event/Reading Type Code Ranges" ze specyfikacji, aby zdekodować kod "reading_type". Większość czujników w naszym przykładzie ma "reading_type:0x1", co oznacza czujnik typu "threshold". "Table 42-3, Sensor Type Codes" pokazuje, że "type:0x1" oznacza czujnik temperatury, "type:0x2" - czujnik napięcia, "type:0x4" - wentylator itd. Czujniki threshold są czasami nazywane czujnikami "analogowymi", ponieważ mierzą parametry ciągłe, takie jak temperatura, napięcie czy obroty na minutę.
Inny przykład - czujnik z "reading_type:0x3". "Table 42-1, Event/Reading Type Code Ranges" mówi, że kody typu od 02h do 0Ch oznaczają czujnik "Generic Discrete". Czujniki dyskretne mają do 15 możliwych stanów (innymi słowy - do 15 znaczących bitów). Na przykład dla czujnika 'CATERR' z "type:0x7" tabela "Table 42-3, Sensor Type Codes" pokazuje, że ten typ oznacza "Processor", a znaczenie poszczególnych bitów jest następujące: 00h (najmłodszy bit) - IERR, 01h - Thermal Trip itd.
W naszym przykładzie jest kilka czujników z "reading_type:0x6f". Dla
tych czujników tabela "Table 42-1, Event/Reading Type Code Ranges" zaleca
użycie "Table 42-3, Sensor Type Codes" do dekodowania znaczenia bitów.
Na przykład czujnik 'Power Unit Stat' ma typ "type:0x9", co oznacza
"Power Unit". Offset 00h oznacza "PowerOff/Power Down". Innymi słowy, jeśli
najmłodszy bit ma wartość 1, to serwer jest wyłączony. Aby sprawdzić ten
bit, można użyć funkcji bitand z
maską '1'. Wyrażenie wyzwalacza może wyglądać następująco:
bitand(last(/www.example.com/Power Unit Stat,#1),1)=1
aby ostrzec o wyłączeniu zasilania serwera.
Uwagi dotyczące nazw czujników dyskretnych w OpenIPMI-2.0.16, 2.0.17, 2.0.18 i 2.0.19
Nazwy czujników dyskretnych w OpenIPMI-2.0.16, 2.0.17 i 2.0.18 często
mają na końcu dodane dodatkowe "0" (lub inną cyfrę albo literę).
Na przykład, podczas gdy ipmitool i OpenIPMI-2.0.19 wyświetlają nazwy
czujników jako "PhysicalSecurity" lub "CATERR", w OpenIPMI-2.0.16, 2.0.17
i 2.0.18 nazwy te to odpowiednio "PhysicalSecurity0" lub "CATERR0".
Podczas konfigurowania pozycji IPMI w serwerze Zabbix z użyciem OpenIPMI-2.0.16, 2.0.17 i 2.0.18 należy używać tych nazw zakończonych na "0" w polu IPMI sensor pozycji agenta IPMI. Gdy serwer Zabbix zostanie zaktualizowany do nowej dystrybucji Linuksa, która używa OpenIPMI-2.0.19 (lub nowszej), pozycje z tymi dyskretnymi czujnikami IPMI staną się "NOT SUPPORTED". Należy zmienić ich nazwy IPMI sensor (usunąć końcowe '0') i odczekać pewien czas, aż ponownie staną się "Enabled".
Uwagi dotyczące jednoczesnej dostępności czujnika progowego i czujnika dyskretnego
Niektóre agenty IPMI udostępniają zarówno czujnik progowy, jak i czujnik dyskretny pod tą samą nazwą. Zawsze preferowany jest czujnik progowy.
Uwagi dotyczące zakończenia połączenia
Jeśli kontrole IPMI nie są wykonywane (z dowolnego powodu: wszystkie pozycje IPMI hosta są wyłączone/nieobsługiwane, host jest wyłączony/usunięty, host jest w trybie konserwacji itp.), połączenie IPMI zostanie zakończone przez serwer Zabbix lub proxy w ciągu 3 do 4 godzin, w zależności od czasu uruchomienia serwera/proxy Zabbix.