Prometheus http_sd_configs场景下metric_relabel_configs提取fccid标签失效问题
问题根因
metric_relabel_configs完全兼容http_sd_configs场景,配置不生效的核心原因是标签生命周期和处理阶段不匹配:
- 所有带
__前缀的目标标签(包括__param_<参数名>这类用于控制抓取请求参数的标签)仅存在于服务发现完成后、relabel_configs执行阶段 relabel_configs执行结束后,所有未被显式转为普通标签的__前缀标签都会被系统自动清除,不会进入后续的抓取、metric_relabel_configs处理阶段- 你现在把
__param_fccid的提取逻辑放在metric_relabel_configs里,此时这个标签已经被删除,自然读不到对应值
解决方案
将标签提取逻辑从metric_relabel_configs移动到relabel_configs下即可,修改后的配置示例:
- job_name: "tse" http_sd_configs: - url: "http://tse.mydomain.url/something" basic_auth: username: "foo" password: "bar" relabel_configs: - source_labels: [__param_fccid] regex: (.*) target_label: fccid replacement: ${1} # 原有其他metric_relabel_configs规则可保留在下方正常使用
补充说明
Prometheus标签处理的完整顺序:
- 服务发现结束,生成目标的所有默认标签(含所有
__前缀的内置标签、__param_*参数标签) - 执行
relabel_configs规则,可自行调整、保留需要的标签 - 清除所有剩余的
__前缀标签,向目标发起抓取请求 - 拿到返回的指标数据,执行
metric_relabel_configs规则调整指标标签 - 最终将指标写入存储
内容的提问来源于stack exchange,提问作者Nico Kroll
相关产品推荐
相关产品推荐

