一、概述
由於grafana的多數據源特性,結合alertmanager實現微信報警。
二、注冊企業微信
訪問鏈接:
https://work.weixin.qq.com/wework_admin/register_wx
這里直接使用自己的微信,即可完成注冊。不需要進行企業認證,也可以使用。
添加應用
點擊應用管理-->創建應用
添加成功后,就可以看到 Agentld和Secret
點擊右上角我的企業,就會看到企業id
點擊通信錄,查看成員詳情
那么這4個信息,就是接下來要使用的了。
二、alertmanager
alertmanager為prometheus一個單獨的報警模塊,具有分組、抑制、靜默等功能。
github地址:
https://github.com/prometheus/alertmanager
安裝
登錄到prometheus服務器
tar zxvf alertmanager-0.19.0.linux-amd64.tar.gz -C /data mv /data/alertmanager-0.19.0.linux-amd64 /data/alertmanager
配置
cd /data/alertmanager/
vim grafana.yml
內容如下:
global: resolve_timeout: 5m templates: - '/usr/local/alertmanager/wechat.tmpl' route: group_by: ['alertname'] group_wait: 5s #同一組內警報,等待group_interval時間后,再繼續等待repeat_interval時間 group_interval: 1m #當group_interval時間到后,再等待repeat_interval時間后,才進行報警 repeat_interval: 10m receiver: 'wechat' receivers: - name: 'wechat' wechat_configs: - corp_id: 'wwbba17dd372e' agent_id: '1000005' api_secret: '-CJ9QLEFxLzx7wPgoK9Dt-NWYOLuy-RuX3I' to_user: 'yangguangda' send_resolved: true
corp_id:企業id
agent_id:應用Agentld
api_secret:應用Secret
to_user:通訊錄人員
報警再次發送時間為group_interval+repeat_interval,也就是先等待group_interval,再等待repeat_interval。
注意:企業號新建應用的須設置相應的可見范圍及人員,否則無法發送信息。
報警模板
cd /data/alertmanager
vim wechat.tmpl
內容如下:
{{ define "grafana.default.message" }}{{ range .Alerts }} {{ .StartsAt.Format "2006-01-02 15:03:04" }} {{ range .Annotations.SortedPairs }}{{ .Name }} = {{ .Value }} {{ end }}{{ end }}{{ end }} {{ define "wechat.default.message" }} {{ if eq .Status "firing"}}[Warning]:{{ template "grafana.default.message" . }}{{ end }} {{ if eq .Status "resolved" }}[Resolved]:{{ template "grafana.default.message" . }}{{ end }} {{ end }}
其中:
Status 只有兩個狀態firing、resolved,通過這個參數是否發送warning和resolved報警信息。
模板的語法還需查官網進行深入學習。
注意: prometheus 默認時區為UTC且無法改變時區,官方建議在用戶的web ui 中重新設置時區,因此我們的報警時間應該+8:00
啟動
cd /data/alertmanager nohup /data/alertmanager/alertmanager --config.file=/data/alertmanager/grafana.yml --storage.path=/data/alertmanager/data/ --log.level=debug &
啟動后,可通過ip:9093 訪問alertmanager界面。
三、grafana設置
添加報警渠道
其中include image 沒有作用;
Disable Resolve Message 沒有勾選,但不發送報警取消信息;
我是在alertmanager 模板中判斷若Status沒有firing(則為resolved),則發送報警解決信息。
在dashboard中設置alert
當報警時會發送給alertmanager。
微信報警如下
時間為UTC時區,而不是CST時區,因此我們需要自行+8:00
注意:只有企業微信才能收到報警信息,普通微信是收不到的。
這個是騰訊故意設置的,為了工作和生活分開。
所以,你需要其他人接收報警信息,那么他們也需要下載企業微信才可以。
本文參考鏈接:
https://blog.csdn.net/yanggd1987/article/details/95204976