# 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 ```