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

Azure容器应用中OTel Collector Contrib无法接收数据求助

Azure容器应用中OTel Collector Contrib无法接收.NET Core 7 API遥测数据的排查与解决

问题背景

已在Azure容器应用部署OTel Collector Contrib,通过添加args配置解决启动问题后,Collector正常运行并监听4318端口的OTLP HTTP流量,入口已开放外部访问。但.NET Core 7 API的遥测数据无法被该Collector接收,本地Docker运行的Collector则可正常接收。

排查关键点

1. Collector监听地址验证

检查Collector配置文件中的OTLP HTTP接收器配置,确保监听地址是0.0.0.0:4318,而非仅localhost:4318——如果是后者,Collector只会监听容器内部回环地址,外部请求无法到达。

示例正确配置:

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318

2. Azure容器应用入口规则检查

确认容器应用的入口规则是否正确映射端口:

  • 若使用Azure容器应用的默认HTTPS入口,外部访问端口是443,需将内部4318端口与外部443端口绑定,而非直接暴露4318端口。
  • 验证入口规则的协议是否为HTTP(匹配OTLP HTTP协议)。

3. .NET Core API导出器配置修正

查看API中的OTLP导出器代码,重点检查Endpoint配置:

  • 错误示例(直接用4318端口):
options.Endpoint = new Uri("http://your-container-app-url:4318/v1/traces");
  • 正确示例(使用Azure容器应用的HTTPS默认端口,无需指定4318):
options.Endpoint = new Uri("https://your-container-app-url.azurecontainerapps.io/v1/traces");

同时确认OtlpExportProtocol设置为HttpProtobuf,与Collector的接收器协议匹配。

4. 网络连通性验证

在API所在环境测试与Azure容器应用公网地址的连通性,可使用curl命令测试:

curl -X POST https://your-container-app-url.azurecontainerapps.io/v1/traces -H "Content-Type: application/x-protobuf"

若返回405或其他非连接错误,说明网络连通;若超时则需排查网络策略或防火墙规则。

最终解决方案

修正.NET Core API的OTLP导出器Endpoint地址,将直接指定4318端口的HTTP地址改为Azure容器应用的HTTPS公网地址(默认443端口),同时确保Collector的接收器监听0.0.0.0:4318,最终遥测数据成功被Azure容器应用中的Collector接收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:43:21