Najlepsze praktyki dotyczące wyzwalaczy

Wyzwalacze są potężnym narzędziem, ale mogą też generować niepożądany szum alertów. Aby zobaczyć więcej rzeczywistych sygnałów i mniej szumu, zastosuj się do poniższych wskazówek:

  1. Zmniejsz czułość wyzwalaczy. Zamiast alertować na podstawie najnowszej wartości (zbyt wysoka/zbyt niska), analizuj średnią z dłuższego okresu, używając funkcji takich jak avg, min i max.

  2. Rozważ użycie funkcji percentile (ustaw ją na 95% lub 5%) w wyzwalaczach, jeśli chcesz uniknąć alertów wywoływanych przez losowe skoki i spadki.

  3. Użyj histerezy, aby uniknąć „flappingu” wyzwalaczy — częstych zmian stanu wyzwalacza (OK ↔ Problem). Ciągłość dla stanu problemu można zdefiniować, dodając wyrażenie odzyskiwania (oddzielny warunek rozwiązania problemu).

  4. Użyj zależności wyzwalaczy, aby uniknąć alertów niezwiązanych z przyczyną źródłową.

  5. Użyj rangi ważności wyzwalaczy, aby alertować tylko o poważniejszych problemach.

  6. Zdefiniuj okna maintenance.

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”).