如何为不同环境配置可复用的Prometheus告警模板?
Prometheus多环境告警规则复用实现方案
完全可行,核心通过标签注入+告警模板变量引用两个步骤实现,无需重复编写相同逻辑的告警规则。
步骤1:给不同环境的监控目标绑定环境标签
你可以在Prometheus的抓取配置(scrape_configs)中,给dev和prod环境的采集任务分别配置固定的env标签,示例配置如下:
scrape_configs: # 开发环境采集任务 - job_name: "dev-nodes" static_configs: - targets: ["dev-node1:9100", "dev-node2:9100"] labels: env: "dev" # 固定注入dev标签 # 生产环境采集任务 - job_name: "prod-nodes" static_configs: - targets: ["prod-node1:9100", "prod-node2:9100"] labels: env: "prod" # 固定注入prod标签
如果使用服务发现采集,也可以在服务发现的relabel_configs中给不同环境的实例统一追加env标签,效果一致。
步骤2:编写通用告警规则,引用env标签生成标题
仅需编写1套通用告警规则,在annotations的title字段直接引用指标自带的env标签即可,高CPU使用率告警示例如下:
groups: - name: node-alert rules: - alert: HighCPUUsage expr: 100 - (avg by(instance, env) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 2m labels: severity: warning annotations: # 直接引用env标签填充环境前缀 summary: "[{{ $labels.env }}] 高CPU使用率告警" description: "实例 {{ $labels.instance }} CPU使用率超过80%,当前值为{{ $value | printf \"%.2f\" }}%"
效果验证
告警触发后,dev环境的实例会自动生成标题[dev] 高CPU使用率告警,prod环境的实例自动生成标题[prod] 高CPU使用率告警,完全匹配需求。如果后续需要新增其他环境,仅需在抓取配置中给新环境的实例加上对应env标签即可,无需修改告警规则。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

