用途:为 .NET 10 应用接入 OpenTelemetry 可观测性,统一配置 traces、metrics、logs 三类信号,并通过 OTLP 导出到兼容后端。
主要能力:用单次 AddOpenTelemetry() 配置三类信号,UseOtlpExporter() 统一导出;支持 ASP.NET Core、HttpClient、EntityFrameworkCore、Runtime 等自动埋点;支持自定义 ActivitySource 分布式追踪、自定义指标与日志。
使用方式:在 Program.cs 中调用 builder.Services.AddOpenTelemetry(),按需链式配置 ConfigureResource、WithTracing、WithMetrics、WithLogging,最后调用 UseOtlpExporter()。指标通过 IMeterFactory 创建 Meter,避免 new Meter。追踪用 ActivitySource.StartActivity(),并对 activity 使用 ?. 做空安全处理。日志可用 [LoggerMessage] 源生成器。OTLP 端点默认 http://localhost:4317(gRPC),可用 OTEL_EXPORTER_OTLP_ENDPOINT、OTEL_SERVICE_NAME 等环境变量覆盖。本地开发可运行 Aspire Dashboard 独立容器:docker run --rm -it -p 18888:18888 -p 4317:18889 mcr.microsoft.com/dotnet/aspire-dashboard:latest,UI 位于 http://localhost:18888。
适用场景:需要统一可观测性的 .NET 服务、自定义业务指标、自定义追踪跨度、本地与生产环境遥测路由。
限制与注意:不要混用 UseOtlpExporter 与 AddOtlpExporter,否则运行时抛 NotSupportedException;不要每请求创建 Meter;指标标签需保持低基数,每个 instrument 组合数控制在约 1000 以内;自定义 ActivitySource 与 Meter 必须注册,否则数据被静默丢弃。生产采样可用 OTEL_TRACES_SAMPLER=parentbased_traceidratio。具体收费、平台与效果资料暂未提供。