You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus relabeling正则配置:移除可选的-admin后缀

我来帮你解决这个问题!Go的RE2正则引擎确实不支持负向预查这类断言,不过我们可以用两种简洁的方式实现你想要的效果——要么用两条relabel规则,要么用一个兼容RE2的正则表达式一次性处理所有情况。

方案一:两条relabel规则(顺序很关键)

先处理带-admin后缀的服务名,再处理不带的。这样能确保所有符合格式的服务名都被正确映射:

# 先匹配并移除末尾的-admin
- source_labels: ['__meta_consul_service']
  regex: '^([a-zA-Z]+(-[a-zA-Z]+)*)-admin$'
  target_label: 'job'
  replacement: '$1'

# 处理不带-admin的服务名,直接复制原内容
- source_labels: ['__meta_consul_service']
  regex: '^[a-zA-Z]+(-[a-zA-Z]+)*$'
  target_label: 'job'
  replacement: '$1'

这里的^和$是锚点,确保我们匹配的是整个服务名,而不是中间包含-admin的子串(虽然你的模式里不会出现这种情况,但加上更严谨)。

方案二:单条规则+可选非捕获组

用一个正则同时匹配两种情况,利用非捕获组(?:-admin)?表示-admin是可选后缀,捕获组1始终保留我们需要的核心部分:

- source_labels: ['__meta_consul_service']
  regex: '^([a-zA-Z]+(-[a-zA-Z]+)*)(?:-admin)?$'
  target_label: 'job'
  replacement: '$1'

这个方案更简洁,一次规则就能处理所有场景:

  • 对于foo-bar-baz或foo,捕获组1就是原字符串,替换后不变
  • 对于qux-quuz-admin,捕获组1是qux-quuz,自动移除了后缀

验证效果

两种方案都能完美匹配你给出的示例:

  • foo-bar-baz → foo-bar-baz
  • foo → foo
  • qux-quuz-admin → qux-quuz

内容的提问来源于stack exchange,提问作者Alban Dericbourg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:08:52