メッセージングテンプレートの使用 - Amazon Managed Grafana

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

メッセージングテンプレートの使用

このドキュメントトピックは、Grafana バージョン 8.x をサポートする Grafana ワークスペース向けに設計されています。

Grafana バージョン 10.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 10 での作業

Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 9 での作業

経由で送信される通知コンタクトポイントの使用は、メッセージングテンプレート を使用して構築されます。Grafana のデフォルトテンプレートは Go テンプレートシステムに基づいており、一部のフィールドはテキストとして評価され、他のフィールドは HTML として評価されます (エスケープに影響する可能性があります)。

ほとんどのコンタクトポイントフィールドはテンプレート化できるため、再利用可能なカスタムテンプレートを作成し、複数のコンタクトポイントで使用できます。このテンプレートデータトピックでは、テンプレートに使用できる変数を一覧表示します。

テンプレートの使用

テンプレートはメッセージの作成に使用されます。例えば、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 }}

次の手順は、カスタムメッセージテンプレートを作成、編集、削除する方法を示しています。

メッセージテンプレートを作成するには
  1. Grafana コンソールの Grafana メニューで、アラート (ベル) アイコンを選択してアラートページを開きます。

  2. コンタクトポイント を選択します。

  3. Alertmanager ドロップダウンから、メッセージテンプレートを作成する Alertmanager インスタンスを選択します。デフォルトは Grafana Alertmanager です。

  4. テンプレートの追加 を選択します。

  5. わかりやすい名前 を追加します。

  6. テンプレートのコンテンツを追加します。例:

    {{ define "mymessage" }} {{ range .Alerts }} [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}} {{ end }} {{ end }}

    コンテンツセクションの define タグは、テンプレート名を割り当てます。このタグはオプションであり、省略すると、テンプレート名は名前フィールドから取得されます。両方を指定する場合は、同じままにしておくことがベストプラクティスです。

  7. [テンプレートを保存] を選択します。

注記

アラートメッセージテンプレートの HTML はテキストとしてレンダリングされ、制御文字はエスケープされます。結果の通知での HTML のレンダリングは、Grafana ではサポートされていません。

メッセージテンプレートを編集するには
  1. アラートページで、コンタクトポイントを選択してコンタクトポイントのリストを開きます。

  2. テンプレートテーブル で、編集するテンプレートを見つけ、編集アイコン (ペン) を選択します。

  3. 変更を行い、テンプレートの保存 を選択します。

メッセージテンプレートを削除するには
  1. アラートページで、コンタクトポイントを選択してコンタクトポイントのリストを開きます。

  2. テンプレートテーブル で、削除するテンプレートを見つけ、削除アイコン (ゴミ箱) を選択します。

  3. はい、削除を選択してテンプレートを削除します。

ネストされたテンプレート

テンプレートは他のテンプレートに埋め込むことができます。

例えば、 defineキーワードを使用してテンプレートフラグメントを定義できます。

