alertmanager郵件告警
這篇文章是基於之前博客進行開展的:關於計划任務的一個小需求(https://www.cnblogs.com/windysai/p/14352248.html)
利用了prometheus 下 process-exporter對crond計划任務進程監控的, grafana內置的監控報警有點丑,如下圖:
而且配置不夠靈活,沒有分組,靜默等東西配置。所以就有了這個alertmanager的玩意研究了。之前搞k8s的監控接觸過,但是理解不深,沒搞清楚整個過程怎么報警起來的。
先從簡單入手,測了個alertmanager的郵件告警(k8s也是這么弄的),大致有個印象。配置告警規則讓prometheus讀 ——》 alertmanager配置告警處理方式。。。
用了NodeFilesystemUsage,根目錄/ 磁盤分區使用率超過30%就告警,一直沒發(用163郵箱作為發送方發給我的qq郵箱),我當時還自我良好,看到下面這個圖不以為意。
老實說,你不裝node_exporter(監控服務器的基礎資源,如:內存、CPU、網絡等資源),怎么可能會有返回值呢
所以第一個事,乖乖裝好,才能通過符合PromQL的語法查詢出值來的
第一個體會是:監控+告警整個流程梳理。
實際上整個流程,簡單概括:
(1)組件采集數據(像node_exporter,process_exporter等)
(2)暴露類似這樣的url:http//本機ip:端口/metrics(curl localhost:9100/metrics 會有值的!!!這里端口是node_exporter默認監聽端口)
(3)prometheus通過拉取方式讀數據,最終給grafana展示
(4)alertmanager告警
第二個用alertmanager的體會是:靜默設置。
看到這個蠻頭痛的,圖是微信設置收取QQ郵件截的。默認每5分鍾發一次
靜默規則設置參考這個的:http://www.linuxe.cn/post-518.html
讓它2個小時內不要發(都知道有這么一回事了)。我特別說下圖上的Matchers的Name和Value怎么填。是配置給prometheus讀的告警規則那里來的,相當於做了個匹配規則,把serverity為warning的告警全部關掉2小時(注意時間 +8小時,剛好跟我下午2點的時間一致的)
如果想關掉靜默設置,可以直接讓它Expire,當然也可以根據需要繼續Edit 靜默規則,寫出更符合當前監控告警需求的
第三個用alertmanager的體會是:自定義告警模板
賊難看 = =。
做法是這樣的:
(1)配置告警規則
(2)編寫郵件模板文件:email.tmpl ——》新增
[root@ljy alertmanager]#cat /usr/local/src/monitor/alertmanager/template_alert/email.tmpl {{ define "email.html" }} {{ range .Alerts }} <pre> ========start========== 告警程序: prometheus_alert 告警級別: {{ .Labels.severity }} 告警類型: {{ .Labels.alertname }} 故障主機: {{ .Labels.instance }} 告警主題: {{ .Annotations.summary }} 告警詳情: {{ .Annotations.description }} 觸發時間: {{ .StartsAt.Format "2019-12-14 16:01:01" }} ========end========== </pre> {{ end }} {{ end }}
(3)alertmanager配置文件,添加自定義告警模板,配置發送人
(4)重啟alertmanager,效果圖如下: