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

使用OpenTelemetry Collector与.NET SDK采集日志失败排查

.NET OpenTelemetry日志无法被Collector接收的问题排查

核心问题:OTLP Exporter端点路径不完整

你的.NET代码中手动指定了OTLP Exporter的Endpoint为http://localhost:4318,但OTLP HTTP协议下,日志信号的标准接收路径是/v1/logs。当手动设置Endpoint时,OpenTelemetry .NET的Exporter不会自动追加信号专属路径,导致请求发送到错误地址,Collector无法识别处理。

修复方法

修改.NET代码中的OtlpExporter配置,将Endpoint改为包含日志信号路径的完整地址:

.AddOtlpExporter(config =>
{
    config.Endpoint = new Uri("http://localhost:4318/v1/logs"); // 追加日志信号专属路径
    config.Protocol = OtlpExportProtocol.HttpProtobuf;
});

额外排查点

1. Collector接收器配置显式化

虽然0.67.0版本的OTLP接收器默认会监听0.0.0.0:4318,但显式配置端点可避免歧义,确保Collector正确监听目标端口:

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318 # 明确指定监听地址和端口

2. 包版本兼容性检查

确认你的.NET项目中OpenTelemetry相关包版本与Collector版本(0.67.0)尽量匹配,避免因版本差异导致协议不兼容。需重点核对以下包版本:

  • OpenTelemetry
  • OpenTelemetry.Exporter.OpenTelemetryProtocol
  • OpenTelemetry.Extensions.Hosting

3. 网络连通性验证

在主机执行以下curl命令,测试Collector的OTLP日志端点是否可达:

curl -X POST http://localhost:4318/v1/logs -H "Content-Type: application/json" -d '{"resourceLogs":[]}'

若Collector正常运行,会返回200 OK,同时你能在Collector的stdout中看到请求日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:40:39