{{ define "mytemplate" }} {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved. {{ end }}

その後、 templateキーワードを使用して、このフラグメント内にカスタムテンプレートを埋め込むことができます。例:

Alert summary: {{ template "mytemplate" . }}

次の組み込みテンプレートオプションを使用して、カスタムテンプレートを埋め込むことができます。

名前 メモ

default.title

高レベルのステータス情報を表示します。

default.message

発声アラートと解決されたアラートのフォーマットされた概要を提供します。

カスタムテンプレートの例

カスタムテンプレートの使用方法の例を次に示します。

1 つのアラートをレンダリングするテンプレート:

{{ 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 }}

テンプレートデータ

次のデータがメッセージテンプレートに渡されます。

名前 メモ

Receiver

string

通知の送信先の連絡先の名前。

Status

string

少なくとも 1 つのアラートが発せられている場合は発せられます。それ以外の場合は解決されます。

Alerts

アラート

この通知に含まれるアラートオブジェクトのリスト (以下を参照)。

GroupLabels

KeyValue

これらのアラートがグループ化されたラベル。

CommonLabels

KeyValue

この通知に含まれるすべてのアラートに共通するラベル。

CommonAnnotations

KeyValue

この通知に含まれるすべてのアラートに共通する注釈。

ExternalURL

string

通知を送信した Grafana へのリンクを戻します。外部 Alertmanager を使用している場合は、この Alertmanager へのリンクを戻します。

Alerts タイプは、返されたアラートをフィルタリングするための 2 つの関数を公開します。

  • Alerts.Firing – 発声アラートのリストを返します。

  • Alerts.Resolved – 解決されたアラートのリストを返します。

アラート (タイプ)

アラートタイプには、次のデータが含まれます。

名前 メモ

ステータス

string

firing-または-resolved

ラベル

KeyValue

アラートにアタッチされたラベルのセット。

‏注釈

KeyValue

アラートにアタッチされた注釈のセット。

StartsAt

時刻

アラートが発せられた時刻。

EndsAt

時刻

アラートの終了時刻がわかっている場合にのみ設定されます。それ以外の場合は、最後のアラートを受信してから設定可能なタイムアウト期間に設定します。

GeneratorURL

string

Grafana または外部 Alertmanager へのバックリンク。

SilenceURL

string

このアラートのラベルがあらかじめ入力されている の grafana サイレンスへのリンク。Grafana マネージドアラートの場合のみ。

DashboardURL

string

アラートルールが 1 つに属している場合は、grafana ダッシュボードにリンクします。Grafana マネージドアラートの場合のみ。

PanelURL

string

アラートルールが 1 つに属している場合は、grafana ダッシュボードパネルにリンクします。Grafana マネージドアラートの場合のみ。

フィンガープリント

string

アラートの識別に使用できるフィンガープリント。

ValueString

string

アラート内の各縮小式のラベルと値を含む文字列。

KeyValue タイプ

KeyValue タイプは、ラベルと注釈を表すキーと値の文字列ペアのセットです。

として保存されたデータの直接アクセスに加えてKeyValue、データのソート、削除、変換の方法もあります。

名前 引数 戻り値 メモ

SortedPairs

キーと値の文字列ペアのソート済みリスト

Remove

[]文字列

KeyValue

指定されたキーなしでキー/値マップのコピーを返します。

名前

[]文字列

ラベル名のリスト

[値]

[]文字列

ラベル値のリスト

テンプレート関数

テンプレート関数を使用すると、ラベルと注釈を処理して動的通知を生成できます。以下の関数を使用できます。

名前 引数の型 戻り型 説明

humanize

数値または文字列

string

メトリクスプレフィックスを使用して、数値をより読み取り可能な形式に変換します。

humanize1024

数値または文字列

string

ヒューマナイズと同様に、 は 1000 ではなく 1024 をベースとして使用します。

humanizeDuration

数値または文字列

string

時間を秒単位のより読みやすい形式に変換します。

humanizePercentage

数値または文字列

string

比率値を 100 の分数に変換します。

humanizeTimestamp

数値または文字列

string

Unix タイムスタンプを秒単位でより読みやすい形式に変換します。

title

string

string

strings.Title、各単語の最初の文字を大文字にします。

toUpper

string

string

strings。ToUpper、すべての文字を大文字に変換します。

toLower

string

string

strings。ToLower、すべての文字を小文字に変換します。

match

パターン、テキスト

ブール値

regexp. アンカーされていない regexp マッチのMatchString テスト。

reReplaceAll

パターン、置換、テキスト

string

Regexp.ReplaceAllString Regexp 置換、アンカーなし。

graphLink

string - exprおよび datasourceフィールドを持つ JSON オブジェクト

string

指定された式とデータソースについて、Explore でグラフィカルビューへのパスを返します。

tableLink

string - exprおよび datasourceフィールドを持つ JSON オブジェクト

string

指定された式とデータソースについて、Explore の表形式ビューへのパスを返します。

args

[]インターフェイス{}

map[string]interface{}

オブジェクトのリストを、arg0、arg1 などのキーを持つマップに変換します。この関数を使用して、複数の引数をテンプレートに渡します。

externalURL

なし

string

外部 URL を表す文字列を返します。

pathPrefix

なし

string

外部 URL のパスを返します。

次の表は、各関数の使用例を示しています。

機能 TemplateString 入力 予想

ヒューマナイズ

{ $value をヒューマナイズ}

1234567.0

1.235 メートル

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

一致

{ 「a+」$labels.instance } に一致

aa

true

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