
Prometheus + Alertmanager 配置企业微信告警通知,实现故障告警与恢复通知,话不多说开始上干货
将以下模板保存为 wechat.tmpl,并放置在 Alertmanager 可访问的模板目录中(如 /data/alertmanager/templates/)。
通知要配置 故障告警 与 恢复通知 两种状态。
{{ 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 }}提示:根据实际场景,在模板中增加或修改字段,直接从里面复制一行改就行
需要在企业微信创建一个应用并获取agentid这样通知就会通过这个应用发到指定的用户
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 创建单独应用或取。
单独创建 主机配置文件示例: 标签会对应altermanager配置的模版填充到通知里
cat target/mysql/ali-data-slave-1.json
[
{
"targets": ["127.0.0.1:9104"],
"labels": {
"env": "正式环境",
"projectname" : "",
"servicename": "从库",
"hostname": "ali-data-slave-1"
}
}
]env 标签明确标识“测试/预发/生产”环境,避免误扰。group_by 提升通知有效性。