1 Korelacja zdarzeń oparta na wyzwalaczach

Przegląd

Korelacja zdarzeń oparta na wyzwalaczach umożliwia korelowanie oddzielnych problemów zgłaszanych przez jeden wyzwalacz.

Zwykle zdarzenie OK może zamknąć wszystkie zdarzenia problemowe utworzone przez jeden wyzwalacz, jednak w niektórych przypadkach potrzebne jest bardziej szczegółowe podejście. Na przykład podczas monitorowania plików dziennika możesz chcieć wykrywać określone problemy w pliku dziennika i zamykać je pojedynczo, a nie wszystkie jednocześnie.

Dotyczy to wyzwalaczy, dla których parametr PROBLEM event generation mode jest ustawiony na Multiple. Takie wyzwalacze są zwykle używane do monitorowania dzienników, przetwarzania trapów itp.

W Zabbixie można wiązać zdarzenia problemowe na podstawie tagowania. Tagi służą do wyodrębniania wartości i tworzenia identyfikatorów zdarzeń problemowych. Dzięki temu problemy można również zamykać pojedynczo na podstawie zgodnego tagu.

Innymi słowy, ten sam wyzwalacz może tworzyć oddzielne zdarzenia identyfikowane przez tag zdarzenia. Dzięki temu zdarzenia problemowe można identyfikować pojedynczo i zamykać oddzielnie na podstawie identyfikacji za pomocą tagu zdarzenia.

Jak to działa

Podczas monitorowania logów możesz napotkać wiersze podobne do tych:

Wiersz1: Usługa 1 została zatrzymana
Wiersz2: Usługa 2 została zatrzymana
Wiersz3: Usługa 1 została uruchomiona ponownie
Wiersz4: Usługa 2 została uruchomiona ponownie

Ideą korelacji zdarzeń jest możliwość dopasowania zdarzenia problemowego z Wiersza1 do rozwiązania z Wiersza3 oraz zdarzenia problemowego z Wiersza2 do rozwiązania z Wiersza4 i zamykania tych problemów jeden po drugim:

Wiersz1: Usługa 1 została zatrzymana
Wiersz3: Usługa 1 została uruchomiona ponownie #problem z Wiersza 1 zamknięty

Wiersz2: Usługa 2 została zatrzymana
Wiersz4: Usługa 2 została uruchomiona ponownie #problem z Wiersza 2 zamknięty

Aby to zrobić, musisz oznaczyć te powiązane zdarzenia tagami, na przykład „Usługa 1” i „Usługa 2”. Można to zrobić, stosując wyrażenie regularne do wiersza logu w celu wyodrębnienia wartości tagu. Następnie, gdy zdarzenia są tworzone, otrzymują odpowiednio tagi „Usługa 1” i „Usługa 2”, a problem może zostać dopasowany do rozwiązania.

Konfiguracja

Pozycja

Na początek możesz skonfigurować pozycję monitorującą plik dziennika, na przykład:

log[/var/log/syslog]

Po skonfigurowaniu pozycji odczekaj minutę, aż zmiany konfiguracji zostaną zastosowane, a następnie przejdź do Najnowsze dane, aby upewnić się, że pozycja rozpoczęła zbieranie danych.

Wyzwalacz

Gdy pozycja działa, należy skonfigurować wyzwalacz. Ważne jest, aby zdecydować, które wpisy w pliku dziennika są warte uwagi. Na przykład poniższe wyrażenie wyzwalacza będzie wyszukiwać ciąg znaków 'Stopping', aby sygnalizować potencjalne problemy:

find(/My host/log[/var/log/syslog],,"regexp","Stopping")=1 

Aby upewnić się, że każda linia zawierająca ciąg "Stopping" jest traktowana jako problem, ustaw również opcję Tryb generowania zdarzeń problemów w konfiguracji wyzwalacza na 'Multiple'.

Następnie zdefiniuj wyrażenie odzyskiwania. Poniższe wyrażenie odzyskiwania spowoduje rozwiązanie wszystkich problemów, jeśli zostanie znaleziona linia dziennika zawierająca ciąg "Starting":

find(/My host/log[/var/log/syslog],,"regexp","Starting")=1 

Ponieważ nie tego chcemy, ważne jest, aby w jakiś sposób upewnić się, że zamykane są odpowiadające im główne problemy, a nie po prostu wszystkie problemy. W tym miejscu pomocne może być tagowanie.

Problemy i rozwiązania można dopasować, określając tag w konfiguracji wyzwalacza. Należy wprowadzić następujące ustawienia:

  • Tryb generowania zdarzeń problemów: Multiple
  • Zdarzenie OK zamyka: Wszystkie problemy, jeśli wartości tagów są zgodne
  • Wprowadź nazwę tagu do dopasowywania zdarzeń

  • skonfiguruj tagi, aby wyodrębniać wartości tagów z linii dziennika

Jeśli konfiguracja zakończy się powodzeniem, będzie można zobaczyć zdarzenia problemów otagowane według aplikacji i dopasowane do ich rozwiązania w Monitoring → Problems.

Ponieważ możliwa jest błędna konfiguracja, gdy podobne tagi zdarzeń mogą zostać utworzone dla niepowiązanych problemów, zapoznaj się z przypadkami opisanymi poniżej!

  • Makra indeksowane zawsze odnoszą się do pola Expression w konfiguracji wyzwalacza, a nie do Recovery expression. Na przykład w zdarzeniu odzyskiwania {ITEM.VALUE1} zostanie rozwinięte do najnowszej wartości pierwszej pozycji w wyrażeniu problemu w momencie odzyskiwania. Jeśli wyrażenie odzyskiwania opiera się na innej pozycji, a wartość pozycji z wyrażenia problemu zmieni się do czasu odzyskiwania, zdarzenia otrzymają różne tagi i nie zostaną skorelowane.

  • Gdy dwie aplikacje zapisują komunikaty o błędach i odzyskiwaniu do tego samego pliku dziennika, użytkownik może zdecydować się na użycie dwóch tagów service w tym samym wyzwalaczu z różnymi wartościami tagów, stosując osobne wyrażenia regularne w wartościach tagów do wyodrębnienia nazw, powiedzmy, usługi A i usługi B z makra {ITEM.VALUE} (np. gdy formaty komunikatów się różnią). Jednak może to nie działać zgodnie z oczekiwaniami, jeśli nie będzie dopasowania do wyrażeń regularnych. Niedopasowane regexpy dadzą puste wartości tagów, a pojedyncza pusta wartość tagu zarówno w zdarzeniach problemów, jak i OK wystarczy do ich skorelowania. Tak więc komunikat odzyskiwania z usługi A może przypadkowo zamknąć komunikat o błędzie z usługi B.

  • Rzeczywiste tagi i wartości tagów stają się widoczne dopiero po zadziałaniu wyzwalacza. Jeśli użyte wyrażenie regularne jest nieprawidłowe, zostaje ono po cichu zastąpione ciągiem *UNKNOWN*. Jeśli początkowe zdarzenie problemu z wartością tagu *UNKNOWN* zostanie przeoczone, mogą pojawić się kolejne zdarzenia OK z tą samą wartością tagu *UNKNOWN*, które mogą zamknąć zdarzenia problemów, których nie powinny były zamknąć.

  • Jeśli użytkownik używa makra {ITEM.VALUE} bez funkcji makr jako wartości tagu, obowiązuje ograniczenie do 255 znaków. Gdy komunikaty dziennika są długie, a pierwsze 255 znaków nie jest charakterystyczne, może to również skutkować podobnymi tagami zdarzeń dla niepowiązanych problemów.