This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

3 Pułapki SNMP

Przegląd

Odbieranie pułapek SNMP jest przeciwieństwem do pytania urządzeń SNMP.

W tym przypadku informacje wysyłane są z urządzeń SNMP i są przechowywane lub "łapane" przez Zabbix.

Zwykle pułapki wysyłane są w wyniku zmiany warunków, a agent łączy się do serwera na porcie 162 (w przeciwieństwie do portu 161, po stronie agenta, używanego do zapytań). Używanie pułapek może powodować niewielkie problemy podczas zapytań i może powodować utratę danych.

Odbieranie pułapek SNMP w Zabbix przeznaczone jest do pracy z snmptrapd i jednym z mechanizmów przekazywania pułapek do Zabbix - skrypt perl lub SNMPTT.

Przebieg odbierania pułapki:

  1. snmptrapd odbiera pułapkę
  2. snmptrapd przekazuje pułapkę do SNMPTT lub woła odbiornik pułapki Perl
  3. SNMPTT lub odbiornik pułapki Perl przetwarza, formatuje i zapisuje pułapkę do pliku
  4. proces przechwytywania Zabbix SNMP (trapper) czyta i przetwarza plik pułapki
  5. Dla każdej pułapki Zabbix szuka wszystkich pozycji "Pułapka SNMP" z interfejsem hosta zgodnym z otrzymanym adresem pułapki. Należy zauważyć, że podczas porównywania używane są jedynie "IP" lub "DNS" z interfejsu hosta.
  6. Dla każdej znalezionej pozycji, pułapka porównywana jest z wyrażeniem regularnym w "snmptrap[regex]". Pułapka jest ustawiana jako wartość wszystkich zgodnych pozycji. Jeżeli nie znaleziono żadnych pozycji ale istnieje pozycja "snmptrap.fallback", pułapka jest ustawiana jako jej wartość.
  7. Jeżeli pułapka nie została ustawiona jako wartość jakiejkolwiek pozycji, Zabbix domyślnie zaloguje ją jako niedopasowaną pułapkę. (Jest to skonfigurowane w "Logowanie niedopasowanych pułapek SNMP" w Administracja → Ogólne → Inne.)

3.1 Konfiguracja pułapek SNMP

Konfiguracja ponizszych pól jest specyficzna dla tego typu pozycji:

  • Host musi posiadać interfejs SNMP

W Konfiguracja → Hosty, w polu Interfejs hosta należy ustawić interfejs SNMP z poprawnym adresem IP lub DNS. Żeby znaleźć odpowiednie hosty, adresy każdej odebranej pułapki porównywane są do adresów IP lub DNS wszystkich interfejsów SNMP.

  • Konfiguracja pozycji

W polu Klucz należy użyć jednego z kluczy pułapki SNMP:

Klucz
Opis Zwracana wartość Komentarze
snmptrap[regex]
Wyłapuje wszystkie pułapki SNMP z adresów zgodnych z regex Pułapka SNMP Pozycja ta może być ustawiona tylko dla interfejsów SNMP.
Pozycja ta jest obsługiwana od Zabbix 2.0.0.
Uwaga: Począwszy od Zabbix 2.0.5, w kluczu tej pozycji obsługiwane są makra użytkownika i globalne wyrażenia regularne.
snmptrap.fallback
Wyłapuje wszystkie pułapki SNMP ze zgodnych adresów, które nie zostały wyłapane przez żadne pozycje snmptrap[] dla tego interfejsu Pułapka SNMP Pozycja ta może być ustawiona tylko dla interfejsów SNMP.
Pozycja ta jest obsługiwana od Zabbix 2.0.0.

Dopasowanie wieloliniowych wyrażeń regularnych nie jest jeszcze obsługiwane.

Żeby przetworzyć znaczniki czasu Typ informacji należy ustawić na 'Log'. Należy zauważyć, że inne formaty takie jak 'Numeryczny' również są dozwolone, jednakże mogą wymagać własnej obsługi pułapki.

Żeby monitorowanie pułapek SNMP działało, najpierw musi być poprawnie ustawione.

3.2 Ustawianie monitorowania pułapek SNMP

Konfiguracja serwera/proxy Zabbix

Żeby odczytać pułapki, serwer lub proxy Zabbix musi być skonfigurowane tak, by uruchamiał się proces pułapki SNMP i musi wiedzieć gdzie jest plik, do którego pisze SNMPTT lub odbiornik pułapki perl. Żeby to zrobić, należy wprowadzić odpowiednie zmiany w pliku konfiguracyjnym (zabbix_server.conf lub zabbix_proxy.conf):

  1. StartSNMPTrapper=1
  2. SNMPTrapperFile=[PLIK PUŁAPKI]
Konfiguracja SNMPTT

Po pierwsze, snmptrapd powinno być skonfigurowane do pracy z SNMPTT.

Dla zwiększenia wydajności, SNMPTT powinno być skonfigurowane jako demon używający snmptthandler-embedded do przekazywania pułapek. Zobacz instrukcję konfiguracji SNMPTT na jego stronie domowej:
http://snmptt.sourceforge.net/docs/snmptt.shtml

Gdy już SNMPTT zostanie skonfigurowane do odbierania pułapek, należy je skonfigurować do logowania pułapek:

  1. logowanie pułapek do pliku pułapki, który może być odczytany przez Zabbix:
    log_enable = 1
    log_file = [TRAP FILE]
  2. ustawienie formatu daty-czasu:
    date_time_format = %H:%M:%S %Y/%m/%d = [FORMAT DATY CZASU]

Teraz należy sformatować pułapki, żeby Zabbix mógł je rozpoznać (edycja snmptt.conf):

  1. Każda definicja FORMAT powinna zaczynać się od "ZBXTRAP [adres]", gdzie [adres] będzie porównywany do adresów IP i DNS interfejsów SNMP w Zabbix. Np.:
    EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
    FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
  2. Więcej na temat formatowania pułapki SNMP można zobaczyć poniżej.

