2023年11月28日火曜日

amtool を使って alertmanager のテンプレートの確認をする方法

amtool を使って alertmanager のテンプレートの確認をする方法

概要

メールなどを送信する際に事前にテンプレートの内容がちゃんと展開できるか確認することができます

環境

  • Ubuntu 22.04
  • amtool 0.26.0

インストール

  • go install github.com/prometheus/alertmanager/cmd/amtool@latest

data.json

{
  "Status": "firing",
  "Alerts": [
    {
      "Status": "firing",
      "Labels": {
        "alertname": "alert1",
        "instance_id": "hoge"
      },
      "Annotations": {
        "runbook": "https://1.example.com/",
        "description": "desc1"
      }
    },
    {
      "Status": "firing",
      "Labels": {
        "alertname": "alert2",
        "instance_id": "hoge"
      },
      "Annotations": {
        "runbook": "https://2.example.com/",
        "description": "desc2"
      }
    }
  ],
  "GroupLabels": {
    "cluster": "cluster-A"
  }
}

試す

template.text に好きなテンプレート文字列を渡してテストできます
テスト用のデータは template.data で渡します

  • ~/go/bin/amtool template render --template.glob=/dev/null --template.text='{{ $alerts := "" }}{{ $instance_id := (index .Alerts 1).Labels.instance_id }}{{ range .Alerts }}{{ $alerts = (printf "%v %v" $alerts .Labels.alertname) }}{{ end }}{{ $instance_id }} ->{{ $alerts }}' --template.data=data.json

結果は以下のようになります

hoge -> alert1 alert2

最後に

サンプルは golang のテンプレートの記述に慣れていればもっと簡潔に書けるかなと思います

書いているときに一行だと大変なので複数行で記載してから一行にするといいかなと思います

参考サイト

0 件のコメント:

コメントを投稿