翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ラベルと注釈のテンプレート化
このドキュメントトピックは、Grafana バージョン 9.x をサポートする Grafana ワークスペース向けに設計されています。
Grafana バージョン 10.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 10 での作業。
Grafana バージョン 8.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 8 での作業。
Grafana では、Prometheus と同じようにラベルと注釈をテンプレート化します。以前に Prometheus を使用したことがある場合は、アラートのラベルと値を含む $labels
および $value
変数に精通している必要があります。アラートが Prometheus データソースを使用していない場合でも、Grafana で同じ変数を使用できます。以前に Prometheus を使用したことがない場合は、これらの各変数とそのテンプレート作成方法を心配しないでください。このページの残りの部分に従うと、 が説明されます。
Go のテンプレート言語
ラベルと注釈のテンプレートは、Go のテンプレート言語であるテキスト/テンプレート
タグの開閉
テキスト/テンプレートでは、テンプレートが変数を出力するか、if }}
ステートメントなどの制御構造を実行するかに関係なく、テンプレートは で始まり、 で{{
終わります。これは、変数の印刷で と を使用し、制御構造で {{
}}
と を使用する Jinja などの他のテンプレート言語とは異なり{%
ます%}
。
[Print]
何かの値を出力するには、 {{
と を使用します}}
。関数の結果または変数の値を印刷できます。例えば、 $labels
変数を出力するには、次のように記述します。
{{ $labels }}
ラベルを反復処理する
内の各ラベルを反復処理するには、 $labels
を使用できますrange
。ここで$k
、 は名前を指し、 は現在のラベルの値$v
を指します。例えば、クエリがラベルを返instance=test
した場合、 $k
は instance
になり、 は $v
になりますtest
。
{{ range $k, $v := $labels }} {{ $k }}={{ $v }} {{ end }}
ラベル、値、値変数
ラベル変数
$labels
変数には、クエリのラベルが含まれます。例えば、インスタンスがダウンしているかどうかを確認するクエリは、ダウンしているインスタンスの名前を含むインスタンスラベルを返す場合があります。例えば、インスタンスの 1 つが 5 分以上ダウンしたときに発生するアラートルールがあるとします。どのインスタンスがダウンしているかを知らせる概要をアラートに追加します。$labels
変数を使用すると、概要にインスタンスラベルを出力する概要を作成できます。
Instance {{ $labels.instance }} has been down for more than 5 minutes
ドット付きのラベル
印刷するラベルの名前に同じドット (完全な停止またはピリオド) が含まれている場合、テンプレート内の同じドットは機能しません。
Instance {{ $labels.instance.name }} has been down for more than 5 minutes
これは、テンプレートが で という既存のフィールドを使用しようとしているためですname
$labels.instance
。代わりに 関数を使用する必要があります。このindex
関数は、 $labels
変数instance.name
にラベルを出力します。
Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes
値変数
$value
変数は Prometheus とは異なります。Prometheus $value
は式の値を含む浮動小数点数ですが、Grafana では、このアラートルールのすべてのしきい値、Reduce 式と Math 式、および Classic 条件のラベルと値を含む文字列です。クエリの結果は 10 から 10,000 行またはメトリクスまで返す可能性があるため、クエリの結果は含まれません。
アラートの概要で $value
変数を使用する場合:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})
概要は次のようになります。
api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]
ここでは、RefID B を持つ式var='B'
を指します。Grafana では、すべてのクエリと式は、アラートルール内の各クエリと式を識別する RefID によって識別されます。同様に、 labels={service=api}
はラベルを参照し、 は値value=6.789
を参照します。
RefID A がないことに気付いたかもしれません。これは、ほとんどのアラートルールでは RefID A がクエリを参照しているためです。また、クエリは多くの行や時系列を返すことができるため、 に含まれていません$value
。
値変数
$value
変数に必要以上の情報が含まれている場合は、代わりに を使用して個々の式のラベルと値を出力できます$values
。とは異なり$value
、 $values
変数は、各式のラベルと浮動小数点値を含むオブジェクトのテーブルであり、RefID によってインデックス化されます。
アラートB
の概要に RefID を使用して式の値を印刷する場合:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%
概要には 値のみが含まれます。
api has an over 5% of responses with 5xx errors: 6.789%
ただし、 は数字 6.789 {{ $values.B }}
を出力しますが、実際には、RefID B の浮動小数点値ではなく、RefID B のラベルと値の両方を含むオブジェクトを出力する文字列です。RefID B の浮動小数点値を使用するには、 の Value
フィールドを使用する必要があります$values.B
。アラートの概要で浮動小数点値をヒューマナイズする場合:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
データなし、ランタイムエラー、タイムアウト
アラートルールのクエリがデータを返さない場合、またはデータソースのエラーやタイムアウトのために失敗した場合、そのクエリを使用するしきい値、削減、または数式もデータやエラーを返しません。この場合、これらの式は には存在しません$values
。使用する前に RefID が存在することを確認することをお勧めします。そうしないと、クエリがデータまたはエラーを返さない場合にテンプレートが壊れます。これは、if ステートメントを使用して実行できます。
{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}
クラシック条件
ルールがしきい値、Reduce、および Math 式の代わりに Classic Conditions を使用する場合、$values
変数は Classic Condition の Ref ID と条件の位置の両方によってインデックス化されます。例えば、RefID B に 2 つの条件を含む Classic Condition がある場合、 $values
には 2 つの条件 B0
と が含まれますB1
。
The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}
関数
ラベルと注釈を展開するときにも、次の関数を使用できます。
引数
args
関数は、オブジェクトのリストをキー arg0、arg1 などのマップに変換します。これは、複数の引数をテンプレートに渡せるようにすることを目的としています。
例
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
1 2
externalURL
このexternalURL
関数は、ini ファイルで設定された Grafana サーバーの外部 URL を返します (複数可)。
例
{{ externalURL }}
https://example.com/grafana
graphLink
graphLink
関数は、指定された式とデータソースGrafana バージョン 9 で を試すの のグラフィカルビューへのパスを返します。
例
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
ヒューマナイズ
humanize
関数は 10 進数をヒューマナイズします。
例
{{ humanize 1000.0 }}
1k
humanize1024
humanize1024
は と似ていますhumanize
が、1000 ではなく 1024 をベースとして使用します。
例
{{ humanize1024 1024.0 }}
1ki
humanizeDuration
humanizeDuration
関数は、時間を秒単位でヒューマナイズします。
例
{{ humanizeDuration 60.0 }}
1m 0s
humanizePercentage
humanizePercentage
関数は、比率値をパーセンテージにヒューマナイズします。
例
{{ humanizePercentage 0.2 }}
20%
humanizeTimestamp
humanizeTimestamp
関数は Unix タイムスタンプをヒューマナイズします。
例
{{ humanizeTimestamp 1577836800.0 }}
2020-01-01 00:00:00 +0000 UTC
一致
match
関数は、テキストを正規表現パターンと照合します。
例
{{ match "a.*" "abc" }}
true
pathPrefix
このpathPrefix
関数は、ini ファイルで設定された Grafana サーバーのパスを返します (複数可)。
例
{{ pathPrefix }}
/grafana
tableLink
tableLink
関数は、指定された式とデータソースGrafana バージョン 9 で を試すの の表形式ビューへのパスを返します。
例
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
title
title
関数は、各単語の最初の文字を大文字にします。
例
{{ title "hello, world!" }}
Hello, World!
toLower
toLower
関数はすべてのテキストを小文字で返します。
例
{{ toLower "Hello, world!" }}
hello, world!
toUpper
toUpper
関数はすべてのテキストを大文字で返します。
例
{{ toUpper "Hello, world!" }}
HELLO, WORLD!
reReplaceAll
reReplaceAll
関数は、正規表現に一致するテキストを置き換えます。
例
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
example.com:8080