Alertmanager报警模块集成钉钉/企业微信机器人
一、简介
Alertmanager
是Prometheus
的一个报警通知组件,需要结合Prometheus
使用。Prometheus
将监测到的异常事件发送给Alertmanager
,Alertmanager
发送异常事件的通知(邮件、webhook等)。
二、安装Alertmanager
1 2 3 4 5 6 7 8 9 | # 解压安装包 tar -zxvf alertmanager-0.21.0.linux-amd64. tar .gz # 文件列表 ./ ├── alertmanager # alertmanager的启动程序 ├── alertmanager.yml # alertmanager的配置文件 ├── amtool ├── LICENSE └── NOTICE |
三、报警规则
修改prometheus
的配置文件prometheus.yml
1 2 3 4 5 6 7 8 9 10 11 | # Alertmanager configuration # 改为alertmanager的地址 alerting: alertmanagers: - static_configs: - targets: - 192.168.1.23:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. # 指定规则文件 rule_files: - rules/*.yml |
在rules
目录中添加.yml
结尾的规则文件,prometheus
会根据这些规则配置文件进行监控报警。
模版:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 一个配置文件里包含多个组 groups : - name: example # 组名 # 触发规则列表 rules: - alert: HighErrorRate # 警告名 expr : job:request_latency_seconds:mean5m{job= "myjob" } > 0.5 # 触发规则 for : 10m # 规则触发持续多长时间发送告警 # 告警附加标签 labels: severity: page # 告警附加注释 annotations: summary: High request latency |
- node_alived.yml
1 2 3 4 5 6 7 8 9 10 11 12 | groups : - name: 实例存活告警规则 rules: - alert: 实例存活告警 expr : up == 0 for : 1m labels: user: prometheus severity: warning annotations: summary: "主机宕机 !!!" description: "该实例主机已经宕机超过一分钟了。" |
- memory_over.yml
1 2 3 4 5 6 7 8 9 10 11 | groups : - name: 内存报警规则 rules: - alert: 内存使用率告警 expr : (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 50 for : 1m labels: severity: warning annotations: summary: "服务器可用内存不足。" description: "内存使用率已超过50%(当前值:{{ $value }}%)" |
- cpu_over.yml
1 2 3 4 5 6 7 8 9 10 11 | groups : - name: CPU报警规则 rules: - alert: CPU使用率告警 expr : 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode= "idle" }[1m]) )) * 100 > 50 for : 1m labels: severity: warning annotations: summary: "CPU使用率正在飙升。" description: "CPU使用率超过50%(当前值:{{ $value }}%)" |
- disk_over.yml
1 2 3 4 5 6 7 8 9 10 11 | groups : - name: 磁盘使用率报警规则 rules: - alert: 磁盘使用率告警 expr : 100 - node_filesystem_free_bytes{fstype=~ "xfs|ext4" } / node_filesystem_size_bytes{fstype=~ "xfs|ext4" } * 100 > 80 for : 20m labels: severity: warning annotations: summary: "硬盘分区使用率过高" description: "分区使用大于80%(当前值:{{ $value }}%)" |
然后重启prometheus服务。
登陆prometheus
的UI界面,查看Alerts
规则
- Inactive:没有触发阈值
- Pending:已触发阈值但未满足告警持续时间
- Firing:已触发阈值且满足告警持续时间
四、通知规则
4.1 钉钉告警
docker
安装钉钉报警插件(prometheus-webhook-dingtalk),启用一个名为:dingtalk
的钉钉机器人。
docker run -d \ --name dingtalk \ --restart always \ -p 8060:8060 \ timonwong/prometheus-webhook-dingtalk:master \ --ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=xxxx(自己的钉钉机器人token)"
设置alertmanager.yml
的route
与receivers
。
route
属性用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | global: resolve_timeout: 5m route: group_by: [ 'alertname' ] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - send_resolved: true url: 'http://192.168.1.23:8060/dingtalk/webhook1/send' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: [ 'alertname' , 'dev' , 'instance' ] |
启动alertmanager
测试
4.2 企业微信告警
下载docker
解决 :下载3个依赖包网址
https://pkgs.org/download/fuse-overlayfs
https://pkgs.org/download/slirp4netns
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # 1、卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2、需要的安装包 yum install -y yum-utils # 3、设置镜像的仓库 yum-config-manager \ --add-repo \ http: //mirrors .aliyun.com /docker-ce/linux/centos/docker-ce .repo 推荐使用阿里云的 #4更新yum软件包索引 yum makecache fast #5、安装依赖 container-selinux、 fuse-overlayfs、slirp4netns # 6、安装docker相关内容(docker-ce 社区版;docker-ee 企业版;推荐使用ce。) yum install docker-ce docker-ce-cli containerd.io -y #7、验证,启动 systemctl start docker docker version systemctl enable docker |
docker
安装企业微信报警插件(webhook-adapter),启用一个名为:wechat
的钉钉机器人。
1 2 3 4 | docker run -d --name wechat \ --restart always -p 8080:80 \ guyongquan /webhook-adapter \ --adapter= /app/prometheusalert/wx .js= /wx =https: //qyapi .weixin.qq.com /cgi-bin/webhook/send ?key=xxxx(自己的微信机器人key) |
企业微信的机器人key,需要创建群聊然后再创建机器人,机器人自带key
编辑alertmanager的alertmanager.yml文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | global: resolve_timeout: 5m route: group_by: [ 'alertname' ] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - send_resolved: true url: 'http://192.168.1.23:8080/adapter/wx' #ip地址为安装了webhook-adapter的机器。 inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: [ 'alertname' , 'dev' , 'instance' ] |
启动alertmanager服务:
1 | #/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data/ &> /opt/alertmanager/access.log & |
然后测试报警
参考网址:(49条消息) Prometheus学习笔记(三)Alertmanager报警模块集成钉钉/企业微信机器人_刘李404not found的博客-CSDN博客
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~