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

Consul启用ACL时Prometheus服务发现的工作机制与配置方案

开启ACL的Consul与Prometheus服务发现对接配置

Prometheus的Consul服务发现机制原生支持ACL鉴权逻辑,不需要额外编写自定义适配脚本,按照下面的方式配置即可完成对接:

具体配置方式

  • 2.x系列较新版本的Prometheus,可直接在consul_sd_config段使用内置的token字段传入ACL令牌,Prometheus会自动在调用Consul Catalog API时携带X-Consul-Token请求头完成鉴权,配置示例如下:
    scrape_configs:
      - job_name: 'consul_monitored_services'
        consul_sd_configs:
          - server: 'Consul集群访问地址:8500'
            scheme: 'http'
            # 填入拥有catalog读取权限的专用ACL令牌
            token: '你的Consul服务发现专用ACL Token'
            # 以下参数和无ACL场景的配置逻辑完全一致,可按需填写
            services: []
            datacenter: '指定需要发现的Consul数据中心,不填默认跟随集群配置'
    
  • 无内置token字段的低版本Prometheus,可通过http_config自定义请求头的方式实现鉴权,和内置字段的效果完全等价:
    scrape_configs:
      - job_name: 'consul_monitored_services'
        consul_sd_configs:
          - server: 'Consul集群访问地址:8500'
            http_config:
              headers:
                X-Consul-Token:
                  - '你的Consul服务发现专用ACL Token'
    

实操注意事项

  • 不要将高权限的全局管理令牌直接给Prometheus使用,需单独创建仅绑定catalog:read、对应服务实例读取权限的最小权限专用策略,生成对应ACL令牌,降低令牌泄露带来的安全风险
  • 采用配置文件硬编码令牌的方式时,需将Prometheus配置文件的本地权限收紧为仅运行Prometheus服务的用户可读,避免令牌被无关用户获取
  • 配置完成后可先通过curl携带对应令牌调用Consul的服务列表接口,确认接口返回正常后再启动Prometheus,快速定位是令牌权限问题还是配置格式问题
  • 如果Consul集群启用了HTTPS访问,TLS相关的证书配置逻辑和无ACL场景完全一致,不会因为增加鉴权步骤产生额外的配置复杂度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 01:54:03