Prometheus使用企业微信接收告警通知

一、环境介绍

主机名 IP地址 系统 说明
localhost 192.168.224.11 Centos7.6 docker方式安装的prometheus

二、使用企业微信报警

1、注册企业微信

浏览器打开https://work.weixin.qq.com/ 点击注册

如下填写资料:

iad0dZ.png

2、webhook告警(和微信应用告警二选一)

添加群机器人

注册成功后,手机下载企业微信,登陆企业微信。

在手机上,如下图操作:

注:因为我这个是测试企业微信,所以就在”企业全员群“,新建群机器人了。真实一般都是新创建个部门,然后把需要接受报警的人拉到这个部门里面,然后在这个部门群里面新建机器人。

iadCqF.png

复制机器人的webhook地址

我在上图复制的到webhook地址如下:

1
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=6b892c28-c0cf-4962-b45d-3c1f75242O3w

真实只需要用到key后面的

1
6b892c28-c0cf-4962-b45d-3c1f75242O3ws

docker安装webhook-wechat

  • Prometheus服务器上安装

创建存放webhook-wechat的数据目录

1
2
mkdir /data/docker-prometheus/webhook-wechat -p
cd /data/docker-prometheus/webhook-wechat

使用cat创建新文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat > docker-compose.yaml <<"EOF"
version: "2"
services:
prometheus-webhook-webchat:
image: linge365/webhook-wechat:latest
container_name: prometheus-webhook-webchat
restart: always
volumes:
- /etc/localtime:/etc/localtime
ports:
- "5000:5000"
environment:
ROBOT_TOKEN: "填入之前复制的token"
EOF

启动

1
docker-compose up -d

检查

1
2
3
docker ps 
或:
docker logs -f prometheus-webhook-webchat

修改alertmanager配置

1
2
3
4
5
6
7
8
9
10
vim alertmanager/config.yml 
#增加如下配置
route:
receiver: wechat

receivers:
- name: 'wechat'
webhook_configs:
- url: 'http://192.168.224.11:5000'
send_resolved: true

iahG3X.png

检查配置

1
2
3
4
5
#docker安装方式,检查
docker exec -it alertmanager amtool check-config /etc/alertmanager/config.yml

#二进制安装方式,检查
/usr/local/Prometheus/alertmanager/alertmanager amtool check-config /etc/alertmanager/config.yml

重载alertmanager配置

1
curl -X POST http://localhost:9093/-/reload

3、微信应用告警(和webhook告警二选一)

  • 企业微信应用需要添加ip白名单才能正常使用

浏览器打开企业微信

企业微信官网

iad27Q.png

手机下载“企业微信”,使用注册的手机登录。扫描二维码登录企业微信官网

iadHPE.png

短信验证

iadbWC.png

创建应用

登录成功后,选择应用管理–创建应用

iadjmP.png

上传logo,填写应用名称,选择可见范围

iad8vX.png

获取AgentID

创建应用成功后,复制AgentId,和查看Secret–会发送Secret到手机企业微信中。

1000002

iadN4t.png

设置ip白名单

iadrIJ.png

设置可信域名

iad3dc.png

设置ip白名单

获取Secret

手机下载“企业微信”app,并登录成功。”企业微信团队“发来一条新消息,点击查看Secret,复制Secret

-rg8Xtzchefy6w94O6G_qT5gOMhDZt7MsZmHSELAOZw

iadRuA.png

获取部门id

1

注:获取用户名或者创建标签都可以

点击通讯录–选择企业名–点右边–查看部门id,如下图:

iadBTV.png

获取corp_id

点击“我的企业”–复制企业id.ww75c7ff0bc812538c

iadgWd.png

修改alertmanager配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vim alertmanager/config.yml 

route:
receiver: wechat

receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
#to_user: '@all' #发送给企业微信用户的ID,@all是所有人
#to_tag: '1' #企业微信中创建的接收告警的标签
to_party: '1' #部门id
agent_id: '1000002' # 企业微信中创建的应用的ID
corp_id: 'ww75c7ff0bc812538c' # 企业微信中企业ID
api_secret: '-rg8Xtzchefy6w94O6G_qT5gOMhDZt7MsZmHSELAOZw' # 企业微信中,应用的Secret

检查配置

1
2
3
4
5
#docker安装方式,检查
docker exec -it alertmanager amtool check-config /etc/alertmanager/config.yml

#二进制安装方式,检查
/usr/local/Prometheus/alertmanager/alertmanager amtool check-config /etc/alertmanager/config.yml

重载alertmanager配置

1
curl -X POST http://localhost:9093/-/reload

4、测试

关闭node-exporter

1
2
3
4
5
#docker环境
docker stop node-exporter

#二进制安装环境
systemctl stop node_exporter

查看prometheus的alerts: http://192.168.224.11:9090/alerts

查看alertmanager的alerts:http://192.168.224.11:9093/#/alerts

如果没收到消息,排查

1
docker logs -f alertmanager

微信正常收到报警信息如下图:

iadxpb.png

四、使用模版(非必需,仅限微信应用告警)

  • 看需求–不使用模版默认也行,不适用webhook方式告警。

1、创建模版文件(prometheus服务器操作)

1
2
3
4
cd /data/docker-prometheus

#创建存放模版的目录
mkdir alertmanager/template

通过cat创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat > alertmanager/template/wechat.tmpl <<"EOF" 
{{ define "wechat.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
@告警通知
告警程序: prometheus_alert
告警级别: {{ .Labels.severity }}级别
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }}
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
@告警恢复
告警程序: prometheus_alert
故障主机: {{ .Labels.instance }}
故障主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
告警时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }}
恢复时间: {{ .EndsAt.Local.Format "2006-01-02 15:04:05" }}
{{ end }}{{ end -}}
{{- end }}
EOF

检查

1
vim alertmanager/template/wechat.tmpl

2、修改alertmanager配置

1
vim alertmanager/config.yml

增加message这行

1
2
3
4
5
6
7
8
9
10
11
12
#模版配置
templates:
- '/etc/alertmanager/template/*.tmpl'

....

receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
#只增加这行配置
message: '{{ template "wechat.html" . }}'

重载配置

1
curl -X POST http://localhost:9093/-/reload

检查

1
http://192.168.224.11:9093/#/status

3、测试

企业微信应用报警,修改前和修改后的区别

评论


:D 一言句子获取中...

加载中,最新评论有1分钟缓存...