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:

  1. 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, min e max.

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

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

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

  5. Usa la gravità dei trigger per generare avvisi solo per i 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.