

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à.

# Personalizza le notifiche
<a name="v9-alerting-notifications"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 9.x di Grafana.**  
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 8.x di Grafana, vedere. [Funzionamento in Grafana versione 8](using-grafana-v8.md)

Personalizza le tue notifiche con i modelli di notifica.

Puoi utilizzare i modelli di notifica per modificare il titolo, il messaggio e il formato del messaggio nelle notifiche.

I modelli di notifica non sono legati a integrazioni di punti di contatto specifiche, come email o Slack. Tuttavia, puoi scegliere di creare modelli di notifica separati per diverse integrazioni di punti di contatto.

Puoi utilizzare i modelli di notifica per:
+ Aggiungere, rimuovere o riordinare le informazioni nella notifica, tra cui riepilogo, descrizione, etichette e annotazioni, valori e link
+ Formatta il testo in grassetto e corsivo e aggiungi o rimuovi interruzioni di riga

Non è possibile utilizzare i modelli di notifica per:
+ Modifica il design delle notifiche nei servizi di messaggistica istantanea come Slack e Microsoft Teams

**Topics**
+ [Usare il linguaggio di template di Go](v9-alerting-notifications-go-templating.md)
+ [Crea modelli di notifica](v9-alerting-create-templates.md)
+ [Riferimento modello](v9-alerting-template-reference.md)

# Usare il linguaggio di template di Go
<a name="v9-alerting-notifications-go-templating"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 9.x di Grafana.**  
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 8.x di Grafana, vedere. [Funzionamento in Grafana versione 8](using-grafana-v8.md)

