4 Best practice per i trigger
I trigger sono uno strumento potente, ma possono anche creare rumore di avvisi indesiderato. Per vedere più segnali reali e meno rumore, segui questi suggerimenti:
-
Riduci la sensibilità dei trigger. Invece di generare un avviso sull'ultimo valore (troppo alto/troppo basso), analizza la media su un periodo più lungo utilizzando funzioni come
avg,minemax. -
Valuta l'uso della funzione
percentile(impostata al 95% o al 5%) nei trigger, se vuoi evitare avvisi dovuti a picchi e cali casuali. -
Usa l'isteresi per evitare il flapping dei trigger, ovvero frequenti cambiamenti dello stato del trigger (OK ↔ Problem). È possibile definire una continuità per lo stato di problema aggiungendo un'espressione di ripristino (una condizione separata per la risoluzione del problema).
-
Usa le dipendenze dei trigger per evitare avvisi non correlati alla causa principale.
-
Usa la gravità dei trigger per generare avvisi solo per i problemi più gravi.
-
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.