Docker容器中query-exporter无法运行的问题排查求助
解决Docker中query-exporter与Prometheus的IPv6连通问题
1. 确认query-exporter的绑定地址
在slurmctld容器里执行命令,检查端口监听情况:ss -tulpn | grep 8082
如果输出显示:::8082,说明query-exporter绑定了IPv6通配地址,这会导致部分场景下IPv4访问异常。
2. 调整query-exporter绑定到IPv4(最直接的解决方案)
启动query-exporter时,指定绑定IPv4的所有地址:query-exporter --config.file=config.yaml --web.listen-address=0.0.0.0:8082
或者直接在config.yaml里添加配置段:
web: listen_address: "0.0.0.0:8082"
这样服务会绑定IPv4端口,Prometheus用原有IPv4地址就能正常抓取metrics。
3. 让Prometheus支持IPv6访问(如果保留query-exporter的IPv6绑定)
3.1 修改Prometheus目标配置
在prometheus.yml的targets里,把地址改成IPv6格式,比如容器的IPv6地址加端口:
scrape_configs: - job_name: 'query-exporter' static_configs: - targets: ['[2001:db8:1::abc]:8082']
3.2 确保Prometheus容器启用IPv6
在docker-compose.yml中,给Prometheus服务配置支持IPv6的网络:
services: prometheus: # 原有配置 networks: - default - ipv6-net networks: ipv6-net: enable_ipv6: true ipam: config: - subnet: 2001:db8:1::/64
重启Prometheus服务后,重新加载配置。
4. 验证连通性
在Prometheus容器内手动测试连通性:
- IPv4测试:
curl http://slurmctld:8082/metrics - IPv6测试:
curl http://[<slurmctld的IPv6地址>]:8082/metrics
如果能正常返回metrics数据,说明连通没问题,再检查Prometheus的target配置是否正确。
内容的提问来源于stack exchange,提问作者abinitio
相关产品推荐
相关产品推荐

