根據 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 格式是否正確這樣 ), 所以可以發送任意訊息.
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.
這個部分可以用來 debug route 的設定是否正確,
因為就算把 alertmanager 的 log 開到 debug,
他並不會輸出是哪個 receiver 寄信.所以透過這個 api 可以列出 alertmanager 是透過那個 receiver 寄出 alert.
輸出是 json 所以建議搭配 jq -r 讓排版好看點
curl -X GET http://<alertmanager url>/api/v1/alerts