title: 5.5.企业微信告警
order: 31
icon: lightbulb
一、环境介绍
主机名 | IP地址 | 系统 | 说明 |
localhost | 192.168.11.61 | Ubuntu 20.04 | docker方式安装的prometheus |
二、使用企业微信报警
1、注册企业微信
浏览器打开https://work.weixin.qq.com/ 点击注册
如下填写资料:
2、webhook告警(和微信应用告警二选一)
- 注:请换成PrometheusAlert方式
添加群机器人
注册成功后,手机下载企业微信,登陆企业微信。
在手机上,如下图操作:
注:因为我这个是测试企业微信,所以就在”企业全员群“,新建群机器人了。真实一般都是新创建个部门,然后把需要接受报警的人拉到这个部门里面,然后在这个部门群里面新建机器人。
复制机器人的webhook地址
我在上图复制的到webhook地址如下:
真实只需要用到key后面的
二进制安装alertmanager-wechatrobot-webhook
cd /opt/prometheus/
#下载代码
git clone https://gitee.com/linge365/alertmanager-wechatrobot-webhook.git
#进入目录
cd alertmanager-wechatrobot-webhook
#把service服务移动到对应目录下
mv alertmanager-wechatrobot-webhook.service /etc/systemd/system/
#添加prometheus用户,如果已存在不需要重复添加
useradd -M -s /usr/sbin/nologin prometheus
#授权
chown -R prometheu.prometheus /opt/prometheus
启动
systemctl start alertmanager-wechatrobot-webhook
启动成功后,如下图:
检查端口
ss -lntp|grep 8999
修改alertmanager配置
192.168.11.60根据时间修改,192.168.11.60为安装alertmanager-wechatrobot-webhook的服务器ip。
vim alertmanager/config.yml
#增加如下配置
route:
receiver: wechat
receivers:
- name: "wechat"
webhook_configs:
- url: 'http://192.168.11.60:8999/webhook?key=之前复制的企业微信webhook的key'
send_resolved: true
检查配置
#docker安装方式,检查
docker exec -it alertmanager amtool check-config /etc/alertmanager/config.yml
#二进制安装方式,检查
/opt/alertmanager/alertmanager amtool check-config /etc/alertmanager/config.yml
重载alertmanager配置
curl -X POST http://localhost:9093/-/reload
3、微信应用告警(和webhook告警二选一)
- 企业微信应用需要添加ip白名单才能正常使用
浏览器打开企业微信
手机下载“企业微信”,使用注册的手机登录。扫描二维码登录企业微信官网
短信验证
创建应用
登录成功后,选择应用管理–创建应用
上传logo,填写应用名称,选择可见范围
获取AgentID
创建应用成功后,复制AgentId,和查看Secret–会发送Secret到手机企业微信中。
1000002
设置ip白名单
设置可信域名
xxx.com只是举例,这个域名要根据真实的域名修改。
设置ip白名单
获取Secret
手机下载“企业微信”app,并登录成功。”企业微信团队“发来一条新消息,点击查看Secret,复制Secret
-rg8Xtzchefy6w94O6G_qT5gOMhDZt7MsZmHSELAOZw
获取部门id
1
注:获取用户名或者创建标签都可以
点击通讯录–选择企业名–点右边–查看部门id,如下图:
获取corp_id
点击“我的企业”–复制企业id.ww75c7ff0bc812538c
修改alertmanager配置
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
检查配置
#docker安装方式,检查
docker exec -it alertmanager amtool check-config /etc/alertmanager/config.yml
#二进制安装方式,检查
/opt/alertmanager/alertmanager amtool check-config /etc/alertmanager/config.yml
重载alertmanager配置
curl -X POST http://localhost:9093/-/reload
4、测试
关闭node-exporter
#docker环境
docker stop node-exporter
#二进制安装环境
systemctl stop node_exporter
查看prometheus的alerts: http://192.168.11.61:9090/alerts
查看alertmanager的alerts:http://192.168.11.61:9093/#/alerts
如果没收到钉钉消息,排查
docker logs -f alertmanager
微信正常收到报警信息如下图:
四、使用模版(非必需,仅限微信应用告警)
- 看需求–不使用模版默认也行,不适用webhook方式告警。
1、创建模版文件(prometheus服务器操作)
cd /data/docker-prometheus
#创建存放模版的目录
mkdir alertmanager/template
通过cat创建
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
检查
vim alertmanager/template/wechat.tmpl
2、修改alertmanager配置
vim alertmanager/config.yml
增加message这行
#模版配置
templates:
- '/etc/alertmanager/template/*.tmpl'
....
receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
#只增加这行配置
message: '{{ template "wechat.html" . }}'
重载配置
curl -X POST http://localhost:9093/-/reload
检查
http://192.168.11.61:9093/#/status
3、测试
企业微信应用报警,修改前和修改后的区别如下图:
四、我的微信
如果碰到问题,可以随时加我微信,谢谢
评论区