因爲grafana的多數據源特性,結合alertmanager實現微信報警。linux
訪問連接:git
https://work.weixin.qq.com/wework_admin/register_wxgithub
這裏直接使用本身的微信,便可完成註冊。不須要進行企業認證,也可使用。web
點擊應用管理-->建立應用vim
添加成功後,就能夠看到 Agentld和Secretapi
點擊右上角個人企業,就會看到企業id服務器
點擊通訊錄,查當作員詳情微信
那麼這4個信息,就是接下來要使用的了。學習
alertmanager爲prometheus一個單獨的報警模塊,具備分組、抑制、靜默等功能。ui
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界面。
添加報警渠道
其中include image 沒有做用;
Disable Resolve Message 沒有勾選,但不發送報警取消信息;
我是在alertmanager 模板中判斷若Status沒有firing(則爲resolved),則發送報警解決信息。
在dashboard中設置alert
當報警時會發送給alertmanager。
微信報警以下
時間爲UTC時區,而不是CST時區,所以咱們須要自行+8:00
注意:只有企業微信才能收到報警信息,普通微信是收不到的。
這個是騰訊故意設置的,爲了工做和生活分開。
因此,你須要其餘人接收報警信息,那麼他們也須要下載企業微信才能夠。
本文參考連接: