Best practice per i trigger

I trigger sono uno strumento potente, ma possono anche generare rumore di alert indesiderato. Per vedere più segnali reali e meno rumore, segui questi suggerimenti:

  1. Desensibilizza i trigger. Invece di generare un alert sull'ultimo valore (troppo alto/troppo basso), analizza la media su un periodo esteso usando funzioni come avg, min e max.

  2. Valuta l'uso della funzione percentile (impostata al 95% o al 5%) nei trigger, se vuoi evitare alert su picchi e cali casuali.

  3. Usa l'isteresi per evitare il flapping dei trigger, cioè i cambiamenti frequenti dello stato del trigger (OK ↔ Problem). È possibile definire una continuità per lo stato di problema aggiungendo un'espressione di recupero (una condizione separata per la risoluzione del problema).

  4. Usa le dipendenze dei trigger per evitare alert non correlati alla causa principale.

  5. Usa la gravità dei trigger per ricevere alert solo sui problemi più gravi.

  6. Definisci finestre di manutenzione.

Isteresi

A volte è necessario un intervallo tra gli stati di problema e di ripristino, anziché una semplice soglia. Ad esempio, se vogliamo definire un trigger che segnali un problema quando la temperatura della sala server supera i 20°C e vogliamo che rimanga nello stato di problema finché la temperatura non scende sotto i 15°C, una semplice soglia del trigger a 20°C non sarà sufficiente.

Invece, dobbiamo prima definire un'espressione del trigger per l'evento di problema (temperatura sopra i 20°C). Poi dobbiamo definire una condizione di ripristino aggiuntiva (temperatura sotto i 15°C). Questo viene fatto definendo una Recovery expression durante la configurazione di un trigger.

In questo caso, il ripristino del problema avviene in due passaggi:

  • Per prima cosa, l'espressione di problema (temperatura sopra i 20°C) deve essere valutata come FALSE
  • In secondo luogo, l'espressione di ripristino (temperatura sotto i 15°C) deve essere valutata come TRUE

L'espressione di ripristino viene valutata solo dopo che l'evento di problema è stato risolto. Il solo fatto che l'espressione di ripristino sia TRUE non risolve un problema se l'espressione di problema è ancora TRUE!

Esempio

La temperatura nella sala server è troppo alta.

Espressione del problema:

last(/server/temp)>20

Espressione di ripristino:

last(/server/temp)<=15

Non è produttivo utilizzare la macro {TRIGGER.VALUE} in un'espressione di ripristino perché questa espressione viene valutata solo quando il trigger si trova nello stato "Problema". Di conseguenza, {TRIGGER.VALUE} verrà sempre risolta come "1" (che indica uno stato di "Problema") durante la valutazione dell'espressione.