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à.
Modelli di etichette e annotazioni
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
Per le aree di lavoro Grafana che supportano la versione 8.x di Grafana, vedere. Funzionamento in Grafana versione 8
In Grafana, crei modelli di etichette e annotazioni proprio come faresti in Prometheus. Se hai già usato Prometheus, dovresti conoscere le variabili $value
and, che contengono le etichette e $labels
il valore dell'avviso. È possibile utilizzare le stesse variabili in Grafana, anche se l'avviso non utilizza un'origine dati Prometheus. Se non hai mai usato Prometheus prima, non preoccuparti perché ognuna di queste variabili e come modellarle ti verranno spiegate mentre segui il resto di questa pagina.
Il linguaggio di template di Go
I modelli per etichette e annotazioni sono scritti nel linguaggio di template di Go, text/template.
Tag di apertura e chiusura
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)
Per stampare il valore di qualcosa usa e. {{
}}
È possibile stampare il risultato di una funzione o il valore di una variabile. Ad esempio, per stampare la $labels
variabile devi scrivere quanto segue:
{{ $labels }}
Iterate sulle etichette
Per iterare su ogni etichetta $labels
puoi usare un. range
Qui $k
si riferisce al nome e $v
al valore dell'etichetta corrente. Ad esempio, se la tua query restituisse un'etichettainstance=test
, allora $k
lo sarebbe instance
e $v
lo sarebbetest
.
{{ range $k, $v := $labels }} {{ $k }}={{ $v }} {{ end }}
Le variabili labels, value e values
La variabile labels
La $labels
variabile contiene le etichette della query. Ad esempio, una query che verifica se un'istanza è inattiva potrebbe restituire un'etichetta di istanza con il nome dell'istanza inattiva. Ad esempio, supponiamo di avere una regola di avviso che si attiva quando una delle istanze rimane inattiva per più di 5 minuti. Desideri aggiungere un riepilogo all'avviso che indichi quale istanza è inattiva. Con la $labels
variabile, puoi creare un riepilogo che stampa l'etichetta dell'istanza nel riepilogo:
Instance {{ $labels.instance }} has been down for more than 5 minutes
Etichette con punti
Se l'etichetta che desideri stampare contiene un punto (punto o punto) nel nome, l'utilizzo dello stesso punto nel modello non funzionerà:
Instance {{ $labels.instance.name }} has been down for more than 5 minutes
Questo perché il modello sta tentando di utilizzare un campo inesistente chiamato name
in. $labels.instance
Dovresti invece usare la index
funzione, che stampa l'etichetta instance.name
nella $labels
variabile:
Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes
La variabile value
La $value
variabile funziona in modo diverso da Prometheus. In $value
Prometheus è presente un numero in virgola mobile contenente il valore dell'espressione, mentre in Grafana è una stringa contenente le etichette e i valori di tutte le espressioni Threshold, Reduce e Math e Classic Conditions per questa regola di avviso. Non contiene i risultati delle interrogazioni, in quanto possono restituire da 10 a 10.000 righe o metriche.
Se dovessi utilizzare la $value
variabile nel riepilogo di un avviso:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})
Il riepilogo potrebbe essere simile al seguente:
api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]
Qui var='B'
si fa riferimento all'espressione con RefID B. In Grafana, tutte le interrogazioni e le espressioni sono identificate da un RefID che identifica ogni query ed espressione in una regola di avviso. Analogamente labels={service=api}
si riferisce alle etichette e si riferisce al valore. value=6.789
Avrete notato che non esiste un RefID A. Questo perché nella maggior parte delle regole di avviso il RefID A fa riferimento a una query e poiché le query possono restituire molte righe o serie temporali in cui non sono incluse. $value
La variabile values
Se la $value
variabile contiene più informazioni del necessario, è possibile invece stampare le etichette e il valore delle singole espressioni utilizzando$values
. Al contrario$value
, la $values
variabile è una tabella di oggetti contenente le etichette e i valori in virgola mobile di ciascuna espressione, indicizzati in base al relativo RefID.
Se dovessi stampare il valore dell'espressione con refID nel riepilogo B
dell'avviso:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%
Il riepilogo conterrà solo il valore:
api has an over 5% of responses with 5xx errors: 6.789%
Tuttavia, mentre {{ $values.B }}
stampa il numero 6.789, in realtà si tratta di una stringa, poiché si stampa l'oggetto, che contiene sia le etichette che il valore per RefID B, non il valore in virgola mobile di B. Per utilizzare il valore a virgola mobile di RefID B è necessario utilizzare il campo da. Value
$values.B
Se dovessi umanizzare il valore in virgola mobile nel riepilogo di un avviso:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
Nessun dato, errori di runtime e timeout
Se la query inclusa nella regola di avviso non restituisce dati o fallisce a causa di un errore nell'origine dati o di un timeout, anche tutte le espressioni Threshold, Reduce o Math che utilizzano quella query non restituiranno dati o un errore. Quando ciò accade, queste espressioni saranno assenti da. $values
È buona norma verificare che sia presente un RefID prima di utilizzarlo, altrimenti il modello si interromperà nel caso in cui la query non restituisca dati o restituisca un errore. Puoi farlo usando un'istruzione if:
{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}
Condizioni classiche
Se la regola utilizza le condizioni classiche anziché le espressioni Threshold, Reduce e Math, la $values
variabile viene indicizzata sia in base all'ID di riferimento che alla posizione della condizione nella condizione classica. Ad esempio, se hai una condizione classica con RefID B contenente due condizioni, allora $values
conterrà due condizioni e. B0
B1
The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}
Funzioni
Le seguenti funzioni sono disponibili anche quando si espandono etichette e annotazioni:
args
La args
funzione traduce un elenco di oggetti in una mappa con le chiavi arg0, arg1 ecc. Questo ha lo scopo di consentire il passaggio di più argomenti ai modelli.
Esempio
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
1 2
URL esterno
La externalURL
funzione restituisce l'URL esterno del server Grafana come configurato nei file ini.
Esempio
{{ externalURL }}
https://example.com/grafana
GraphLink
La graphLink
funzione restituisce il percorso della visualizzazione grafica Esplora nella versione 9 di Grafana per l'espressione e l'origine dati specificate.
Esempio
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
umanizzare
La humanize
funzione umanizza i numeri decimali.
Esempio
{{ humanize 1000.0 }}
1k
umanizza 1024
humanize1024
Funziona in modo simile humanize
ma utilizza 1024 come base anziché 1000.
Esempio
{{ humanize1024 1024.0 }}
1ki
Durata umanizzata
La humanizeDuration
funzione umanizza una durata in secondi.
Esempio
{{ humanizeDuration 60.0 }}
1m 0s
Umanizza la percentuale
La humanizePercentage
funzione umanizza un valore di rapporto rispetto a una percentuale.
Esempio
{{ humanizePercentage 0.2 }}
20%
Umanizza il timestamp
La humanizeTimestamp
funzione umanizza un timestamp Unix.
Esempio
{{ humanizeTimestamp 1577836800.0 }}
2020-01-01 00:00:00 +0000 UTC
partita
La match
funzione abbina il testo a un modello di espressione regolare.
Esempio
{{ match "a.*" "abc" }}
true
PathPrefix
La pathPrefix
funzione restituisce il percorso del server Grafana come configurato nei file ini.
Esempio
{{ pathPrefix }}
/grafana
TableLink
La tableLink
funzione restituisce il percorso della vista tabulare Esplora nella versione 9 di Grafana per l'espressione e l'origine dati specificate.
Esempio
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
titolo
La title
funzione rende maiuscolo il primo carattere di ogni parola.
Esempio
{{ title "hello, world!" }}
Hello, World!
a Lower
La toLower
funzione restituisce tutto il testo in lettere minuscole.
Esempio
{{ toLower "Hello, world!" }}
hello, world!
a TOUPPER
La toUpper
funzione restituisce tutto il testo in maiuscolo.
Esempio
{{ toUpper "Hello, world!" }}
HELLO, WORLD!
reReplaceAll
La reReplaceAll
funzione sostituisce il testo corrispondente all'espressione regolare.
Esempio
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
example.com:8080