Azure App Service Linux自定义OTel容器未响应HTTP ping求助
解决Azure App Service Linux部署OTel Collector容器的健康检查错误
问题核心
你遇到的Container 0 didn't respond to HTTP pings on port: 8080错误,根源是两个关键误解:
- 启动命令里的
-p 4318:4318是Docker CLI的端口映射参数,App Service运行容器时不需要这个(平台会自动处理端口转发); - Azure默认健康检查会访问容器的8080端口,但你的Collector监听在4318,且OTel Collector本身没有默认的根路径健康检查端点。
分步解决
移除错误的启动命令
删掉启动命令中的-p 4318:4318,如果自定义容器的默认启动命令(比如otelcol-contrib --config=/etc/otelcol-contrib/config.yaml)符合你的配置路径,启动命令可以直接留空;如果配置文件路径自定义,直接写Collector的启动参数,比如otelcol-contrib --config=/app/my-custom-config.yaml。确保Collector监听正确地址
检查你的OTel Collector配置文件,确保接收端(比如OTLP HTTP协议)监听在0.0.0.0:4318(不能是localhost,否则容器外无法访问),同时保留你的CORS配置:receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" cors: allowed_origins: ["https://your-target-domain.com"] # 替换为实际允许的源配置健康检查端点
OTel Collector默认没有根路径的健康响应,需要添加health_check扩展暴露健康端点,同时告知Azure健康检查的路径:- 在Collector配置中添加扩展:
extensions: health_check: endpoint: "0.0.0.0:4318/healthz" service: extensions: [health_check] # 加载该健康检查扩展 - 在Azure App Service的应用设置中配置:
WEBSITES_PORT:设置为4318WEBSITES_HEALTH_CHECK_PATH:设置为/healthz
- 在Collector配置中添加扩展:
验证启动状态
部署完成后查看App Service的容器日志,确认Collector正常启动,日志中应出现类似Listening on 0.0.0.0:4318的绑定成功提示。
内容的提问来源于stack exchange,提问作者Farid
相关产品推荐
相关产品推荐

