如何通过HTTPS暴露Docker daemon的metrics指标?
Docker daemon 的 --tls* 系列参数仅作用于Docker核心API的默认监听端口(2375/2376),metrics端点是独立的监听服务,目前官方未提供直接配置TLS的能力,你之前的配置不生效属于预期行为。可通过以下两种方案实现HTTPS暴露:
方案1:反向代理封装(推荐)
在本地部署一层反向代理(Nginx/Caddy等)做TLS卸载,原生metrics端点保持监听本地回环地址即可,不对外暴露。
以Nginx为例配置参考:
server { listen 9324 ssl; server_name your-hostname; # 配置SSL证书路径 ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 可选:配置IP访问限制 allow 192.168.1.0/24; deny all; # 可选:配置基础认证 auth_basic "Docker Metrics"; auth_basic_user_file /etc/nginx/.htpasswd; location /metrics { proxy_pass http://127.0.0.1:9323/metrics; proxy_set_header Host $host; } }
配置完成后重启Nginx,即可通过https://your-hostname:9324/metrics访问带TLS加密的指标接口,Prometheus采集时在对应job下配置tls_config适配证书即可。
方案2:通过现有Exporter中转
如果你的环境已经部署了带TLS配置的node_exporter,可以借助其textfile收集器实现中转:
- 新建定时任务,每分钟拉取本地metrics写入指定目录:
* * * * * root curl http://127.0.0.1:9323/metrics > /var/lib/node_exporter/docker_metrics.prom
- 配置
node_exporter启用textfile收集器,同时开启TLS配置,即可从node_exporter的HTTPS端点获取Docker daemon指标。
注意事项
- 无论使用哪种方案,都要配置防火墙规则禁止外部直接访问原生metrics端口9323
- 生产环境不推荐在Prometheus配置中跳过证书校验,建议使用内部CA签发的证书做双向认证
内容的提问来源于stack exchange,提问作者Roy van Santen
相关产品推荐
相关产品推荐

