Prometheus Alertmanager配置后仅Slack收告警Opsgenie无告警问题咨询
故障原因及解决方案
核心问题:路由匹配规则语法错误
Alertmanager的match配置为精确字符串匹配,不支持正则语法,你当前配置中severity: critical|warning|page用了正则的或语法,但未指定正则匹配模式,因此没有任何告警能匹配到team-pager接收器,所有告警都走了默认的prod_alert_slack接收器,这是Opsgenie收不到告警的主要原因。
修复步骤
- 1 修正路由匹配规则
将子路由的match替换为match_re开启正则匹配,同时可以根据需求添加continue: true,让匹配到的告警同时发送给Slack和Opsgenie,修正后的路由配置如下:
route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 30m receiver: 'prod_alert_slack' routes: # Send severity=page alerts to the pager. - match_re: severity: critical|warning|page receiver: team-pager # 若需要告警同时发给Slack和Opsgenie,添加以下参数 continue: true
- 2 验证Opsgenie补充配置
如果你使用的是欧盟区Opsgenie服务,需要在opsgenie_configs中手动指定API地址,默认配置仅适配美国区:
- name: team-pager opsgenie_configs: - responders: - name: 'Oncall' type: 'team' api_key: XXXXXXXXXXXXXXXXX # 欧盟区添加以下行 api_url: 'https://api.eu.opsgenie.com/'
- 3 排查运行日志
将Alertmanager日志级别调整为debug,确认告警匹配过程和API调用结果:
启动参数添加--log.level=debug,检查日志中是否存在路由匹配失败、Opsgenie API调用报错(如网络不通、权限不足、团队名称不匹配)等信息。 - 4 验证告警标签
确认触发的告警确实携带severity标签,且标签值为critical/warning/page中的一种,无拼写错误或多余空格。
内容的提问来源于stack exchange,提问作者srethomas
相关产品推荐
相关产品推荐

