https://blog.csdn.net/u014029783/article/details/80654727
# alertmanager發送告警階段
在第一個階段Silence中,Alertmanager會判斷當前通知是否匹配到任何的靜默規則,如果沒有則進入下一個階段,否則則中斷流水線不發送通知。
在第二個階段Wait中,Alertmanager會根據當前Alertmanager在集群中所在的順序(index)等待index * 5s的時間。
當前Alertmanager等待階段結束后,Dedup階段則會判斷當前Alertmanager數據庫中該通知是否已經發送,如果已經發送則中斷流水線,不發送告警,否則則進入下一階段Send對外發送告警通知。
告警發送完成后該Alertmanager進入最后一個階段Gossip,Gossip會通知其他Alertmanager實例當前告警已經發送。其他實例接收到Gossip消息后,則會在自己的數據庫中保存該通知已發送的記錄。
配置和啟動
# --web.external-url 顯示配置郵件跳轉鏈接地址
./alertmanager --web.external-url='http://ip:9093/'
# dockerfile: https://hub.docker.com/r/prom/alertmanager/dockerfile
ENTRYPOINT [ "/bin/alertmanager" ] CMD [ "--config.file=/etc/alertmanager/alertmanager.yml", \ "--storage.path=/alertmanager" ] "--web.external-url='http://ip:32093/'" ]
# 檢查告警規則
go get github.com/prometheus/prometheus/cmd/promtool
promtool check rules /path/to/example.rules.yml
# 熱重啟:
curl -XPOST http://ip:9093/-/reload
# curl調試
1、構造post數據
aa='[ { "albels":{ "alertname": "DIST11", "dev":"sdf1", }, "annotations":{ "info": "the disk ad1 is running full" "summary": "please check the instance example1" } } ]'
2、上傳數據到alertmanager服務器:curl http://ip:9093/api/v1/alerts -XPOST -d"$aa"
# 發送多個渠道
global: resolve_timeout: 5m route: receiver: 'default-receiver' group_by: - alertname group_wait: 10s group_interval: 10s repeat_interval: 1h routes: - receiver: 'ops-receiver' match: way: ops # grafanad 自定義tag - receiver: 'smn-receiver' match: way: smn # grafanad 自定義tag inhibit_rules: - source_match: severity: critical target_match: severity: warning equal: - alertname - dev - instance receivers: - name: default-receiver webhook_configs: - url: http://ip:5001/test - name: ops-receiver webhook_configs: - url: http://ip:5001/ops - name: smn-receiver webhook_configs: - url: http://ip:5001/smn