[comment]: # ({9b69cf77-8c8b2e0b})
# 4 Best practice per i trigger

[comment]: # ({/9b69cf77-8c8b2e0b})

[comment]: # ({93fa4fb9-814b1677})
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](#hysteresis) 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](/manual/config/triggers/best_practices/dependencies) dei trigger per evitare avvisi non correlati alla causa principale.

5. Usa la [gravità](/manual/config/triggers/best_practices/severity) dei trigger per generare avvisi solo per i problemi più gravi.

6. Definisci finestre di [manutenzione](/manual/maintenance).

[comment]: # ({/93fa4fb9-814b1677})

[comment]: # ({bae4792f-3f1b1c81})
#### 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](/manual/config/triggers/trigger) 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!

[comment]: # ({/bae4792f-3f1b1c81})

[comment]: # ({fe73812a-942a7e0e})
**Esempio**

La temperatura nella sala server è troppo alta.

Espressione del problema:

```default
last(/server/temp)>20
```

Espressione di ripristino:

```default
last(/server/temp)<=15
```

:::noteclassic
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.
:::

[comment]: # ({/fe73812a-942a7e0e})