[Scrivi modelli di notifica nel linguaggio di template di Go, text/template.](https://pkg.go.dev/text/template)

Questa sezione fornisce una panoramica del linguaggio di template di Go e dei modelli di scrittura in text/template.

## Dot
<a name="v9-go-dot"></a>

 text/template C'è un cursore speciale chiamato punto, ed è scritto come`.`. Puoi pensare a questo cursore come a una variabile il cui valore cambia a seconda del punto del modello in cui viene utilizzato. Ad esempio, all'inizio di un modello di notifica `.` si fa riferimento all'`ExtendedData`oggetto, che contiene una serie di campi tra cui `Alerts``Status`, `GroupLabels``CommonLabels`, `CommonAnnotations` e`ExternalURL`. Tuttavia, dot potrebbe fare riferimento a qualcos'altro quando viene utilizzato in un `range` elenco completo, all'interno di un `with` o quando si scrivono modelli di funzionalità da utilizzare in altri modelli. Puoi vedere esempi di ciò in[Crea modelli di notifica](v9-alerting-create-templates.md), e tutti i dati e le funzioni in[Riferimento modello](v9-alerting-template-reference.md).

## Tag di apertura e chiusura
<a name="v9-go-openclosetags"></a>

In text/template, i modelli iniziano `{{` e finiscono con `}}` indipendentemente dal fatto che il modello stampi una variabile o esegua strutture di controllo come le istruzioni if. Questo è diverso da altri linguaggi di template come Jinja, dove la stampa di una variabile utilizza `{{` e e le strutture di controllo utilizzano e`}}`. `{%` `%}`

## Print (Stampa)
<a name="v9-go-print"></a>

Per stampare il valore di qualcosa usa e. `{{` `}}` È possibile stampare il valore di un punto, un campo di punti, il risultato di una funzione e il valore di una [variabile](#v9-go-variables). Ad esempio, per stampare il `Alerts` campo a cui si riferisce il punto `ExtendedData` devi scrivere quanto segue:

```
{{ .Alerts }}
```

## Esegui iterazioni sugli avvisi
<a name="v9-go-iterate-alerts"></a>

Per stampare solo le etichette di ogni avviso, anziché tutte le informazioni sull'avviso, puoi utilizzare `range` a per iterare gli avvisi in: `ExtendedData`

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
```

All'interno dell'intervallo il punto non si riferisce più a`ExtendedData`, ma a un. `Alert` È possibile utilizzare `{{ .Labels }}` per stampare le etichette di ogni avviso. Funziona perché `{{ range .Alerts }}` cambia il punto per fare riferimento all'avviso corrente nell'elenco degli avvisi. Quando l'intervallo è terminato, il punto viene ripristinato al valore che aveva prima dell'inizio dell'intervallo, che in questo esempio è`ExtendedData`:

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
{{/* does not work, .Labels does not exist here */}}
{{ .Labels }}
{{/* works, cursor was reset */}}
{{ .Status }}
```

## Esegui iterazioni su annotazioni ed etichette
<a name="v9-go-iterate-labels"></a>

Scriviamo un modello per stampare le etichette di ogni avviso nel formato`The name of the label is $name, and the value is $value`, dove `$name` e `$value` contiene il nome e il valore di ogni etichetta.

Come nell'esempio precedente, utilizzate un intervallo per scorrere gli avvisi in `.Alerts` modo che il punto si riferisca all'avviso corrente nell'elenco degli avvisi, quindi utilizzate un secondo intervallo sulle etichette ordinate in modo che dot venga aggiornato una seconda volta per fare riferimento all'etichetta corrente. All'interno del secondo intervallo usa `.Name` e stampa `.Value` il nome e il valore di ogni etichetta:

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
The name of the label is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ range .Annotations.SortedPairs }}
The name of the annotation is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ end }}
```

## Dichiarazioni If
<a name="v9-go-if"></a>

È possibile utilizzare le istruzioni if nei modelli. Ad esempio, per stampare `There are no alerts` se non sono presenti avvisi, `.Alerts` è necessario scrivere quanto segue:

```
{{ if .Alerts }}
There are alerts
{{ else }}
There are no alerts
{{ end }}
```

## Con
<a name="v9-go-with"></a>

With è simile alle istruzioni if, tuttavia a differenza delle istruzioni if, `with` aggiorna dot per fare riferimento al valore di with:

```
{{ with .Alerts }}
There are {{ len . }} alert(s)
{{ else }}
There are no alerts
{{ end }}
```

## Variabili
<a name="v9-go-variables"></a>

Le variabili in text/template devono essere create all'interno del modello. Ad esempio, per creare una variabile chiamata `$variable` con il valore corrente di dot devi scrivere quanto segue:

```
{{ $variable := . }}
```

Puoi usare `$variable` all'interno di un intervallo o `with` e farà riferimento al valore di dot nel momento in cui la variabile è stata definita, non al valore corrente di dot.

Ad esempio, non puoi scrivere un modello da utilizzare `{{ .Labels }}` nel secondo intervallo perché qui il punto si riferisce all'etichetta corrente, non all'avviso corrente:

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* does not work because in the second range . is a label not an alert */}}
There are {{ len .Labels }}
{{ end }}
{{ end }}
```

Puoi risolvere questo problema definendo una variabile chiamata `$alert` nel primo intervallo e prima del secondo intervallo:

```
{{ range .Alerts }}
{{ $alert := . }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* works because $alert refers to the value of dot inside the first range */}}
There are {{ len $alert.Labels }}
{{ end }}
{{ end }}
```

## Intervallo con indice
<a name="v9-go-rangeindex"></a>

È possibile ottenere l'indice di ogni avviso all'interno di un intervallo definendo le variabili di indice e valore all'inizio dell'intervallo:

```
{{ $num_alerts := len .Alerts }}
{{ range $index, $alert := .Alerts }}
This is alert {{ $index }} out of {{ $num_alerts }}
{{ end }}
```

## Definire i modelli
<a name="v9-go-define"></a>

È possibile definire modelli che possono essere utilizzati all'interno di altri modelli, utilizzando `define` e il nome del modello tra virgolette doppie. Non è necessario definire modelli con lo stesso nome di altri modelli, inclusi modelli predefiniti come `__subject``__text_values_list`,`__text_alert_list`, `default.title` e`default.message`. Se è stato creato un modello con lo stesso nome di un modello predefinito o un modello in un altro modello di notifica, Grafana potrebbe utilizzare entrambi i modelli. Grafana non impedisce o mostra un messaggio di errore quando ci sono due o più modelli con lo stesso nome.

