Prometheus 如何为每个 Target 配置不同的抓取 URL?

Prometheus 的 static_configs 支持按 target 分组,每组可写自己的 metrics_path、params 与标签。本文演示一个 job 内多个 target 使用不同抓取路径与参数的写法,以及用 file_sd 管理大量目标的技巧。

最佳实践
Prometheus 如何为每个 Target 配置不同的抓取 URL?封面

可以——在 static_configs 里把目标分成多个组,每组独立配置 labels;而 metrics_path、params 这类抓取参数属于 job 级,若每个目标路径不同,更推荐拆成多个 job 或用 relabel 动态改写。

写法一:分组 static_configs(推荐)

scrape_configs:
  - job_name: 'my-app'
    metrics_path: /metrics
    static_configs:
      - targets: ['server1:9090']
        labels: {env: prod, team: order}
      - targets: ['server2:9090']
        labels: {env: staging, team: order}

每个 targets 块可以挂自己的标签,这是最常用的"每个 target 不同配置"。

写法二:路径/参数也不同——拆 job 或 relabel

metrics_pathschemeparams 是 job 级配置,同组内所有 target 共用。路径不同时:

  • 目标少:直接拆成多个 job,各自写 metrics_path
  • 目标多:用 relabel_configs__address__ 匹配改写 __metrics_path__
relabel_configs:
  - source_labels: [__address__]
    regex: 'server1:.*'
    target_label: __metrics_path__
    replacement: /custom/metrics

__ 开头的是抓取期的内部标签,改写后不会出现在最终指标里。

大量目标:file_sd

目标几十上百个时,用 file_sd_configs 把目标清单放到 JSON/YAML 文件里,Prometheus 自动热加载,改目标不用重启。

观测云对照

观测云 DataKit 的 prom 采集器同样支持为每个采集实例配置独立 URL、指标名前缀与自定义标签,配置即 TOML 片段,改完热生效;采集到的指标直接进观测云,自带标签检索与看板能力。

常见问题(FAQ)

Q:relabel 改写的标签会保留在指标里吗? __ 前缀的内部标签不会;要保留请写入普通标签名。

Q:params 里的参数会冲突吗? params 是 job 级,同 job 内所有 target 一致;每个 target 不同参数请拆 job。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台