Prometheus 抓取时如何添加自定义 HTTP 头?

Prometheus 抓取配置通过 authorization、bearer_token_file 或 oauth2 支持认证头;任意自定义 Header 需借助 version 2.27+ 的 http_headers 字段或反向代理注入。本文给出完整配置示例与安全建议。

最佳实践
Prometheus 抓取时如何添加自定义 HTTP 头?封面

Prometheus 2.27+ 支持在 scrape_config 中用 authorization 设置 Authorization 头;任意自定义 HTTP 头则用 http_headers 字段(2.41+),老版本只能借助反向代理注入。

认证头:Authorization / Bearer Token

scrape_configs:
  - job_name: 'secure-app'
    static_configs:
      - targets: ['app:9090']
    authorization:
      type: Bearer
      credentials_file: /etc/prometheus/token

也可以用 basic_auth(username/password)或 oauth2 客户端凭证模式。

任意自定义头:http_headers

scrape_configs:
  - job_name: 'custom-headers'
    static_configs:
      - targets: ['app:9090']
    http_headers:
      X-Scope-OrgID:
        values: ['team-a']
      X-Custom-Header:
        values: ['my-value']

注意:http_headers 里不能再设 Authorization(与 authorization 段互斥),Host、Content-Type 等保留头也有限制。

老版本的替代方案:反向代理

在目标前架一个 Nginx/Traefik 代理,由代理统一注入请求头,Prometheus 抓代理地址即可。

观测云对照

观测云 DataKit 的 prom 采集器在配置中直接支持自定义 HTTP Headers(含认证 Token),适合抓取需要鉴权的业务 /metrics 端点;指标进观测云后由平台统一存储与告警,无需自建抓取层。

常见问题(FAQ)

Q:Token 写在配置文件里安全吗?credentials_file 引用文件并收紧文件权限,不要把密钥提交进 Git。

Q:每个 target 能用不同的头吗? http_headers 是 job 级配置;不同头请拆 job。

Q:抓取报 401 怎么排查? 先用 curl 带同样的头手动请求 /metrics 验证凭据有效性。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台