Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Vorlagen für Beschriftungen und Anmerkungen erstellen
Dieses Dokumentationsthema wurde für Grafana-Workspaces entwickelt, die Grafana-Version 9.x unterstützen.
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 10.x unterstützen, finden Sie unter. Arbeitet in Grafana-Version 10
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. Arbeitet in Grafana-Version 8
In Grafana erstellen Sie Vorlagen für Beschriftungen und Anmerkungen, genau wie in Prometheus. Wenn Sie Prometheus schon einmal verwendet haben, sollten Sie mit den $value
Variablen $labels
und vertraut sein, die die Bezeichnungen und den Wert der Warnung enthalten. Sie können dieselben Variablen in Grafana verwenden, auch wenn die Warnung keine Prometheus-Datenquelle verwendet. Wenn Sie Prometheus noch nicht verwendet haben, machen Sie sich keine Sorgen, denn jede dieser Variablen und wie Sie sie als Vorlage verwenden, wird im weiteren Verlauf dieser Seite erklärt.
Die Vorlagensprache von Go
Tags öffnen und schließen
In text/template beginnen {{
und enden Vorlagen mit, }}
unabhängig davon, ob die Vorlage eine Variable druckt oder Kontrollstrukturen wie if-Anweisungen ausführt. Dies unterscheidet sich von anderen Template-Sprachen wie Jinja, wo das Drucken einer Variablen und und {{
Kontrollstrukturen }}
und verwenden. {%
%}
Print (Ausgabe)
Um den Wert von etwas zu drucken, verwende {{
und. }}
Sie können das Ergebnis einer Funktion oder den Wert einer Variablen drucken. Um beispielsweise die $labels
Variable zu drucken, würden Sie Folgendes schreiben:
{{ $labels }}
Iterieren Sie über Beschriftungen
Um über jedes Etikett zu iterieren, können $labels
Sie a verwenden. range
$k
Bezieht sich hier auf den Namen und $v
bezieht sich auf den Wert des aktuellen Labels. Wenn Ihre Abfrage beispielsweise ein Label zurückgibt, instance=test
dann $k
wäre instance
und $v
wäre estest
.
{{ range $k, $v := $labels }} {{ $k }}={{ $v }} {{ end }}
Die Variablen Labels, Value und Values
Die Bezeichnungsvariable
Die $labels
Variable enthält die Labels aus der Abfrage. Beispielsweise kann eine Abfrage, die prüft, ob eine Instanz ausgefallen ist, ein Instanzlabel mit dem Namen der Instanz zurückgeben, die ausgefallen ist. Nehmen wir beispielsweise an, Sie haben eine Warnungsregel, die ausgelöst wird, wenn eine Ihrer Instances länger als 5 Minuten ausgefallen ist. Sie möchten der Warnung eine Zusammenfassung hinzufügen, die Ihnen mitteilt, welche Instanz ausgefallen ist. Mit der $labels
Variablen können Sie eine Zusammenfassung erstellen, die das Instanzlabel in der Zusammenfassung ausgibt:
Instance {{ $labels.instance }} has been down for more than 5 minutes
Beschriftungen mit Punkten
Wenn das Etikett, das Sie drucken möchten, einen Punkt (Punkt oder Punkt) im Namen enthält, funktioniert die Verwendung desselben Punktes in der Vorlage nicht:
Instance {{ $labels.instance.name }} has been down for more than 5 minutes
Das liegt daran, dass die Vorlage versucht, ein nicht vorhandenes name
aufgerufenes $labels.instance
Feld zu verwenden. Sie sollten stattdessen die index
Funktion verwenden, die das Etikett instance.name
in der $labels
Variablen druckt:
Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes
Die Wertvariable
Die $value
Variable funktioniert anders als Prometheus. In Prometheus $value
ist es eine Fließkommazahl, die den Wert des Ausdrucks enthält, aber in Grafana ist es eine Zeichenfolge, die die Bezeichnungen und Werte aller Threshold-, Reduce- und Math-Ausdrücke sowie der klassischen Bedingungen für diese Warnregel enthält. Sie enthält keine Ergebnisse von Abfragen, da diese zwischen 10 und 10.000 Zeilen oder Metriken zurückgeben können.
Wenn Sie die $value
Variable in der Zusammenfassung einer Warnung verwenden würden:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})
Die Zusammenfassung könnte etwa wie folgt aussehen:
api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]
var='B'
Bezieht sich hier auf den Ausdruck mit der Referenznummer B. In Grafana werden alle Abfragen und Ausdrücke durch eine RefID identifiziert, die jede Abfrage und jeden Ausdruck in einer Alert-Regel identifiziert. labels={service=api}
Bezieht sich in ähnlicher Weise auf die Bezeichnungen und value=6.789
bezieht sich auf den Wert.
Möglicherweise haben Sie festgestellt, dass es keine Referenznummer A gibt. Das liegt daran, dass sich die Referenznummer A in den meisten Warnungsregeln auf eine Abfrage bezieht und dass Abfragen viele Zeilen oder Zeitreihen zurückgeben können, in denen sie nicht enthalten sind. $value
Die Werte sind variabel
Wenn die $value
Variable mehr Informationen enthält, als Sie benötigen, können Sie stattdessen die Bezeichnungen und den Wert einzelner Ausdrücke mit drucken$values
. Im $value
Gegensatz dazu handelt es sich bei der $values
Variablen um eine Tabelle mit Objekten, die die Bezeichnungen und Fließkommawerte jedes Ausdrucks enthält, die anhand ihrer Referenznummer indexiert sind.
Wenn Sie den Wert des Ausdrucks mit refID B
in der Zusammenfassung der Warnung drucken würden:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%
Die Zusammenfassung enthält nur den Wert:
api has an over 5% of responses with 5xx errors: 6.789%
Obwohl die Zahl 6,789 {{ $values.B }}
gedruckt wird, handelt es sich tatsächlich um eine Zeichenfolge, da Sie das Objekt drucken, das sowohl die Beschriftungen als auch den Wert für Referenznummer B enthält, nicht den Fließkommawert von B. Um den Fließkommawert von Referenz B zu verwenden, müssen Sie das Feld von verwenden. Value
$values.B
Wenn Sie den Fließkommawert in der Zusammenfassung einer Warnung humanisieren würden:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
Keine Daten, Laufzeitfehler und Timeouts
Wenn die Abfrage in Ihrer Warnungsregel keine Daten zurückgibt oder aufgrund eines Datenquellenfehlers oder einer Zeitüberschreitung fehlschlägt, geben alle Threshold-, Reduce- oder Math-Ausdrücke, die diese Abfrage verwenden, ebenfalls keine Daten oder einen Fehler zurück. In diesem Fall fehlen diese Ausdrücke in. $values
Es empfiehlt sich, vor der Verwendung zu überprüfen, ob eine RefID vorhanden ist, da Ihre Vorlage sonst beschädigt wird, wenn Ihre Abfrage keine Daten oder einen Fehler zurückgibt. Sie können dies mit einer if-Anweisung tun:
{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}
Klassische Bedingungen
Wenn die Regel klassische Bedingungen anstelle von Threshold-, Reduce- und Math-Ausdrücken verwendet, wird die $values
Variable sowohl anhand der Referenz-ID als auch anhand der Position der Bedingung in der klassischen Bedingung indexiert. Wenn Sie beispielsweise eine klassische Bedingung mit RefID B haben, die zwei Bedingungen enthält, $values
dann enthält sie zwei Bedingungen B0
und. B1
The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}
Funktionen
Die folgenden Funktionen sind auch verfügbar, wenn Beschriftungen und Anmerkungen erweitert werden:
Argumente
Die args
Funktion übersetzt eine Liste von Objekten in eine Map mit den Schlüsseln arg0, arg1 usw. Dies soll die Übergabe mehrerer Argumente an Vorlagen ermöglichen.
Beispiel
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
1 2
Externe URL
Die externalURL
Funktion gibt die externe URL des Grafana-Servers zurück, wie sie in der (den) INI-Datei (en) konfiguriert ist.
Beispiel
{{ externalURL }}
https://example.com/grafana
GraphLink
Die graphLink
Funktion gibt den Pfad zur grafischen Ansicht Erkunden Sie in Grafana-Version 9 für den angegebenen Ausdruck und die angegebene Datenquelle zurück.
Beispiel
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
humanisieren
Die humanize
Funktion humanisiert Dezimalzahlen.
Beispiel
{{ humanize 1000.0 }}
1k
humanisieren1024
Das humanize1024
funktioniert ähnlich wie, verwendet humanize
aber 1024 statt 1000 als Basis.
Beispiel
{{ humanize1024 1024.0 }}
1ki
Dauer humanisieren
Die humanizeDuration
Funktion humanisiert eine Dauer in Sekunden.
Beispiel
{{ humanizeDuration 60.0 }}
1m 0s
Prozentsatz humanisieren
Die humanizePercentage
Funktion humanisiert einen Verhältniswert zu einem Prozentsatz.
Beispiel
{{ humanizePercentage 0.2 }}
20%
HumanizeTimestamp
Die humanizeTimestamp
Funktion humanisiert einen Unix-Zeitstempel.
Beispiel
{{ humanizeTimestamp 1577836800.0 }}
2020-01-01 00:00:00 +0000 UTC
Spiel
Die match
Funktion gleicht den Text mit einem regulären Ausdrucksmuster ab.
Beispiel
{{ match "a.*" "abc" }}
true
Pfad/Präfix
Die pathPrefix
Funktion gibt den Pfad des Grafana-Servers zurück, wie er in der (den) INI-Datei (en) konfiguriert ist.
Beispiel
{{ pathPrefix }}
/grafana
TableLink
Die tableLink
Funktion gibt den Pfad zur Tabellenansicht Erkunden Sie in Grafana-Version 9 für den angegebenen Ausdruck und die angegebene Datenquelle zurück.
Beispiel
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
Titel
Die title
Funktion schreibt das erste Zeichen jedes Worts groß.
Beispiel
{{ title "hello, world!" }}
Hello, World!
toLower
Die toLower
Funktion gibt den gesamten Text in Kleinbuchstaben zurück.
Beispiel
{{ toLower "Hello, world!" }}
hello, world!
toUpper
Die toUpper
Funktion gibt den gesamten Text in Großbuchstaben zurück.
Beispiel
{{ toUpper "Hello, world!" }}
HELLO, WORLD!
reReplaceAll
Die reReplaceAll
Funktion ersetzt Text, der dem regulären Ausdruck entspricht.
Beispiel
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
example.com:8080