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

如何在Prometheus配置文件中为每个Target设置Bearer Token?

解决Prometheus同一Job下单独为Target配置Bearer Token的问题

你这么配置不生效的核心原因是:Prometheus的static_configs块不支持bearer_token字段——这个字段只能在scrape_config层级(也就是Job级别)配置,写在static_config里不会被识别。

下面是两种可行的解决方式:

方式一:用Static Config加标签配合Relabeling

直接在static_config里给每个Target添加自定义标签,再通过relabel规则把标签转换成Prometheus内部的临时标签__bearer_token__(这个标签会被用来设置请求的Bearer Token)。

配置示例:

scrape_configs:
  - job_name: 'example'
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:9090']
      labels:
        bearer_token: "TOKEN_A"
    - targets: ['localhost:9091']
      labels:
        bearer_token: "TOKEN_B"
    relabel_configs:
    - source_labels: [bearer_token]
      target_label: __bearer_token__
      action: replace

原理:__bearer_token__是Prometheus的特殊临时标签,优先级高于Job级别的bearer_token配置,每个Target的自定义标签值不同,就能实现单独分配Token。

方式二:用文件服务发现(File SD)

如果Target数量较多或者需要动态更新,推荐用File SD来管理Target和对应的Token,不用每次修改Prometheus主配置。

  1. 先创建一个Target配置文件(比如targets.json):
[
  {
    "targets": ["localhost:9090"],
    "labels": {
      "bearer_token": "TOKEN_A"
    }
  },
  {
    "targets": ["localhost:9091"],
    "labels": {
      "bearer_token": "TOKEN_B"
    }
  }
]
  1. 修改Prometheus主配置:
scrape_configs:
  - job_name: 'example'
    scrape_interval: 5s
    file_sd_configs:
    - files:
      - './targets.json'
      # 可选:设置文件刷新间隔,默认5分钟
      refresh_interval: 1m
    relabel_configs:
    - source_labels: [bearer_token]
      target_label: __bearer_token__
      action: replace

这种方式的好处是更新Target或Token时,不用重启Prometheus,文件会自动刷新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:50:35