

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di modelli di messaggistica
<a name="alert-message-templates"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 8.x di Grafana.**  
Per le aree di lavoro Grafana che supportano la versione 12.x di Grafana, vedere. [Funzionamento nella versione 12 di Grafana](using-grafana-v12.md)  
Per le aree di lavoro Grafana che supportano la versione 10.x di Grafana, vedere. [Funzionamento nella versione 10 di Grafana](using-grafana-v10.md)  
Per le aree di lavoro Grafana che supportano la versione 9.x di Grafana, vedere. [Funzionamento in Grafana versione 9](using-grafana-v9.md)

*Le notifiche inviate tramite [Lavorare con i punti di contatto](alert-contact-points.md) vengono create utilizzando modelli di messaggistica.* I modelli predefiniti di Grafana si basano sul [sistema di template Go, in cui alcuni campi vengono valutati come testo, mentre altri vengono valutati come HTML (il che può influire](https://golang.org/pkg/text/template) sull'escape).

Poiché la maggior parte dei campi dei punti di contatto può essere modellata, è possibile creare modelli personalizzati riutilizzabili e utilizzarli in più punti di contatto. L'[Dati del modello](#alert-template-data)argomento elenca le variabili disponibili per la creazione di modelli.

**Utilizzo dei modelli**

I modelli vengono utilizzati per creare un messaggio. Ad esempio, con un messaggio di avviso Slack, puoi impostare il titolo e il corpo del punto di contatto. L'esempio seguente mostra come utilizzare i modelli predefiniti per creare un titolo che contenga un conteggio degli avvisi attivati e risolti e un corpo che elenchi gli avvisi e i relativi stati.
+ **Titolo:**

  ```
  {{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
  ```
+ **Corpo del testo**: 

  ```
  {{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }}
  {{end }}
  ```

È possibile creare modelli personalizzati, come nell'esempio seguente.
+ **Titolo**:

  ```
  {{ template "slack.default.title" .}}
  ```
+ **Corpo del testo**: 

  ```
  {{ template "mymessage" .}}
  ```

Di seguito è riportato un modello di esempio.

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

Le procedure seguenti mostrano come creare, modificare ed eliminare modelli di messaggio personalizzati.

**Per creare un modello di messaggio**

1. **Dalla console Grafana, nel menu Grafana, scegli l'icona Avvisi (campanella) per **aprire la pagina Avvisi**.**

1. **Scegli Punti di contatto.**

1. Dal menu a discesa **Alertmanager**, seleziona l'istanza Alertmanager per cui desideri creare un modello di messaggio. L'impostazione predefinita è Grafana Alertmanager.

1. **Scegli Aggiungi modello.**

1. Aggiungi un **nome** descrittivo.

1. Aggiungi il **contenuto** per il modello, ad esempio:

   ```
   {{ define "mymessage" }}
     {{ range .Alerts }}
       [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}}
     {{ end }}
   {{ end }}
   ```

   Il `define` tag nella sezione Contenuto assegna il nome del modello. Questo tag è facoltativo e, se omesso, il nome del modello viene derivato dal campo **Nome**. Quando vengono specificati entrambi, è consigliabile mantenerli uguali.

1. Scegli **Salva modello**.

**Nota**  
Il codice HTML nei modelli di messaggi di avviso viene visualizzato come testo, senza caratteri di controllo. Il rendering del codice HTML nella notifica risultante non è supportato da Grafana.

**Per modificare un modello di messaggio**

1. Nella pagina **Avvisi**, scegli **Punti di contatto** per aprire l'elenco dei punti di contatto.

1. Nella **tabella Modello**, trova il modello che desideri modificare, quindi scegli l'icona **Modifica** (penna).

1. Apporta le modifiche, quindi scegli **Salva modello**.

**Per eliminare un modello di messaggio**

1. Nella pagina **Avvisi**, scegli **Punti di contatto** per aprire l'elenco dei punti di contatto.

1. Nella **tabella Modello**, trova il modello che desideri rimuovere, quindi scegli l'icona **Elimina** (cestino).

1. Scegli **Sì, elimina** per eliminare il modello.

**Modelli annidati**

È possibile incorporare modelli all'interno di altri modelli.

Ad esempio, è possibile definire un frammento di modello utilizzando la `define` parola chiave:

```
{{ define "mytemplate" }}
  {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
```

È quindi possibile incorporare modelli personalizzati all'interno di questo frammento utilizzando la parola chiave. `template` Esempio:

```
Alert summary:
{{ template "mytemplate" . }}
```

È possibile utilizzare le seguenti opzioni di modello integrate per incorporare modelli personalizzati.


| Nome | Note | 
| --- | --- | 
| `default.title` | Visualizza informazioni sullo stato di alto livello. | 
| `default.message` | Fornisce un riepilogo formattato degli allarmi attivati e risolti. | 

**Esempi di modelli personalizzati**

Ecco alcuni esempi di come utilizzare i modelli personalizzati.

Modello per il rendering di un singolo avviso:

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

Modello per visualizzare l'intero messaggio di notifica:

```
{{ define "mymessage" }}
  {{ if gt (len .Alerts.Firing) 0 }}
    {{ len .Alerts.Firing }} firing:
    {{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }}
  {{ end }}
  {{ if gt (len .Alerts.Resolved) 0 }}
    {{ len .Alerts.Resolved }} resolved:
    {{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }}
  {{ end }}
{{ end }}
```

## Dati del modello
<a name="alert-template-data"></a>

I seguenti dati vengono passati ai modelli di messaggio.


| Nome | Tipo | Note | 
| --- | --- | --- | 
| `Receiver` | stringa | Nome del punto di contatto a cui viene inviata la notifica. | 
| `Status` | stringa | attivazione se viene attivato almeno un avviso, altrimenti risolto. | 
| `Alerts` | Alert | Elenco degli oggetti di avviso inclusi in questa notifica (vedi sotto). | 
| `GroupLabels` | KeyValue | Etichette in base alle quali questi avvisi sono stati raggruppati. | 
| `CommonLabels` | KeyValue | Etichette comuni a tutti gli avvisi inclusi in questa notifica. | 
| `CommonAnnotations` | KeyValue | Annotazioni comuni a tutti gli avvisi inclusi in questa notifica. | 
| `ExternalURL` | stringa | Link di ritorno al Grafana che ha inviato la notifica. Se si utilizza un Alertmanager esterno, ricollega a questo Alertmanager. | 

Il `Alerts` tipo espone due funzioni per filtrare gli avvisi restituiti.
+ `Alerts.Firing`— Restituisce un elenco di avvisi di attivazione.
+ `Alerts.Resolved`— Restituisce un elenco di avvisi risolti.

**Avviso (tipo)**

Il tipo di avviso contiene i seguenti dati.


| Nome | Tipo | Note | 
| --- | --- | --- | 
| Stato | stringa | `firing` o `resolved`. | 
| Etichette | KeyValue | Un set di etichette allegate all'avviso. | 
| Annotazioni | KeyValue | Un insieme di annotazioni allegate all'avviso. | 
| StartsAt | Time.time | L'ora in cui l'allarme ha iniziato a scattare. | 
| EndsAt | Tempo. Tempo | Impostato solo se è nota l'ora di fine di un avviso. Altrimenti impostato su un periodo di timeout configurabile dal momento in cui è stato ricevuto l'ultimo avviso. | 
| URL del generatore | stringa | Un link a Grafana o un gestore di avvisi esterno. | 
| URL silenzioso | stringa | Link a grafana silence for con le etichette per questo avviso precompilate. Solo per gli avvisi gestiti da Grafana. | 
| URL del pannello di controllo | stringa | Collegamento alla dashboard di Grafana, se la regola di avviso appartiene a una di esse. Solo per gli avvisi gestiti da Grafana. | 
| URL del pannello | stringa | Collegamento al pannello di dashboard di Grafana, se la regola di avviso appartiene a uno. Solo per gli avvisi gestiti da Grafana. | 
| Impronta digitale | stringa | Impronta digitale che può essere utilizzata per identificare l'avviso. | 
| ValueString | stringa | Una stringa che contiene le etichette e il valore di ogni espressione ridotta nell'avviso. | 

**KeyValue tipo**

Il `KeyValue` tipo è un insieme di coppie di key/value stringhe che rappresentano etichette e annotazioni.

Oltre all'accesso diretto ai dati archiviati come file`KeyValue`, esistono anche metodi per ordinare, rimuovere e trasformare i dati.


| Nome | Arguments (Argomenti) | Valori restituiti | Note | 
| --- | --- | --- | --- | 
| SortedPairs |  | Elenco ordinato di coppie di stringhe di chiavi e valori |  | 
| Rimuovi | [] stringa | KeyValue | Restituisce una copia della Key/Value mappa senza le chiavi fornite. | 
| Nomi |  | [] stringa | Elenco dei nomi delle etichette | 
| Valori |  | [] stringa | Elenco dei valori delle etichette | 



## Funzioni del modello
<a name="alert-template-functions"></a>

Utilizzando le funzioni del modello è possibile elaborare etichette e annotazioni per generare notifiche dinamiche. Sono disponibili le seguenti funzioni.


| Nome | Tipo di argomento | Tipo restituito | Description | 
| --- | --- | --- | --- | 
| `humanize` | numero o stringa | stringa | Converte un numero in un formato più leggibile, utilizzando prefissi metrici. | 
| `humanize1024` | numero o stringa | stringa | Come humanize, ma usa 1024 come base anziché 1000. | 
| `humanizeDuration` | numero o stringa | stringa | Converte una durata in secondi in un formato più leggibile. | 
| `humanizePercentage` | numero o stringa | stringa | Converte un valore del rapporto in una frazione di 100. | 
| `humanizeTimestamp` | numero o stringa | stringa | Converte un timestamp Unix in pochi secondi in un formato più leggibile. | 
| `title` | stringa | stringa | Strings.title, mette in maiuscolo il primo carattere di ogni parola. | 
| `toUpper` | stringa | stringa | stringhe. ToUpper, converte tutti i caratteri in lettere maiuscole. | 
| `toLower` | stringa | stringa | stringhe. ToLower, converte tutti i caratteri in minuscolo. | 
| `match` | motivo, testo | booleano | espressione regolare. MatchString Verifica una corrispondenza regexp non ancorata. | 
| `reReplaceAll` | modello, sostituzione, testo | stringa | Regexp.ReplaceAllString Sostituzione Regexp, non ancorata. | 
| `graphLink` | string - Oggetto JSON con e campi `expr` `datasource` | stringa | Restituisce il percorso della visualizzazione grafica in Explore per l'espressione e l'origine dati specificate. | 
| `tableLink` | string - Oggetto JSON con `expr` e campi `datasource` | stringa | Restituisce il percorso della vista tabulare in Explore per l'espressione e l'origine dati specificate. | 
| `args` | [] interfaccia {} | mappa [stringa] interfaccia {} | Converte un elenco di oggetti in una mappa con chiavi, ad esempio arg0, arg1. Utilizzate questa funzione per passare più argomenti ai modelli. | 
| `externalURL` | nulla | stringa | Restituisce una stringa che rappresenta l'URL esterno. | 
| `pathPrefix` | nulla | stringa | Restituisce il percorso dell'URL esterno. | 

La tabella seguente mostra esempi di utilizzo di ciascuna funzione.


| Funzione | TemplateString | Input | Expected (Atteso) | 
| --- | --- | --- | --- | 
| umanizzare | {umanizza $value} | 1234567,0 | 1,235 M | 
| umanizza 1024 | {humanize1024 $value} | 1048576,0 | 1 Mi | 
| Durata umanizzata | {UmanizeDuration $value} | 899,99 | 14 m 59 s | 
| Umanizza la percentuale | {humanizePercentage $value} | 0,1234567 | 12,35% | 
| Umanizza il timestamp | {humanizeTimestamp $value} | 1435065584,128 | 2015-06-23 13:19:44.128 \+0000 UTC | 
| titolo | {$valore \| titolo} | un B C | Aa Bb Cc | 
| toUpper | {$valore \| toUpper} | un dB C | A B C | 
| toLower | {$valore \| toLower} | un B C | a b c | 
| match | {match «a\+» $labels.instance} | aa | true | 
| re ReplaceAll | {{re ReplaceAll «localhost :( .\*)» «my.domain: $1" $labels.instance}} | host locale: 3000 | mio.domain:3000 | 
| GraphLink | {{graphLink «{\\" expr\\»:\\ "up\\»,\\ "fonte dati\\»:\\ "gdev-prometheus\\"}»}} |  | /esplorare? left= ["ora-1h», "adesso», "gdev-prometheus», {"datasource» :"gdev-prometheus», "expr» :"up», "instant» :false, "range» :true}] | 
| TableLink | {{tableLink «{\\" expr\\»:\\ "up\\»,\\ "fonte dati\\»:\\ "gdev-prometheus\\"}»}} |  | /esplorare? left= ["ora-1h», "adesso», "gdev-prometheus», {"datasource» :"gdev-prometheus», "expr» :"up», "instant» :true, "range» :false}] | 
| args | {{define «x"}} {{.arg0}} {{.arg1}} {{end}} {{template «x» (args 1 «2")}} |  | 1 2 | 
| URL esterno | {URL esterno} |  | http://localhost/path/prefix | 
| Prefisso del percorso | {PathPrefix} |  | /path/prefix | 