alertmanager

概念

根據 alertmanager 官網指出
https://prometheus.io/docs/alerting/alertmanager/

The Alertmanager handles alerts sent by client applications 
such as the Prometheus server.

基本上 alertmanager 並不會 去 polling (主動 query) prometheus 得知需要送哪個 alerts,反而是被動的等人 triger alerts, 目前想到這樣的理由可能是可以簡化程序.但是也有點違反一般人的想像.不過在 debug 上倒是變得很簡單,因為很單純.

此外 alert 並不會去管理內容是否正確 ( 只會確認 json 格式是否正確這樣 ), 所以可以發送任意訊息.

測試 alert mail

alertmanager 有提供 api 可以直接透過 curl 來 trigger alert

alerts1='[
  {
    "labels": {
       "alertname": "test name",
       "severity" : "Warning"
     },
     "annotations": {
        "Threshold": "<= 2",
        "dashboard": "test",
        "description":"test",
        "infoURL":"test",
        "summary":"this is a test mail",
        "value":"2"
      }
  }
]'
curl -XPOST -d "$alerts1" http://<alertmanager url>/api/v1/alerts

如果把 log 開到 debug 層級,就可以看到 alert 有沒有寄出,然後也可以看到設定的信箱有沒有收到.
但是無法看到是走哪個 receiver.

確認產生的 alert

這個部分可以用來 debug route 的設定是否正確,
因為就算把 alertmanager 的 log 開到 debug,
他並不會輸出是哪個 receiver 寄信.所以透過這個 api 可以列出 alertmanager 是透過那個 receiver 寄出 alert.

輸出是 json 所以建議搭配 jq -r 讓排版好看點

curl -X GET  http://<alertmanager url>/api/v1/alerts