OpenTelemetry Collector连接Apache Spark失败:连接被拒绝问题求助
解决OpenTelemetry Collector采集Spark指标时的连接拒绝问题
核心问题
错误日志里的dial tcp 127.0.0.1:9090: connect: connection refused是关键——在OpenTelemetry Collector容器内部,localhost指向的是容器自身,而非运行Spark Master的容器。即便两者处于同一Docker网络,容器的localhost属于独立网络命名空间,无法跨容器访问。
解决步骤
1. 获取Spark容器的可访问标识
- 执行
docker ps查看Spark Master容器的名称(例如容器名可能为spark-master) - 或者通过容器ID/名称获取内部IP:
docker inspect <spark容器ID或名称> | grep IPAddress
2. 修改Collector配置文件
将apachespark接收器的endpoint中的localhost替换为Spark容器的名称或内部IP:
receivers: apachespark: collection_interval: 10s endpoint: http://spark-master:9090/ # 替换为Spark容器名称或内部IP application_names: exporters: debug: verbosity: detailed service: pipelines: metrics: receivers: [apachespark] exporters: [debug]
优先使用容器名称:同一Docker网络内,Docker DNS会自动解析容器名称到对应IP,比静态IP更稳定(容器重启后IP可能变化)
3. 重启Collector容器
让新配置生效:
docker restart <collector容器ID或名称>
验证连通性(可选)
可以在Collector容器内测试与Spark Master的连通性,确认网络正常:
docker exec -it <collector容器ID> curl http://spark-master:9090/api/v1/applications
如果返回JSON格式的应用列表,说明网络通路正常。
内容的提问来源于stack exchange,提问作者Fabri_z_
相关产品推荐
相关产品推荐

