AlertManager中alertname字段的matchers配置失效问题排查
问题描述
我有一份AlertManager的YAML配置,使用matchers匹配alertname字段时,对应告警能在AlertManager中显示,但无法推送到PagerDuty;但基于namespace字段的matchers配置,告警既能在AlertManager显示,也能正常推送到PagerDuty。
配置文件如下:
kube-prometheus-stack: alertmanager: alertmanagerSpec: replicas: 3 config: global: resolve_timeout: 15m time_intervals: - name: "business-hours" time_intervals: - weekdays: ["monday:friday"] times: - start_time: "10:00" end_time: "16:00" location: "America/Denver" route: group_by: - cluster - namespace - severity - alertname # A default receiver for all alerts receiver: "default" # The child route trees routes: - receiver: "Team1" active_time_intervals: - business-hours matchers: - alertname =~ "^Alert1" - receiver: "Team1" active_time_intervals: - business-hours matchers: - alertname =~ "Alert2" - receiver: "Team1" active_time_intervals: - business-hours matchers: - namespace =~ "Alert3"
想确认alertname是否为合法的匹配字段,或是存在其他配置问题?
问题排查与解决建议
alertname是合法字段:alertname是Prometheus告警的标准内置标签,所有告警都会默认携带该字段,字段名本身没有问题。检查正则匹配规则的准确性:
- 第一条规则
alertname =~ "^Alert1"仅匹配以Alert1开头的告警名称,比如Alert1、Alert1_xxx,如果实际告警名是XAlert1这类不以Alert1开头的则不会匹配; - 第二条规则
alertname =~ "Alert2"匹配任意包含Alert2的告警名,比如Alert2、Alert2_test、test_Alert2。
需确认实际触发的告警alertname值是否完全符合上述正则规则,注意正则是大小写敏感的,如果告警名是小写的alert1则不会匹配。
- 第一条规则
验证时间区间是否符合:三个路由都绑定了
business-hours时间区间(美国丹佛时间周一至周五10:00-16:00),若alertname对应的告警触发时间不在这个窗口内,会直接走default接收器,而非Team1。可对比namespace规则生效的告警触发时间,确认是否存在时间窗口不匹配的问题。检查告警标签的实际值:在AlertManager UI中查看触发告警的标签详情,确认
alertname的实际值是否与配置中的正则匹配,排除标签值拼写、大小写的问题。
内容的提问来源于stack exchange,提问作者JBeach
相关产品推荐
相关产品推荐

