首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >运维必看!Prometheus + Alertmanager 配置企业微信告警通知

运维必看!Prometheus + Alertmanager 配置企业微信告警通知

作者头像
Python运维开发
发布2025-09-29 14:14:32
发布2025-09-29 14:14:32
32400
代码可运行
举报
文章被收录于专栏:Python运维开发Python运维开发
运行总次数:0
代码可运行

Prometheus + Alertmanager 配置企业微信告警通知,实现故障告警与恢复通知,话不多说开始上干货


一、创建企业微信告警模板

将以下模板保存为 wechat.tmpl,并放置在 Alertmanager 可访问的模板目录中(如 /data/alertmanager/templates/)。

通知要配置 故障告警恢复通知 两种状态。

代码语言:javascript
代码运行次数:0
运行
复制
{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts.Firing -}}
===  监控报警(🚨 故障告警通知)===
告警类型:    {{ $alert.Labels.alertname }}
告警级别:    {{ $alert.Labels.severity }} 级
告警状态:    {{ .Status }} 故障
故障主机:    {{ $alert.Labels.hostname }} {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
服务环境:    {{ $alert.Labels.env }}
服务名称:    {{ $alert.Labels.servicename }}
告警主题:    {{ .Annotations.summary }}
告警详情:    {{ $alert.Annotations.message }}{{ $alert.Annotations.description }}
主机标签:    {{ range .Labels.SortedPairs }}[{{ .Name }}: {{ .Value }}]{{- end }}
故障时间:    {{ ($alert.StartsAt.Add 0).Format "2006-01-02 15:04:05" }}
========= = end =  =========
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts.Resolved -}}
=== ✅ 恢复通知 - 监控报警 ===
告警主题:    {{ $alert.Annotations.summary }}
告警类型:    {{ $alert.Labels.alertname }}
告警级别:    {{ $alert.Labels.severity }} 级
故障主机:    {{ $alert.Labels.hostname }} {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
服务环境:    {{ $alert.Labels.env }}
服务名称:    {{ $alert.Labels.servicename }}
告警状态:    {{ .Status }} 恢复
告警详情:    {{ $alert.Annotations.message }}{{ $alert.Annotations.description }}
故障时间:    {{ ($alert.StartsAt.Add 0).Format "2006-01-02 15:04:05" }}
恢复时间:    {{ ($alert.EndsAt.Add 0).Format "2006-01-02 15:04:05" }}
========= = end =  =========
{{- end }}
{{- end }}
{{ end }}

提示:根据实际场景,在模板中增加或修改字段,直接从里面复制一行改就行


二、Alertmanager 配置

需要在企业微信创建一个应用并获取agentid这样通知就会通过这个应用发到指定的用户

代码语言:javascript
代码运行次数:0
运行
复制
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
# 全局配置

global:
  resolve_timeout: 5m
  # 企业微信相关配置(需替换为实际值)
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
  wechat_api_corp_id: 'your_corp_id'
  wechat_api_secret: 'your_app_secret'
# 模板路径
templates:
  - '/data/alertmanager/templates/wechat.tmpl'
# 路由配置
route:
  group_by: ['alertname', 'env', 'service']
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'aa'
# 接收器配置
receivers:
  - name: 'aa'
    wechat_configs:
      - send_resolved: true
        to_user: 'usser1|user2'  # 这里填写用户的ID
        agent_id: 'your_agent_id'
        corp_id: '${wechat_api_corp_id}'
        api_secret: '${wechat_api_secret}'

注意:corp_id app_secret agent_id 需在企业微信管理后台获取,agent_id 创建单独应用或取。



三、Prometheus 配置主机示例

单独创建 主机配置文件示例: 标签会对应altermanager配置的模版填充到通知里

代码语言:javascript
代码运行次数:0
运行
复制
cat target/mysql/ali-data-slave-1.json 
[
  {
    "targets":  ["127.0.0.1:9104"],
    "labels": {
        "env": "正式环境",
        "projectname" : "",
        "servicename": "从库",
        "hostname": "ali-data-slave-1"
  }
}
]

建议

  1. 统一标签规范 例如:env,projectname,servicename,hostname 主机模版都按这个规范来
  2. 区分环境 使用 env 标签明确标识“测试/预发/生产”环境,避免误扰。
  3. 开启恢复通知 确保团队能及时知晓故障已恢复。
  4. 合理设置通知分组避免不是自己的项目也接受到通知,会很烦的 使用 group_by 提升通知有效性。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python运维开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建企业微信告警模板
  • 二、Alertmanager 配置
  • 三、Prometheus 配置主机示例
  • 建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档