翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
メッセージテンプレートの使用
このドキュメントのトピックは、Grafana バージョン 8.x をサポートする Grafana ワークスペース向けです。
Grafana バージョン 12.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 12 での作業。
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 }}
テンプレートのデータ
メッセージテンプレートには、次のデータが渡されます。
| 名前 | 型 | 注意事項 |
|---|---|---|
|
|
string |
コンタクトポイント (通知先) の名前。 |
|
|
string |
少なくとも 1 つのアラートが発生している場合は「発生中」となり、それ以外の場合「解決済」となります。 |
|
|
アラート |
この通知に含まれるアラートオブジェクトのリスト (以下を参照)。 |
|
|
KeyValue |
これらのアラートがグループ化されたラベル。 |
|
|
KeyValue |
この通知に含まれるすべてのアラートに共通のラベル。 |
|
|
KeyValue |
この通知に含まれるすべてのアラートに共通する注釈。 |
|
|
string |
通知の送信元である Grafana へのリンク。外部のアラートマネージャーを使用している場合、そのアラートマネージャーへのリンク。 |
Alerts 型には、返されたアラートをフィルタリングするための 2 つの関数があります。
-
Alerts.Firing– 発生中のアラートのリストを返します。 -
Alerts.Resolved– 解決済みのアラートのリストを返します。
アラート (型)
アラート型には、次のデータがあります。
| 名前 | 型 | 注意事項 |
|---|---|---|
|
ステータス |
string |
|
|
ラベル |
KeyValue |
アラートに付与された一連のラベル。 |
|
注釈 |
KeyValue |
アラートに付与された一連の注釈。 |
|
StartsAt |
time.Time |
アラートが発行された時刻。 |
|
EndsAt |
time.Time |
アラートの終了時刻がわかっている場合にのみ設定されます。それ以外の場合、最後にアラートを受信してから設定可能なタイムアウト期間が適用されます。 |
|
GeneratorURL |
string |
Grafana または外部アラートマネージャーへのリンク。 |
|
SilenceURL |
string |
このアラートのラベルが事前に入力された grafana のサイレンスへのリンク。Grafana 管理のアラートのみ。 |
|
DashboardURL |
string |
Grafana ダッシュボードへのリンク (アラートルールが Grafana に属している場合)。Grafana 管理のアラートのみ。 |
|
PanelURL |
string |
Grafana ダッシュボードパネルへのリンク (アラートルールが Grafana に属している場合)。Grafana 管理のアラートのみ。 |
|
Fingerprint |
string |
アラートの識別に使用するフィンガープリント。 |
|
ValueString |
string |
アラート内の各削減された式のラベルと値を含む文字列。 |
KeyValue 型
KeyValue 型は、キー (ラベル) 値 (注釈) の文字列を組み合わせたものです。
KeyValue として保存されたデータに直接アクセスするメソッドだけでなく、データをソート、削除、変換するメソッドも備えています。
| 名前 | 引数 | 戻り値 | 注意事項 |
|---|---|---|---|
|
SortedPairs |
キーと値の文字列のソート済みのリスト |
||
|
削除 |
[]string |
KeyValue |
指定したキーを除いたキー/値のマップのコピーを返します。 |
|
名前 |
[]string |
ラベル名のリスト |
|
|
値 |
[]string |
ラベル値のリスト |
テンプレート関数
テンプレート関数を使用すると、ラベルと注釈を処理して動的に通知を生成できます。以下の機能を使用できます。
| 名前 | 引数の型 | 戻り型 | 説明 |
|---|---|---|---|
|
|
数値または文字列 |
string |
メトリクスプレフィックスを使用して、数値をより読み取り可能な形式に変換します。 |
|
|
数値または文字列 |
string |
humanize と同様に、1000 ではなく 1024 を基準にします。 |
|
|
数値または文字列 |
string |
時間を秒単位のより読みやすい形式に変換します。 |
|
|
数値または文字列 |
string |
比率の値を 100 分の 1 の形に変換します。 |
|
|
数値または文字列 |
string |
Unix のタイムスタンプを秒単位のより読みやすい形式に変換します。 |
|
|
string |
string |
strings.Title を使用すると、各単語の最初の文字が大文字になります。 |
|
|
string |
string |
strings.ToUpper を使用すると、文字列がすべて大文字に変換されます。 |
|
|
string |
string |
strings.ToLower を使用すると、文字列がすべて小文字に変換されます。 |
|
|
パターン、テキスト |
boolean |
regexp.MatchString を使用すると、アンカーなしでの正規表現の一致テストを実行できます。 |
|
|
パターン、置換、テキスト |
string |
Regexp.ReplaceAllString を使用すると、アンカーなしでの正規表現による置換が実行できます。 |
|
|
文字列 - |
string |
指定された式とデータソースに対するグラフィカルビューへのパスを返します。 |
|
|
文字列 - |
string |
指定された式とデータソースに対するタブ形式ビューへのパスを返します。 |
|
|
[]interface{} |
map[string]interface{} |
オブジェクトのリストを arg0、arg1 などのキーを持つマップに変換します。複数の引数をテンプレートに渡す場合、この関数を使用します。 |
|
|
なし |
string |
外部 URL を表す文字列を返します。 |
|
|
なし |
string |
外部 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 |