首页/云/可观测性速查/relabel_configs:抓取前的目标标签改写
Prometheus 与采集64 条

relabel_configs:抓取前的目标标签改写

relabel_configs 在抓取发生前处理目标元标签(__address__、__param_* 等),常用于改写端口、过滤目标、添加业务标签与生成实例标签。

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

relabel 是什么

relabel_configs 在抓取发生之前处理目标:它以目标的元标签为输入,通过 keep、drop、replace 等动作改写标签或决定是否保留该目标。常见用途是改抓取端口、从地址里提取实例名、按角色过滤目标,以及给目标补上业务标签。

基本信息

执行时机抓取之前,作用于目标及其元标签
输入标签__address__、__param_*、__meta_* 等内置标签
默认动作未写 action 时按 replace 执行
正则语义完整匹配,等价于自动加上首尾锚点

典型使用场景

  • 改抓取端口:服务发现给出的端口与实际端点不一致时改写 __address__
  • 按角色过滤:只保留需要采集的实例,其余目标在抓取前丢弃
  • 提取实例名:从地址或元标签中截取主机名,作为 instance 展示
  • 补充业务标签:把环境、团队、区域写到样本上,便于跨集群聚合
  • 目标分片:用 hashmod 把大批目标分配给多个 Prometheus 实例

常用动作

action作用典型用例
keep / drop保留或丢弃目标只采集特定角色的实例
replace用正则捕获改写标签从 __address__ 提取端口生成标签
labeldrop / labelkeep删除或保留标签清理无用的元标签
hashmod按哈希分片目标多个 Prometheus 分担大目标集

从地址提取实例标签并改写抓取端口

从地址提取实例标签并改写抓取端口
relabel_configs:
  - source_labels: [__address__]
    regex: '([^:]+):(\\d+)'
    target_label: instance        # 只保留主机名作为展示名
    replacement: '$1'
  - source_labels: [__address__]
    regex: '([^:]+):.*'
    target_label: __address__
    replacement: '$1:9100'        # 统一改成实际抓取端口

抓取前与抓取后的分工

抓取前的 relabel 管目标,抓取后的指标治理管样本:前者决定要不要抓这个目标、抓哪个地址,后者决定哪些指标与标签能进入存储。两者写在同一 job 里,但作用对象与可改写的标签集完全不同,搞混会出现规则位置写对却毫无效果的情况。

以双下划线开头的内置标签只存在于抓取前阶段,抓取完成后会被移除,因此要用它们生成普通标签,必须在这一步完成。
relabel 的正则是完整匹配,要部分匹配需用 .* 包裹;写错时目标会被静默丢弃,只在 Targets 页面少几条记录,很容易被忽略。

易错点

  • 忘记写 action:默认按 replace 执行,本想过滤目标却变成了改标签
  • 正则未按全串匹配书写:以为能部分命中,实际目标被全部丢掉
  • 多条规则顺序颠倒:后写的规则依赖前一条产生的标签,顺序错误会导致取值落空
  • 把指标治理写成目标 relabel:作用对象不同,规则看似正确却完全不生效

数据来源与参考

  • Prometheus 文档 · relabel_config
  • Prometheus 文档 · Configuration 的 relabel 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