Notificatinテンプレートリファレンス - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

Prometheusはアラートを作成しAlertmanagerに送信する。Alertmanagerは、アラートのラベルに基づいて様々なレシーバーに通知を送る。レシーバーは、Slack、PagerDuty、eメール、一般的なwebhookインターフェースを介した連携先の一つである。

レシーバーの送信される通知は、テンプレートによって構成される。Alertmanagerには、デフォルトのテンプレートが備えられているが、テンプレートをカスタマイズすることもできる。 Prometheusでアラートルールのラベル/アノテーションにもテンプレーティングが含まれるが、AlertmanagerテンプレートはPrometheusでのテンプレーティングとは別物であることに注意するのが、混乱を避けるために重要である。

Alertmanagerの通知のテンプレートは、Go templatingを基にしている。テキストとして評価されるフィールドもあるし、エスケープに影響するHTMLとして評価されるフィールドもあることに注意すること。

データ構造

Data

Dataは、通知テンプレートとwebhookに渡されるデータ構造である。

  • Receiver
    • string
    • 通知が送信されるレシーバー(Slack、eメールなど)の名前を定義する
  • Status
    • string
    • 少なくとも一つのアラートがfiringであればfiring、そうでなければresolvedと定義される
  • Alerts
    • Alert
    • 下記のAlertオブジェクトのリスト
  • GroupLabels
    • KV
    • これらのアラートがグルーピングされるラベル
  • CommonLabels
    • KV
    • 全てのアラートに共通のラベル
  • CommonAnnotations
    • KV
    • 全てのアラートの共通のアノテーション。より長く追加的なアラートに関する情報の文字列に利用される
  • ExternalURL
    • string
    • 通知を送ったAlertmanagerへ戻るためのリンク

    Alert

Alertは、通知のテンプレートのための一つのアラートの情報を持っている。

  • Status
    • string
    • アラートがresolvedなのかfiringなのかを定義する
  • Labels
    • KV
    • アラートに付与されたラベルの集合
  • Annotations
  • StartsAt
    • time.Time
    • アラートがfiringになり始めた時刻。もしなければ、Alertmanagerによって現在時刻が付与される
  • EndsAt
    • time.Time
    • Only set if the end time of an alert is known. Otherwise set to a configurable timeout period from the time since the last alert was received.
  • GeneratorURL
    • string
    • このアラートを起こしたエンティティを特定するリンク

KV

KVは、ラベルとアノテーションを表すためのkey/valueの文字列ペアの集合である。

type KV map[string]string

二つのアノテーションを含むアノテーションの例

{
  summary: "alert summary",
  description: "alert description",
}

KVとして保存されているデータへの直接のアクセスに加えて、ソート、削除、LabelSetsのviewingのためのメソッドがある。

  • SortedPairs()
    • Pairs (list of key/value string pairs.)
    • ソートされたkey/valueペアのリストを返す
  • Remove(string)
    • KV
    • 指定されたキーを削除したkey/valueのマップのコピーを返す
  • Names()
    • string
    • LabelSet中のラベル名を返す
  • Values()
    • string
    • LabelSet中の値のリストを返す

FUNCTIONS

Go templatingによってdefault functionsも提供されていることに注意

Strings

  • Name(Arguments)
    • Returns
  • title(string)
    • strings.Title, 各単語の最初の文字を大文字にする
  • toUpper(string)
  • toLower(string)
  • match(pattern, string)
  • reReplaceAll(pattern, replacement, text)
  • join(sep string, s string)
    • strings.Join, sの要素を連結して一つの文字列を作る。結果の文字列で、要素間には文字列sepが置かれる。テンプレートでのパイプラインを簡単にするために、引数の順序が逆になっていることに注意すること
  • safeHtml(text string)

参考リンク

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援

Prometheus: Up & Running: Infrastructure and Application Performance Monitoring

Prometheus: Up & Running: Infrastructure and Application Performance Monitoring

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム