

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