

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
<a name="v9-alerting-explore-labels-templating"></a>

****  
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](using-grafana-v10.md)  
Informationen zu Grafana-Arbeitsbereichen, die Grafana-Version 8.x unterstützen, finden Sie unter. [Arbeitet in Grafana-Version 8](using-grafana-v8.md)

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
<a name="v9-alerting-explore-labels-templating-go"></a>

[Vorlagen für Beschriftungen und Anmerkungen sind in der Vorlagensprache von Go, Text/Vorlage, geschrieben.](https://pkg.go.dev/text/template)

**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 es`test`.

```
{{ range $k, $v := $labels }}
{{ $k }}={{ $v }}
{{ end }}
```

## Die Variablen Labels, Value und Values
<a name="v9-alerting-explore-labels-templating-variables"></a>

**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
<a name="v9-alerting-explore-labels-templating-classic"></a>

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
<a name="v9-alerting-explore-labels-templating-functions"></a>

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](v9-explore.md) 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](v9-explore.md) 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
```