用途:为 .NET / C# 项目接入 Maple 的 OpenTelemetry 遥测,统一上报 traces、metrics 和日志。
主要能力:通过 IServiceCollection 上的一次 AddOpenTelemetry() 调用配置三类信号,并共享资源信息;使用 ActivitySource 创建业务 span,通过 WithLogging 桥接 ILogger,使日志携带当前 Activity 的 TraceId / SpanId。WithLogging 需要 OpenTelemetry.Extensions.Hosting 1.9 或更高版本。
安装: dotnet add package OpenTelemetry.Extensions.Hosting dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol dotnet add package OpenTelemetry.Instrumentation.AspNetCore dotnet add package OpenTelemetry.Instrumentation.Http
用法要点:在代码中内联端点与摄取 key(形如 Sentry DSN 的项目级只写令牌,如 maple_pk_…,无 key 时可用 MAPLE_TEST),不做环境变量间接引用。使用 HttpProtobuf 时,代码中设置的 Endpoint 会按原样使用,因此需包含 /v1/<signal> 路径。通过 ConfigureResource 添加服务名与部署环境、仓库等属性;WithTracing 中需用 AddSource 注册每个自定义 ActivitySource 名称,未注册的源不会产生 span(StartActivity 返回 null)。ASP.NET Core 与 HttpClient 的请求 span 由对应 instrumentation 覆盖。
限制与共存:不要替换用户已有的 logger 或 provider,OTLP 导出与其并行运行;若项目已导出到 Application Insights、Datadog 或 Honeycomb,可保留并在 WithTracing 中链式追加 Maple 的 AddOtlpExporter。ActivitySource 与 ActivityStatusCode 位于 System.Diagnostics,RecordException 是 OpenTelemetry.Trace 的扩展方法。其余细节暂未提供。