```
{{ define "print_labels" }}
{{ end }}
```

## Incorpora modelli
<a name="v9-go-embed"></a>

È possibile incorporare un modello definito all'interno del modello utilizzando `template` il nome del modello tra virgolette doppie e il cursore da passare al modello:

```
{{ template "print_labels" . }}
```

## Passa i dati ai modelli
<a name="v9-go-passdata"></a>

All'interno di un modello, il punto si riferisce al valore passato al modello.

Ad esempio, se a un modello viene passato un elenco di avvisi di attivazione, dot si riferisce a quell'elenco di avvisi di attivazione:

```
{{ template "print_alerts" .Alerts }}
```

Se al modello vengono passate le etichette ordinate per un avviso, dot si riferisce all'elenco di etichette ordinate:

```
{{ template "print_labels" .SortedLabels }}
```

Questo è utile quando si scrivono modelli riutilizzabili. Ad esempio, per stampare tutti gli avvisi potresti scrivere quanto segue:

```
{{ template "print_alerts" .Alerts }}
```

Quindi, per stampare solo gli avvisi di attivazione, puoi scrivere questo:

```
{{ template "print_alerts" .Alerts.Firing }}
```

Funziona perché entrambi `.Alerts` `.Alerts.Firing` sono elenchi di avvisi.

```
{{ define "print_alerts" }}
{{ range . }}
{{ template "print_labels" .SortedLabels }}
{{ end }}
{{ end }}
```

## Commenti
<a name="v9-go-comments"></a>

Puoi aggiungere commenti con `{{/*` e`*/}}`:

```
{{/* This is a comment */}}
```

Per evitare che i commenti aggiungano interruzioni di riga, usa:

```
{{- /* This is a comment with no leading or trailing line breaks */ -}}
```

## Indentazione
<a name="v9-go-indentation"></a>

Puoi usare l'indentazione, sia di tabulazioni che di spazi, e le interruzioni di riga, per rendere i modelli più leggibili:

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

Tuttavia, l'indentazione nel modello sarà presente anche nel testo. Successivamente vedremo come rimuoverlo.

## Rimuovi spazi e interruzioni di riga
<a name="v9-go-removespace"></a>

In text/template uso `{{-` e `-}}` per rimuovere gli spazi iniziali e finali e le interruzioni di riga.

Ad esempio, quando si utilizzano indentazioni e interruzioni di riga per rendere un modello più leggibile:

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

L'indentazione e le interruzioni di riga saranno presenti anche nel testo:

```
    alertname = "Test"

    grafana_folder = "Test alerts"
```

Puoi rimuovere i rientri e le interruzioni di riga dal testo cambiando la posizione `}}` `-}}` all'inizio di ogni intervallo:

