4 Najlepsze praktyki dotyczące wyzwalaczy
Wyzwalacze są potężnym narzędziem, ale mogą też powodować niepożądany szum alertów. Aby widzieć więcej rzeczywistych sygnałów, a mniej szumu, postępuj zgodnie z tymi wskazówkami:
-
Zmniejsz czułość wyzwalaczy. Zamiast alertować na podstawie najnowszej wartości (zbyt wysokiej/zbyt niskiej), analizuj średnią z dłuższego okresu, używając funkcji takich jak
avg,minimax. -
Rozważ użycie funkcji
percentile(ustawionej na 95% lub 5%) w wyzwalaczach, jeśli chcesz uniknąć alertów przy losowych skokach i spadkach. -
Użyj histerezy, aby uniknąć flappingu wyzwalaczy — częstych zmian stanu wyzwalacza (OK ↔ Problem). Ciągłość stanu problemu można zdefiniować przez dodanie wyrażenia odzyskiwania (oddzielnego warunku rozwiązania problemu).
-
Użyj zależności wyzwalaczy, aby uniknąć alertów, które nie są związane z przyczyną źródłową.
-
Użyj ważności wyzwalacza, aby alertować tylko o poważniejszych problemach.
-
Zdefiniuj okna konserwacji.
Histereza
Czasami potrzebny jest przedział między stanem problemu a stanem odzyskania, zamiast prostego progu. Na przykład, jeśli chcemy zdefiniować wyzwalacz, który zgłasza problem, gdy temperatura w serwerowni przekroczy 20°C, i chcemy, aby pozostawał on w stanie problemu, dopóki temperatura nie spadnie poniżej 15°C, prosty próg wyzwalacza ustawiony na 20°C nie będzie wystarczający.
Zamiast tego najpierw musimy zdefiniować wyrażenie wyzwalacza dla zdarzenia problemowego (temperatura powyżej 20°C). Następnie musimy zdefiniować dodatkowy warunek odzyskania (temperatura poniżej 15°C). Robi się to przez zdefiniowanie wyrażenia odzyskania podczas konfigurowania wyzwalacza.
W tym przypadku odzyskanie po problemie odbywa się w dwóch krokach:
- Najpierw wyrażenie problemowe (temperatura powyżej 20°C) musi zostać obliczone jako FALSE
- Następnie wyrażenie odzyskania (temperatura poniżej 15°C) musi zostać obliczone jako TRUE
Wyrażenie odzyskania jest obliczane dopiero po rozwiązaniu zdarzenia problemowego. Samo ustawienie wyrażenia odzyskania na TRUE nie powoduje rozwiązania problemu, jeśli wyrażenie problemowe nadal ma wartość TRUE!
Przykład
Temperatura w serwerowni jest zbyt wysoka.
Wyrażenie problemu:
last(/server/temp)>20
Wyrażenie odzyskiwania:
last(/server/temp)<=15
Używanie makra {TRIGGER.VALUE} w wyrażeniu odzyskiwania jest nieefektywne, ponieważ to wyrażenie jest oceniane tylko wtedy, gdy wyzwalacz znajduje się w stanie „Problem”. W konsekwencji podczas obliczania wyrażenia makro {TRIGGER.VALUE} zawsze zostanie rozwinięte do wartości „1” (co oznacza stan „Problem”).