Vorlagen für Beschriftungen und Anmerkungen erstellen - Amazon Managed Grafana

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

Vorlagen für Beschriftungen und Anmerkungen sind in der Vorlagensprache von Go, Text/Vorlage, geschrieben.

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 $kBezieht 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