4 Kontrole IPMI
Przegląd
W Zabbix można monitorować stan i dostępność urządzeń Intelligent Platform Management Interface (IPMI). Aby wykonywać kontrole IPMI, serwer Zabbix musi być wcześniej skonfigurowany z obsługą IPMI.
IPMI to standaryzowany interfejs do zdalnego zarządzania systemami komputerowymi w trybie „lights-out” lub „out-of-band”. Umożliwia monitorowanie stanu sprzętu bezpośrednio z tak zwanych kart zarządzania „out-of-band”, niezależnie od systemu operacyjnego oraz 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 itd.).
Proces menedżera IPMI planuje kontrole IPMI wykonywane przez pollery IPMI. host jest zawsze odpytywany tylko przez jeden poller IPMI naraz, co zmniejsza liczbę otwartych połączeń do kontrolerów BMC. Dzięki temu można bezpiecznie zwiększać 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 sensorów IPMI
Aby znaleźć sensory na hoście, uruchom serwer Zabbix z włączonym DebugLevel=4. Odczekaj kilka minut i znajdź rekordy wykrywania sensorów w pliku logu 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'
Do dekodowania typów i stanów sensorów IPMI dostępna jest kopia specyfikacji IPMI 2.0 (proszę zauważyć, ż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ść sensorów w naszym przykładzie ma "reading_type:0x1", co oznacza sensor typu "threshold". "Table 42-3, Sensor Type Codes" pokazuje, że "type:0x1" oznacza sensor temperatury, "type:0x2" — sensor napięcia, "type:0x4" — wentylator itd. Sensory progowe są czasami nazywane sensorami "analogowymi", ponieważ mierzą ciągłe parametry, takie jak temperatura, napięcie, obroty na minutę.
Inny przykład — sensor z "reading_type:0x3". "Table 42-1, Event/Reading Type Code Ranges" mówi, że kody typu odczytu 02h-0Ch oznaczają sensor "Generic Discrete". Sensory dyskretne mają do 15 możliwych stanów (innymi słowy — do 15 znaczących bitów). Na przykład dla sensora 'CATERR' z "type:0x7" "Table 42-3, Sensor Type Codes" pokazuje, że ten typ oznacza "Processor", a znaczenie poszczególnych bitów jest następujące: 00h (bit najmniej znaczący) — IERR, 01h — Thermal Trip itd.
W naszym przykładzie jest kilka sensorów z "reading_type:0x6f". Dla
tych sensorów "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 sensor 'Power Unit Stat' ma typ "type:0x9", co oznacza
"Power Unit". Przesunięcie 00h oznacza "PowerOff/Power Down". Innymi słowy, jeśli
bit najmniej znaczący 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 ostrzegać 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.