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
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 10.x di Grafana, vedere. Funzionamento nella versione 10 di Grafana
Per le aree di lavoro Grafana che supportano la versione 9.x di Grafana, vedere. Lavorare nella versione 9 di Grafana
Le notifiche inviate tramite Lavorare con i punti di contatto 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
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 modelloargomento 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
-
Dalla console Grafana, nel menu Grafana, scegli l'icona Avvisi (campanella) per aprire la pagina Avvisi.
-
Scegli Punti di contatto.
-
Dal menu a discesa Alertmanager, seleziona l'istanza Alertmanager per cui desideri creare un modello di messaggio. L'impostazione predefinita è Grafana Alertmanager.
-
Scegli Aggiungi modello.
-
Aggiungi un nome descrittivo.
-
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. -
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
-
Nella pagina Avvisi, scegli Punti di contatto per aprire l'elenco dei punti di contatto.
-
Nella tabella Modello, trova il modello che desideri modificare, quindi scegli l'icona Modifica (penna).
-
Apporta le modifiche, quindi scegli Salva modello.
Per eliminare un modello di messaggio
-
Nella pagina Avvisi, scegli Punti di contatto per aprire l'elenco dei punti di contatto.
-
Nella tabella Modello, trova il modello che desideri rimuovere, quindi scegli l'icona Elimina (cestino).
-
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
Per esempio:
Alert summary: {{ template "mytemplate" . }}
È possibile utilizzare le seguenti opzioni di modello integrate per incorporare modelli personalizzati.
Nome | Note |
---|---|
|
Visualizza informazioni sullo stato di alto livello. |
|
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
I seguenti dati vengono passati ai modelli di messaggio.
Nome | Type | Note |
---|---|---|
|
string |
Nome del punto di contatto a cui viene inviata la notifica. |
|
string |
attivazione se viene attivato almeno un avviso, altrimenti risolto. |
|
Alert |
Elenco degli oggetti di avviso inclusi in questa notifica (vedi sotto). |
|
KeyValue |
Etichette in base alle quali questi avvisi sono stati raggruppati. |
|
KeyValue |
Etichette comuni a tutti gli avvisi inclusi in questa notifica. |
|
KeyValue |
Annotazioni comuni a tutti gli avvisi inclusi in questa notifica. |
|
string |
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 | Type | Note |
---|---|---|
Stato |
string |
|
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 |
string |
Un link a Grafana o Alertmanager esterno. |
URL silenzioso |
string |
Link a grafana silence for con le etichette per questo avviso precompilate. Solo per gli avvisi gestiti da Grafana. |
URL del pannello di controllo |
string |
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 |
string |
Collegamento al pannello di dashboard di Grafana, se la regola di avviso appartiene a uno. Solo per gli avvisi gestiti da Grafana. |
Impronta digitale |
string |
Impronta digitale che può essere utilizzata per identificare l'avviso. |
ValueString |
string |
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 stringhe chiave/valore che rappresentano etichette e annotazioni.
Oltre all'accesso diretto ai dati archiviati come fileKeyValue
, esistono anche metodi per ordinare, rimuovere e trasformare i dati.
Nome | Argomenti | Valori restituiti | Note |
---|---|---|---|
SortedPairs |
Elenco ordinato di coppie di stringhe di chiavi e valori |
||
Rimuovi |
[] stringa |
KeyValue |
Restituisce una copia della mappa chiave/valore senza le chiavi fornite. |
Nomi |
[] stringa |
Elenco dei nomi delle etichette |
|
Valori |
[] stringa |
Elenco dei valori delle etichette |
Funzioni del modello
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 | Descrizione |
---|---|---|---|
|
numero o stringa |
string |
Converte un numero in un formato più leggibile, utilizzando prefissi metrici. |
|
numero o stringa |
string |
Come humanize, ma usa 1024 come base anziché 1000. |
|
numero o stringa |
string |
Converte una durata in secondi in un formato più leggibile. |
|
numero o stringa |
string |
Converte un valore del rapporto in una frazione di 100. |
|
numero o stringa |
string |
Converte un timestamp Unix in pochi secondi in un formato più leggibile. |
|
string |
string |
Strings.title, mette in maiuscolo il primo carattere di ogni parola. |
|
string |
string |
stringhe. ToUpper, converte tutti i caratteri in lettere maiuscole. |
|
string |
string |
stringhe. ToLower, converte tutti i caratteri in minuscolo. |
|
motivo, testo |
booleano |
espressione regolare. MatchString Verifica una corrispondenza regexp non ancorata. |
|
modello, sostituzione, testo |
string |
Regexp. ReplaceAllString Sostituzione Regexp, non ancorata. |
|
string - Oggetto JSON con e campi |
string |
Restituisce il percorso della visualizzazione grafica in Explore per l'espressione e l'origine dati specificate. |
|
string - Oggetto JSON con |
string |
Restituisce il percorso della vista tabulare in Explore per l'espressione e l'origine dati specificate. |
|
[] 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. |
|
nulla |
string |
Restituisce una stringa che rappresenta l'URL esterno. |
|
nulla |
string |
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 |
reReplaceAll |
{{ reReplaceAll «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} |
/percorso/prefisso |