翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このドキュメントのトピックは、Grafana バージョン 8.x をサポートする Grafana ワークスペース向けです。
Grafana バージョン 10.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 10 での作業」を参照してください。
Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 9 での作業」を参照してください。
コンタクトポイント (通知先) の使用 経由で送信される通知は、メッセージングテンプレートを使用して構築されます。Grafana のデフォルトテンプレートは Go テンプレートシステム
コンタクトポイントに使用するほとんどのフィールドはテンプレート化できるため、再利用可能なカスタムテンプレートを作成し、複数のコンタクトポイントで使用すると良いでしょう。この テンプレートのデータ トピックでは、テンプレートに使用できる変数一覧を紹介します。
テンプレートの使用
テンプレートはメッセージを作成するために使用されます。例えば、Slack のアラートメッセージでは、コンタクトポイントにタイトルと本文を設定することができます。次の例では、デフォルトのテンプレートを使用して、発行されたアラートの件数と解決済みのアラートの件数を含むタイトルと、アラートとそのステータスを一覧表示する本文を作成する方法を紹介します。
-
タイトル:
{{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
-
本文テキスト:
{{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }} {{end }}
カスタムテンプレートは次のように作成します。
-
タイトル:
{{ template "slack.default.title" .}}
-
本文テキスト:
{{ template "mymessage" .}}
以下はサンプルテンプレートです。
{{ define "myalert" }}
[{{.Status}}] {{ .Labels.alertname }}
Labels:
{{ range .Labels.SortedPairs }}
{{ .Name }}: {{ .Value }}
{{ end }}
{{ if gt (len .Annotations) 0 }}
Annotations:
{{ range .Annotations.SortedPairs }}
{{ .Name }}: {{ .Value }}
{{ end }}
{{ end }}
{{ if gt (len .SilenceURL ) 0 }}
Silence alert: {{ .SilenceURL }}
{{ end }}
{{ if gt (len .DashboardURL ) 0 }}
Go to dashboard: {{ .DashboardURL }}
{{ end }}
{{ end }}
以下に、カスタムメッセージテンプレートを作成、編集、削除する手順を紹介します。
メッセージテンプレートの作成方法
-
Grafana コンソールの Grafana メニューで、[アラート] (ベル) アイコンを選択して [アラート] ページを開きます。
-
[コンタクトポイント] を選択します。
-
[アラートマネージャー] ドロップダウンから、メッセージテンプレートを作成するアラートマネージャーインスタンスを選択します。デフォルトは Grafana アラートマネージャーです。
-
テンプレートを追加を選択します。
-
わかりやすい名前を付けます。
-
テンプレートの内容を追加します。例:
{{ define "mymessage" }} {{ range .Alerts }} [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}} {{ end }} {{ end }}
コンテンツセクションの
define
タグは、テンプレート名を割り当てます。このタグはオプションです。省略した場合、テンプレート名は名前フィールドから取得されます。両方を指定する場合、一致させておくことが推奨されます。 -
[テンプレートを保存] を選択します。
注記
アラートメッセージテンプレートの HTML はテキストとして表示され、制御文字はエスケープされます。Grafana では、通知での HTML 形式の表示はサポートされていません。
メッセージテンプレートを編集するには
-
アラートページで、[コンタクトポイント]を選択してコンタクトポイントのリストを開きます。
-
テンプレートテーブルの編集するテンプレートで編集アイコン (ペン) を選択します。
-
変更後、[テンプレートを保存] を選択します。
メッセージテンプレートを削除するには
-
アラートページで、[コンタクトポイント]を選択してコンタクトポイントのリストを開きます。
-
テンプレートテーブルの削除するテンプレートで削除アイコン (ゴミ箱) を選択します。
-
[はい、削除します] を選択してテンプレートを削除します。
テンプレートのネスト
テンプレートは他のテンプレートに埋め込むことができます。
例えば、define
キーワードを使用してテンプレートの一部を定義することができます。
{{ define "mytemplate" }}
{{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
その後、 template
キーワードを使用して、このフラグメント内にカスタムテンプレートを埋め込むことができます。以下に例を示します。
Alert summary:
{{ template "mytemplate" . }}
以下のビルトインのテンプレートオプションを使用して、カスタムテンプレートを埋め込むことができます。
名前 | メモ |
---|---|
|
全体的なステータス情報を表示します。 |
|
発生中および解決済みのアラートの概要をフォーマット付きで提供します。 |
カスタムテンプレートの例
以下にカスタムテンプレートの使用方法の例を紹介します。
単一のアラートを表示するテンプレート:
{{ define "myalert" }}
[{{.Status}}] {{ .Labels.alertname }}
Labels:
{{ range .Labels.SortedPairs }}
{{ .Name }}: {{ .Value }}
{{ end }}
{{ if gt (len .Annotations) 0 }}
Annotations:
{{ range .Annotations.SortedPairs }}
{{ .Name }}: {{ .Value }}
{{ end }}
{{ end }}
{{ if gt (len .SilenceURL ) 0 }}
Silence alert: {{ .SilenceURL }}
{{ end }}
{{ if gt (len .DashboardURL ) 0 }}
Go to dashboard: {{ .DashboardURL }}
{{ end }}
{{ end }}
通知メッセージ全体を表示するテンプレート:
{{ define "mymessage" }}
{{ if gt (len .Alerts.Firing) 0 }}
{{ len .Alerts.Firing }} firing:
{{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }}
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
{{ len .Alerts.Resolved }} resolved:
{{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }}
{{ end }}
{{ end }}
テンプレートのデータ
メッセージテンプレートには、次のデータが渡されます。
名前 | 型 | メモ |
---|---|---|
|
文字列 |
コンタクトポイント (通知先) の名前。 |
|
文字列 |
少なくとも 1 つのアラートが発生している場合は「発生中」となり、それ以外の場合「解決済」となります。 |
|
アラート |
この通知に含まれるアラートオブジェクトのリスト (以下を参照)。 |
|
KeyValue |
これらのアラートがグループ化されたラベル。 |
|
KeyValue |
この通知に含まれるすべてのアラートに共通のラベル。 |
|
KeyValue |
この通知に含まれるすべてのアラートに共通する注釈。 |
|
文字列 |
通知の送信元である Grafana へのリンク。外部のアラートマネージャーを使用している場合、そのアラートマネージャーへのリンク。 |
Alerts
型には、返されたアラートをフィルタリングするための 2 つの関数があります。
-
Alerts.Firing
– 発生中のアラートのリストを返します。 -
Alerts.Resolved
– 解決済みのアラートのリストを返します。
アラート (型)
アラート型には、次のデータがあります。
名前 | 型 | メモ |
---|---|---|
ステータス |
文字列 |
|
ラベル |
KeyValue |
アラートに付与された一連のラベル。 |
注釈 |
KeyValue |
アラートに付与された一連の注釈。 |
StartsAt |
time.Time |
アラートが発行された時刻。 |
EndsAt |
time.Time |
アラートの終了時刻がわかっている場合にのみ設定されます。それ以外の場合、最後にアラートを受信してから設定可能なタイムアウト期間が適用されます。 |
GeneratorURL |
文字列 |
Grafana または外部アラートマネージャーへのリンク。 |
SilenceURL |
文字列 |
このアラートのラベルが事前に入力された grafana のサイレンスへのリンク。Grafana 管理のアラートのみ。 |
DashboardURL |
文字列 |
Grafana ダッシュボードへのリンク (アラートルールが Grafana に属している場合)。Grafana 管理のアラートのみ。 |
PanelURL |
文字列 |
Grafana ダッシュボードパネルへのリンク (アラートルールが Grafana に属している場合)。Grafana 管理のアラートのみ。 |
Fingerprint |
文字列 |
アラートの識別に使用するフィンガープリント。 |
ValueString |
文字列 |
アラート内の各削減された式のラベルと値を含む文字列。 |
KeyValue 型
KeyValue
型は、キー (ラベル) 値 (注釈) の文字列を組み合わせたものです。
KeyValue
として保存されたデータに直接アクセスするメソッドだけでなく、データをソート、削除、変換するメソッドも備えています。
名前 | 引数 | 戻り値 | メモ |
---|---|---|---|
SortedPairs |
キーと値の文字列のソート済みのリスト |
||
削除 |
[]string |
KeyValue |
指定したキーを除いたキー/値のマップのコピーを返します。 |
名前 |
[]string |
ラベル名のリスト |
|
値 |
[]string |
ラベル値のリスト |
テンプレート関数
テンプレート関数を使用すると、ラベルと注釈を処理して動的に通知を生成できます。以下の機能を使用できます。
名前 | 引数の型 | 戻り型 | 説明 |
---|---|---|---|
|
数値または文字列 |
文字列 |
メトリクスプレフィックスを使用して、数値をより読み取り可能な形式に変換します。 |
|
数値または文字列 |
文字列 |
humanize と同様に、1000 ではなく 1024 を基準にします。 |
|
数値または文字列 |
文字列 |
時間を秒単位のより読みやすい形式に変換します。 |
|
数値または文字列 |
文字列 |
比率の値を 100 分の 1 の形に変換します。 |
|
数値または文字列 |
文字列 |
Unix のタイムスタンプを秒単位のより読みやすい形式に変換します。 |
|
文字列 |
文字列 |
strings.Title を使用すると、各単語の最初の文字が大文字になります。 |
|
文字列 |
文字列 |
strings.ToUpper を使用すると、文字列がすべて大文字に変換されます。 |
|
文字列 |
文字列 |
strings.ToLower を使用すると、文字列がすべて小文字に変換されます。 |
|
パターン、テキスト |
boolean |
regexp.MatchString を使用すると、アンカーなしでの正規表現の一致テストを実行できます。 |
|
パターン、置換、テキスト |
文字列 |
Regexp.ReplaceAllString を使用すると、アンカーなしでの正規表現による置換が実行できます。 |
|
文字列 - |
文字列 |
指定された式とデータソースに対するグラフィカルビューへのパスを返します。 |
|
文字列 - |
文字列 |
指定された式とデータソースに対するタブ形式ビューへのパスを返します。 |
|
[]interface{} |
map[string]interface{} |
オブジェクトのリストを arg0、arg1 などのキーを持つマップに変換します。複数の引数をテンプレートに渡す場合、この関数を使用します。 |
|
なし |
文字列 |
外部 URL を表す文字列を返します。 |
|
なし |
文字列 |
外部 URL のパスを返します。 |
次の表に、各関数の使用例を紹介します。
関数 | TemplateString | Input | 予想 |
---|---|---|---|
humanize |
{ humanize $value } |
1234567.0 |
1.235M |
humanize1024 |
{ humanize1024 $value } |
1048576.0 |
1Mi |
humanizeDuration |
{ humanizeDuration $value } |
899.99 |
14 分 59 秒 |
humanizePercentage |
{ humanizePercentage $value } |
0.1234567 |
12.35% |
humanizeTimestamp |
{ humanizeTimestamp $value } |
1435065584.128 |
2015-06-23 13:19:44.128 +0000 UTC |
title |
{ $value | title } |
aa bB CC |
Aa Bb Cc |
toUpper |
{ $value | toUpper } |
aa bB CC |
AA BB CC |
toLower |
{ $value | toLower } |
aa bB CC |
aa bb cc |
match |
{ match "a+" $labels.instance } |
aa |
真 |
reReplaceAll |
{{ reReplaceAll "localhost:(.*)" "my.domain:$1" $labels.instance }} |
localhost:3000 |
my.domain:3000 |
graphLink |
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }} |
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}] |
|
tableLink |
{{ tableLink "{\"expr\":\"up\", \"datasource\":\"gdev-prometheus\"}" }} |
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}] |
|
args |
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}} |
1 2 |
|
externalURL |
{ externalURL } |
http://localhost/path/prefix |
|
pathPrefix |
{ pathPrefix } |
/path/prefix |