一、环境介绍
主机名 |
IP地址 |
系统 |
说明 |
localhost |
192.168.224.11 |
Centos7.6 |
docker方式安装的prometheus |
二、获取钉钉的webhook地址
1、注册企业钉钉
a、注册企业钉钉
浏览器打开钉钉注册页面 填入手机号码,填入获取到的验证码,点注册

填入企业资料并注册

注册成功后,扫描二维码下载钉钉,如下图:

b、添加机器人
因为机器人添加,只能是钉钉电脑版(手机版钉钉不能添加机器人)。“测试钉钉报警“ 这个企业只有我一个人,所以我就把报警消息发到默认的 ”测试钉钉报警 全员群“ 里面。实际使用时,请创建个运维群–添加对应的人员进来。
电脑钉钉登陆成功后—-点击左下角的。。。—然后再点管理后台,如下图:

点击之前创建的企业名

点通讯录–组织架构–添加子部门

刷新后,把接收告警的员工调整到刚刚添加的部门

勾选部门

添加成功后,电脑钉钉消息窗口–会弹出一个测试告警的群–点击这个群—群设置–机器人

添加机器人

添加机器人

点自定义

机器人名字:随意
勾选ip:填入alertmanager外网ip
如果在自己电脑上测试钉钉告警,获取Alertmanager外网ip地址的方法为浏览器打开http://ip138.com 您的iP地址是:[xxx.xx.xx.xx]得到自己外网ip地址。

c、复制机器人webhook地址

复制webhook的地址,例如:
1
| https://oapi.dingtalk.com/robot/send?access_token=b840b125fbf67480b84244a520c8854fa6cf533a75e798afa1397ff9ea457d28
|
我们真实需要的是access_token=后面的,如下:
1
| b840b125fbf67480b84244a520c8854fa6cf533a75e798afa1397ff9ea457d28
|
三、使用prometheus-webhook-dingtalk实现钉钉告警
github地址,获取最新的安装包
1、二进制安装(和docker安装二选一)
1 2 3 4 5 6 7 8 9 10
| #安装二进制安装包 wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
#解压 tar vzxf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
ls -l
#移动并改名 mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/Prometheus/prometheus-webhook-dingtalk
|
创建配置文件
1 2 3 4 5 6
| cat > /usr/local/Prometheus/prometheus-webhook-dingtalk/config.yml <<"EOF" targets: webhook1: url: https://oapi.dingtalk.com/robot/send?access_token=修改为自己的TOKEN secret: SEC000000000000000000000 EOF
|
创建一个prometheus
用户:
1
| useradd -M -s /usr/sbin/nologin prometheus
|
更改prometheus-webhook-dingtalk
用户的文件夹权限:
1
| chown prometheus:prometheus -R /usr/local/Prometheus/prometheus-webhook-dingtalk
|
创建 systemd 服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| cat > /etc/systemd/system/prometheus-webhook-dingtalk.service << "EOF" [Unit] Description=prometheus-webhook-dingtalk Documentation=https://github.com/timonwong/prometheus-webhook-dingtalk
[Service] User=prometheus Group=prometheus Restart=on-failure ExecStart=/usr/local/Prometheus/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk \ --config.file=/usr/local/Prometheus/prometheus-webhook-dingtalk/config.yml
[Install] WantedBy=multi-user.target EOF
|
启动 prometheus-webhook-dingtalk
1 2
| systemctl daemon-reload systemctl start prometheus-webhook-dingtalk.service
|
加入到开机自启动
1
| systemctl enable prometheus-webhook-dingtalk.service
|
检查
1
| systemctl status prometheus-webhook-dingtalk.service
|
查看 prometheus-webhook-dingtalk的日志以进行故障排除:
1
| journalctl -u prometheus-webhook-dingtalk.service -f
|
2、docker安装(和二进制安装二选一,推荐)
创建配置文件config.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #创建数据目录 mkdir /data/docker-prometheus/prometheus-webhook-dingtalk/ -p
cat > /data/docker-prometheus/prometheus-webhook-dingtalk/config.yml <<"EOF"
#templates: # - /etc/prometheus-webhook-dingtalk/templates/default.tmpl
targets: webhook1: url: https://oapi.dingtalk.com/robot/send?access_token=之前复制的TOKEN secret: SEC000000000000000000000 #message: # text: '{{ template "default.content" . }}' EOF
|
docker-compose.yaml文件
注:我把prometheus-webhook-dingtalk安装在prometheus服务器上,如果安装在其他机器上也是可以的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| cd /data/docker-prometheus/prometheus-webhook-dingtalk/
cat > docker-compose.yaml << "EOF" version: '3.3' services: webhook: image: timonwong/prometheus-webhook-dingtalk:v2.1.0 container_name: prometheus-webhook-dingtalk restart: "always" ports: - 8060:8060 command: - '--config.file=/etc/prometheus-webhook-dingtalk/config.yml' volumes: - ./config.yml:/etc/prometheus-webhook-dingtalk/config.yml - /etc/localtime:/etc/localtime:ro EOF
|
启动
检查
1 2 3
| docker ps 或: docker logs -f prometheus-webhook-dingtalk
|
3、访问地址
应用 |
访问地址 |
备注 |
prometheus-webhook-dingtalk |
http://192.168.224.11:8060 |
无用户和密码 |
4、alertmanager配置
alertmanager/config.yml增加如下配置:
1 2 3 4 5 6 7 8
| route: receiver: 'dingtalk'
receivers: - name: 'dingtalk' webhook_configs: - url: 'http://192.168.224.11:8060/dingtalk/webhook1/send' send_resolved: true
|

检查配置
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
|
5、配置触发器
已配置,查看现有触发器
访问告警模块的web页面
1
| http://192.168.224.11:9090/alerts
|
- INACTIVE:活跃中,即表示正常无告警产生。
- PENDING:待触发,表示已经达到预设的阈值,但没达到预设的时间。
- FIRING:表示达到预设的阈值并超过预设的时间触发告警
6、测试
关闭node-exporter
1 2 3 4 5
| #docker环境 docker stop node-exporter
#二进制安装环境 systemctl stop node_exporter
|
1 2 3
| 查看prometheus的alerts: http://192.168.224.11:9090/alerts
查看alertmanager的alerts:http://192.168.224.11:9093/#/alerts
|
如果没收到钉钉消息,排查
1
| docker logs -f alertmanager
|
钉钉正常收到报警信息如下图:

7、碰到的问题
由于配置名称错误导致不能发送报警信息给钉钉,如下图:

解决:
修改名称,使其配置正确
未找到相关的 Issues 进行评论
请联系 @zhi666 初始化创建