首页/云/可观测性速查/匹配器语法:=、!=、=~ 与 !~
告警与响应50 条

匹配器语法:=、!=、=~ 与 !~

matchers 支持四种运算符;正则默认锚定(全匹配),要表达包含关系必须显式写 .* ,否则前缀看似匹配实则不中。

可观测性速查云更新于 2026-10-13

匹配器语法是什么

Alertmanager 的路由、抑制与静默都靠匹配器(matchers)挑选告警,运算符有四种:等值、不等、正则匹配、正则不匹配。关键特性是正则默认锚定,也就是正则必须匹配整个标签值,而不是其中的一段;想表达「以某前缀开头」必须显式在正则里补上通配收尾。这一点与多数检索语法相反,是配置写对了却匹配不到告警的首要原因。

基本信息

适用平台Alertmanager 0.22 及以上支持新式字符串列表写法
写法位置route.matchers、inhibit_rules、silences
四种运算符等于、不等于、正则匹配、正则不匹配
校验工具amtool check-config 与 config routes test

典型使用场景

  • 严重级别分流:severity 为 critical 的路由发到电话通道
  • 按团队归属分发:按 service 标签把告警发到对应值班组
  • 批量排除测试环境:用不匹配条件过滤掉 dev 与 test 的标签值
  • 正则归类:把同一业务线前缀的多个服务归到一个接收器
  • 抑制关联:上游故障出现时压下同一集群的衍生告警

匹配器写法

匹配器写法
route:
  routes:
    - matchers:
        - severity="critical"              # 等值:最常用也最安全
        - env!="dev"                        # 不等:排除环境
        - service=~".*-api"                 # 正则默认锚定:整值匹配
        - job!~"test|legacy"                # 正则不匹配
      receiver: pager
# 校验:amtool check-config alertmanager.yml
# 预演:amtool config routes test --config.file=alertmanager.yml severity=critical

运算符对照

写法含义注意
标签="值"精确相等值里含空格要加引号
标签!="值"不相等标签缺失时的行为要实测确认
标签=~"正则"正则匹配,整值锚定想表达包含必须加通配
标签!~"正则"正则不匹配取反条件先放少量告警验证
多条件并列逻辑与同一层级全部满足才命中
同一配置里新旧两种匹配写法混用时校验会失败:旧式是 match / match_re 字典,新式是字符串列表,迁移期间逐个路由替换并用校验工具确认。
正则里的点号是元字符,匹配 IP 或域名时要转义,否则点号会匹配任意字符;写完用 config routes test 打一批样本标签验证匹配结果。

易错点

  • 把前缀当成默认匹配方式会漏掉全部目标,正则锚定意味着必须写完整的值模式
  • 正则中的点号不转义时匹配范围被放大,可能把无关告警也路由到值班通道
  • 新旧匹配写法混用会让配置加载直接失败,升级后需一次性替换并校验
  • 取反条件写得过宽会把需要响应的高危告警一起排除,改完先用测试命令核对命中集合

数据来源与参考

  • Alertmanager 文档 · matchers
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