```
{{ range .Alerts -}}
  {{ range .Labels.SortedPairs -}}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

I rientri e le interruzioni di riga nel modello sono ora assenti dal testo:

```
alertname = "Test"
grafana_folder = "Test alerts"
```

# Crea modelli di notifica
<a name="v9-alerting-create-templates"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 9.x di Grafana.**  
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 8.x di Grafana, vedere. [Funzionamento in Grafana versione 8](using-grafana-v8.md)

Crea modelli di notifica riutilizzabili da inviare ai tuoi punti di contatto.

Puoi aggiungere uno o più modelli al tuo modello di notifica.

Il nome del modello di notifica deve essere univoco. Non è possibile avere due modelli con lo stesso nome nello stesso modello di notifica o in modelli di notifica diversi. Evita di definire modelli con lo stesso nome dei modelli predefiniti, ad esempio: `__subject``__text_values_list`,`__text_alert_list`, `default.title` e`default.message`.

Nella scheda Punti di contatto, puoi visualizzare un elenco dei tuoi modelli di notifica.

## Creazione di modelli di notifica
<a name="v9-alerting-creating-templates"></a>

**Per creare un modello di notifica**

1. Fai clic su **Aggiungi modello**.

1. Scegli un nome per il modello di notifica, ad esempio`email.subject`.

1. Scrivi il contenuto del modello nel campo del contenuto.

   Esempio:

   ```
   {{ if .Alerts.Firing -}}
      {{ len .Alerts.Firing }} firing alerts
      {{ end }}
      {{ if .Alerts.Resolved -}}
      {{ len .Alerts.Resolved }} resolved alerts
      {{ end }}
   ```

1. Fai clic su Salva.

   `{{ define "email.subject" }}`(`email.subject`dov'è il nome del modello) e `{{ end }}` viene aggiunto automaticamente all'inizio e alla fine del contenuto.

**Per creare un modello di notifica che contenga più di un modello:**

1. Fai clic su **Aggiungi modello**.

1. Inserisci un nome per il modello di notifica generale. Ad esempio, `email`.

1. Scrivi ogni modello nel campo Contenuto, incluso `{{ define "name-of-template" }}` e `{{ end }}` all'inizio e alla fine di ogni modello. È possibile utilizzare nomi descrittivi per ciascuno dei modelli nel modello di notifica, ad esempio, `email.subject` o`email.message`. In questo caso, non riutilizzare il nome del modello di notifica inserito in precedenza.

   Le sezioni seguenti mostrano esempi dettagliati di modelli che potresti creare.

1. Fai clic su Salva.

## Creazione di un modello per l'oggetto di un'e-mail
<a name="v9-alerting-create-template-subject"></a>

Crea un modello per l'oggetto di un'e-mail che contenga il numero di avvisi di attivazione e risolti, come in questo esempio:

```
1 firing alerts, 0 resolved alerts
```

**Per creare un modello per l'oggetto di un'e-mail**

1. Crea un modello chiamato `email.subject` con il seguente contenuto:

   ```
   {{ define "email.subject" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Usa il modello quando crei l'integrazione del punto di contatto inserendolo nel campo **Oggetto** con la `template` parola chiave.

   ```
   {{ template "email.subject" . }}
   ```

## Creazione di un modello per il messaggio di un'e-mail
<a name="v9-alerting-create-template-message"></a>

Crea un modello per il messaggio di un'e-mail che contenga un riepilogo di tutti gli avvisi di attivazione e risolti, come in questo esempio:

```
There are 2 firing alerts, and 1 resolved alerts

Firing alerts:

- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2

Resolved alerts:

- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```

**Per creare un modello per il messaggio di un'e-mail**

1. Crea un modello di notifica chiamato `email` con due modelli nel contenuto: `email.message_alert` e`email.message`.

   Il `email.message_alert` modello viene utilizzato per stampare le etichette e i valori per ogni avviso di attivazione e risolto, mentre il `email.message` modello contiene la struttura dell'e-mail.

   ```
   {{- define "email.message_alert" -}}
   {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
   {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
   {{- end -}}
   
   {{ define "email.message" }}
   There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts
   
   {{ if .Alerts.Firing -}}
   Firing alerts:
   {{- range .Alerts.Firing }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ if .Alerts.Resolved -}}
   Resolved alerts:
   {{- range .Alerts.Resolved }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ end }}
   ```

1. Utilizza il modello per creare l'integrazione del punto di contatto inserendolo nel campo **Text Body** con la `template` parola chiave.

   ```
   {{ template "email.message" . }}
   ```

## Creazione di un modello per il titolo di un messaggio Slack
<a name="v9-alerting-create-template-slack-title"></a>

Crea un modello per il titolo di un messaggio Slack che contenga il numero di avvisi attivati e risolti, come nell'esempio seguente:

```
1 firing alerts, 0 resolved alerts
```

**Per creare un modello per il titolo di un messaggio Slack**

1. Crea un modello chiamato `slack.title` con il seguente contenuto:

   ```
   {{ define "slack.title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Usa il modello quando crei l'integrazione del tuo punto di contatto inserendolo nel campo **Titolo** con la `template` parola chiave.

   ```
   {{ template "slack.title" . }}
   ```

## Creazione di un modello per il contenuto di un messaggio Slack
<a name="v9-alerting-create-template-slack-message"></a>

Crea un modello per il contenuto di un messaggio Slack che contenga una descrizione di tutti gli avvisi attivati e risolti, comprese le etichette, le annotazioni e l'URL della dashboard:

```
1 firing alerts:

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alerts:

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```

**Per creare un modello per il contenuto di un messaggio Slack**

1. Crea un modello chiamato `slack` con due modelli nel contenuto: `slack.print_alert` e`slack.message`.

   Il `slack.print_alert` modello viene utilizzato per stampare le etichette, le annotazioni e DashboardURL mentre il `slack.message` modello contiene la struttura della notifica.

   ```
   {{ define "slack.print_alert" -}}
   [{{.Status}}] {{ .Labels.alertname }}
   Labels:
   {{ range .Labels.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ if .Annotations -}}
   Annotations:
   {{ range .Annotations.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ end -}}
   {{ if .DashboardURL -}}
     Go to dashboard: {{ .DashboardURL }}
   {{- end }}
   {{- end }}
   
   {{ define "slack.message" -}}
   {{ if .Alerts.Firing -}}
   {{ len .Alerts.Firing }} firing alerts:
   {{ range .Alerts.Firing }}
   {{ template "slack.print_alert" . }}
   {{ end -}}
   {{ end }}
   {{ if .Alerts.Resolved -}}
   {{ len .Alerts.Resolved }} resolved alerts:
   {{ range .Alerts.Resolved }}
   {{ template "slack.print_alert" .}}
   {{ end -}}
   {{ end }}
   {{- end }}
   ```

1. Usa il modello quando crei l'integrazione del punto di contatto inserendolo nel campo **Text Body con la parola chiave**. `template`

   ```
   {{ template "slack.message" . }}
   ```

## Crea modelli sia per email che per Slack con modelli condivisi
<a name="v9-alerting-create-shared-templates"></a>

Invece di creare modelli di notifica separati per ogni punto di contatto, come email e Slack, puoi condividere lo stesso modello.

Ad esempio, se desideri inviare un'email con questo oggetto e un messaggio Slack con questo titolo`1 firing alerts, 0 resolved alerts`, puoi creare un modello condiviso.

**Per creare un modello condiviso**

1. Crea un modello chiamato `common.subject_title` con il seguente contenuto:

   ```
   {{ define "common.subject_title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Per le e-mail, esegui il modello dal campo dell'oggetto nell'integrazione del punto di contatto e-mail:

   ```
   {{ template "common.subject_title" . }}
   ```

1. Per Slack, esegui il modello dal campo del titolo nell'integrazione con i punti di contatto Slack:

   ```
   {{ template "common.subject_title" . }}
   ```

## Utilizzo dei modelli di notifica
<a name="v9-alerting-use-notification-templates"></a>

Utilizza i modelli nei punti di contatto per personalizzare le notifiche.

**Per utilizzare un modello durante la creazione di un punto di contatto**

1. Dal menu **Avvisi**, scegli **Punti di contatto** per visualizzare un elenco di punti di contatto esistenti.

1. Scegli **Aggiungi punto di contatto**. In alternativa, puoi modificare un punto di contatto esistente scegliendo l'icona **Modifica** (penna) accanto al punto di contatto che desideri modificare.

1. Inserisci i modelli che desideri utilizzare in uno o più campi, come **Messaggio** o **Oggetto**. Per inserire un modello, usa il modulo`{{ template "template_name" . }}`, sostituendolo *template\$1name* con il nome del modello che desideri utilizzare.

1. Fai clic su **Salva punto di contatto**.

# Riferimento modello
<a name="v9-alerting-template-reference"></a>

****  
**Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 9.x di Grafana.**  
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 8.x di Grafana, vedere. [Funzionamento in Grafana versione 8](using-grafana-v8.md)

Questa sezione fornisce informazioni di riferimento per la creazione dei modelli.

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

I seguenti dati vengono passati ai modelli di messaggio.


| Name | 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.


| Name | Tipo | Note | 
| --- | --- | --- | 
|  Status  |  stringa  |  `firing` o `resolved`.  | 
|  Etichette  |  KeyValue  |  Un set di etichette allegate all'avviso.  | 
|  Annotazioni  |  KeyValue  |  Un insieme di annotazioni allegate all'avviso.  | 
| Valori | KeyValue | I valori di tutte le espressioni, incluse le condizioni classiche | 
|  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  |  Un link per silenziare l'avviso (con le etichette precompilate per questo avviso). 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.  | 

 **ExtendedData**

L' ExtendedData oggetto contiene le seguenti proprietà.


| Name | Tipo | Description | Esempio | 
| --- | --- | --- | --- | 
|  Ricevitore  |  `string`  |  Il nome del punto di contatto che invia la notifica.  |  `{{ .Receiver }}`  | 
|  Status  |  `string`  |  Lo stato è `firing if at least one alert is firing, otherwise resolved.`  |  `{{ .Status }}`  | 
|  Avvisi  |  `[]Alert`  |  Elenco di tutti gli allarmi attivi e risolti in questa notifica.  |  `There are {{ len .Alerts }} alerts`  | 
|  Avvisi di attivazione  |  `[]Alert`  |  Elenco di tutti gli allarmi di attivazione contenuti in questa notifica.  |  `There are {{ len .Alerts.Firing }} firing alerts`  | 
|  Avvisi risolti  |  `[]Alert`  |  Elenco di tutti gli avvisi risolti in questa notifica.  |  `There are {{ len .Alerts.Resolved }} resolved alerts`  | 
|  GroupLabels  |  `KeyValue`  |  Le etichette che raggruppano questi avvisi in questa notifica.  |  `{{ .GroupLabels }}`  | 
|  CommonLabels  |  `KeyValue`  |  Le etichette comuni a tutti gli avvisi di questa notifica.  |  `{{ .CommonLabels }}`  | 
|  CommonAnnotations  |  `KeyValue`  |  Le annotazioni comuni a tutti gli avvisi di questa notifica.  |  `{{ .CommonAnnotations }}`  | 
|  URL esterno  |  `string`  |  Un collegamento all'area di lavoro Grafana o Alertmanager che ha inviato questa notifica.  |  `{{ .ExternalURL }}`  | 

**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.


| Name | Arguments (Argomenti) | Valori restituiti | Note | Esempio | 
| --- | --- | --- | --- | --- | 
|  SortedPairs  |    |  Elenco ordinato di coppie di stringhe di chiavi e valori  |    | `{{ .Annotations.SortedPairs }}` | 
|  Rimuovi  |  [] stringa  |  KeyValue  |  Restituisce una copia della Key/Value mappa senza le chiavi fornite.  | `{{ .Annotations.Remove "summary" }}` | 
|  Nomi  |    |  [] stringa  |  Elenco dei nomi delle etichette  | `{{ .Names }}` | 
|  Valori  |    |  [] stringa  |  Elenco dei valori delle etichette  | `{{ .Values }}` | 

**Time** (Orario)

L'ora proviene dal [https://pkg.go.dev/time#Time](https://pkg.go.dev/time#Time)pacchetto Go. È possibile stampare un orario in diversi formati. Ad esempio, per stampare l'ora di attivazione di un avviso nel formato`Monday, 1st January 2022 at 10:00AM`, scrivi il seguente modello:

```
{{ .StartsAt.Format "Monday, 2 January 2006 at 3:04PM" }}
```

Puoi trovare un riferimento per il formato orario di Go [qui](https://pkg.go.dev/time#pkg-constants).

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

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


| Name | 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  | 