Nie należy używać nieznanych pułapek - Zabbix nie będzie potrafił ich rozpoznać. Nieznane pułapki mogą być obsłużone poprzez zdefiniowanie zdarzenia ogólnego w snmptt.conf:
EVENT general .* "General event" Normal

Konfiguracja odbiornika pułapki Perl

Wymagania: Perl, Net-SNMP skompilowany z --enable-embedded-perl (domyślnie wykonywane od Net-SNMP 5.4)

Odbiornik pułapek Perl (lpatrz misc/snmptrap/zabbix_trap_receiver.pl) może być używany do bezpośredniego przekazywania pułapek z snmptrapd do Zabbix. Żeby go skonfigurować należy:

  • dodać skrypt perl do pliku konfiguracyjnego snmptrapd (snmptrapd.conf), e.g.:
    perl do "[PEŁNA ŚCIEŻKA DO SKRYPTU ODBIORNIKA PERL]";
  • skonfigurować odbiornik, np.:
    $SNMPTrapperFile = '[PLIK PUŁAPKI]';
    $DateTimeFormat = '[FORMAT DATY CZASU]';

Jeżeli nazwa skryptu nie jest wpisana w cudzysłowach, snmptrapd nie uruchomi się i pojawią się komunikaty podobne do tych:

Regexp modifiers "/l" and "/a" are mutually exclusive at (eval 2) line 1, at end of line
       Regexp modifier "/l" may not appear twice at (eval 2) line 1, at end of line
Formatowanie pułapki SNMP

Wszystkie własne odbiorniki pułapek perl i konfiguracje pułapek SNMPTT muszą formatować pułapkę w nastepujący sposób: [znacznikczasu] [pułapka, część 1] ZBXTRAP [adres] [pułapka, część 2], gdzie

  • [znacznikczasu] - znacznik czasu używany doi logowania pozycji
  • ZBXTRAP - nagłówek oznaczający, że w tej linii zaczyna się nowa pułapka
  • [adres] - adres IP używany do znalezienia hosta dla tej pułapki

Należy zauważyć, że "ZBXTRAP" i "[adres]" zostaną wycięte podczas przetwarzania komunikatu. Jeżeli pułapka sformatowana jest w inny sposób, Zabbix może przetworzyć pułapki w sposób nieoczekiwany.

Przykładowa pułapka:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2
Spowoduje to przekazanie następującej pułapki dla interfejsu SNMP: IP=192.168.1.1:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - Link down on interface 2. Admin state: 1.

3.3 Wymagania systemowe

Rotacja logów

Zabbix nie udostępnia żadnego systemu rotowania logów - powinno to być obsłużone przez użytkownika. Żeby nie utracić żadnej pułapki, rotacja logów powinna najpierw zmienić nazwy starego pliku a dopiero później go skasować:

  1. Zabbix otwiera plik pułapki na ostatniej znanej pozycji i przechodzi do kroku 3
  2. Zabbix sprawdza, czy aktualnie otwarty plik został zrotowany, porównując numer inode do zdefiniowanego numeru inode pliku pułapki. Jeżeli nie ma żadnego otwartego pliku, Zabbix czyści ostatnią lokalizację i wraca do kroku 1.
  3. Zabbix czyta dane z aktualnie otwartego pliku i ustawia nową lokalizację.
  4. Nowe dane są przetwarzane. Jeżeli to był plik zrotowany, plik jest zamykany i następuje powrót do kroku 2.
  5. Jeżeli nie ma więcej danych, Zabbix czeka 1 sekundę i przechodzi do kroku 2.
System plików

Z powodu metody implementacji pliku pułapki, Zabbix do rozróżniania plików wymaga systemu, który obsługuje identyfikatory węzłów (inode) (informacja pobierana jest przez wywołanie stat()).

3.4 Przykład ustawienia

Przykład ten wykorzystuje snmptrapd + SNMPTT do przekazania pułapki do serwera Zabbix. Ustawienia:

  1. zabbix_server.conf - konfiguracja Zabbix, uruchamiająca proces pułapki SNMP i ustawiająca plik pułapki:
    StartSNMPTrapper=1
    SNMPTrapperFile=/tmp/my_zabbix_traps.tmp
  2. snmptrapd.conf - dodanie SNMPTT jako obsługa pułapki:
    traphandle default snmptt
  3. snmptt.ini - konfiguracja pliku wyjściowego i formatu czasu:
    log_file = /tmp/my_zabbix_traps.tmp
    date_time_format = %H:%M:%S %Y/%m/%d
  4. snmptt.conf - definicja domyślnego formatu czasu:
    EVENT general .* "General event" Normal
    FORMAT ZBXTRAP $aA $ar
  5. Utworzenie pozycji SNMP TEST:
    Host's SNMP interface IP: 127.0.0.1
    Key: snmptrap["General"]
    Log time format: hh:mm:ss yyyy/MM/dd

Co daje w efekcie:

  1. Komenda użyta do wysłania pułapki:
    snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring000"
  2. Otrzymana pułapka:
    15:48:18 2011/07/26 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "General event" localhost - ZBXTRAP 127.0.0.1 127.0.0.1
  3. Wartość dla pozycji TEST:
    15:48:18 2011/07/26 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "General event" localhost - 127.0.0.1

Przykład ten wykorzystuje SNMPTT jako traphandle. Dla zwiększenia wydajności przekazywania pułapek, z snmptrapd do SNMPTT lub bezpośrednio do Zabbix, w systemach produkcyjnych, należy użyć wbudowanego Perla.

3.5 Zobacz również