首页/云/可观测性速查/标签匹配运算符:=、!=、=~、!~
Prometheus 与采集64 条

标签匹配运算符:=、!=、=~、!~

四种匹配运算符:等于与不等于做精确匹配,=~ 与 !~ 做正则匹配(隐式锚定全串);正则可合并多个状态码或排除内部路由。

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

四种匹配运算符

标签匹配运算符用于在选择器里筛选序列:等号与不等号做精确匹配,带波浪号的做正则匹配。正则匹配是完整匹配,等价于自动加上首尾锚定,因此写一个具体的状态码只能命中完全等于该值的序列,而不是包含它的序列。

组合出精确的选择器

常用写法包括用正则一次选中多个状态码、按前缀排除内部路由、以及匹配已设置某标签的序列。掌握这几种组合,就能把过滤条件集中写在选择器里,让后续的函数与聚合只处理需要的数据。

基本信息

精确匹配等号与不等号,语义直观
正则匹配带波浪号,按模式匹配
匹配范围完整匹配,隐含首尾锚定
空值匹配用正则要求标签至少有一个字符

典型使用场景

  • 一次筛选多类错误:用正则合并几个状态码
  • 排除内部流量:按路由前缀排除内部接口
  • 只看有值的序列:用正则要求标签至少有一个字符
  • 区分环境:用不等号排除测试环境
  • 缩小扫描范围:把过滤写在选择器里而不是函数之后

匹配示例

匹配示例
http_requests_total{code="500"}              # 精确等于
http_requests_total{code!="500"}             # 不等于
http_requests_total{code=~"5.."}             # 正则:5 开头两位
http_requests_total{code=~"500|502|503"}     # 多值正则
http_requests_total{route!~"^/internal/.*"}  # 排除内部路由

运算符对照

运算符语义注意
等于标签值完全一致最精确,优先使用
不等于排除某个取值常用于排除测试环境
正则匹配按模式匹配全串匹配,需精确描述
正则不匹配按模式排除宽泛正则会增加扫描量

写选择器的约定

  • 能用精确匹配就不用正则,扫描范围更小
  • 正则尽量带上前缀,便于查询引擎优化
  • 过滤条件写在选择器里,避免先取全量再筛选
正则默认全串匹配:写一个数值只能匹配完整值,想要包含匹配必须显式写成两侧通配的形式。
匹配空值的选择器会命中缺失该标签的序列:使用时先确认业务含义,否则容易把无关数据一并纳入统计。

易错点

  • 以为正则是部分匹配:结果与预期不符,误判为数据问题
  • 正则过于宽泛:匹配到大量无关序列,查询变慢
  • 把过滤写在函数之后:先取全量再筛选,开销明显更高
  • 用空值匹配做兜底:会把缺失标签的序列一并算入,口径被污染

数据来源与参考

  • Prometheus 文档 · Label matchers
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