从0到1:如何用opentelemetry-dotnet-contrib在5分钟为.NET应用快速搭建分布式链路追踪?快速入门教程
从0到1如何用opentelemetry-dotnet-contrib在5分钟为.NET应用快速搭建分布式链路追踪快速入门教程【免费下载链接】opentelemetry-dotnet-contribThis repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Instrumentation libraries, exporters, and other components can find their home here.项目地址: https://gitcode.com/gh_mirrors/op/opentelemetry-dotnet-contribopentelemetry-dotnet-contrib是 OpenTelemetry .NET SDK 的官方社区扩展仓库为 .NET 应用提供开箱即用的分布式链路追踪Traces、指标Metrics与日志Logs组件。它包含 HTTP、SQL、Redis、Kafka 等 20 种探针库和多类数据导出器让你几乎不用修改业务代码就能把每一次请求的调用链路清晰地看见。本教程面向新手带你用 5 分钟完成从克隆仓库到跑通第一条链路追踪的完整流程。它和 OpenTelemetry .NET 是什么关系一句话理解核心 SDK 打地基contrib 仓库盖房子。核心 SDK 提供 TracerProvider、Exporter 等基础能力opentelemetry-dotnet-contrib提供即插即用的组件Instrumentation探针自动拦截 HttpClient、SQL、Redis 等库生成 SpanExporter导出器把追踪数据发往 Geneva、OneCollector、InfluxDB 等后端Resource Detector资源检测器自动识别 AWS、Azure、容器等运行环境信息Sampler采样器如 AWS X-Ray 远程采样器每个组件都是独立的 NuGet 包按需安装、独立版本。仓库结构非常清晰目录作用src/各组件源码每个子目录对应一个 NuGet 包test/对应的单元测试、基准测试examples/可直接运行的示例ASP.NET、Kafka、Redis 等src/Shared/跨组件共享的工具代码第 1 步克隆仓库认识项目约 1 分钟git clone https://gitcode.com/gh_mirrors/op/opentelemetry-dotnet-contrib进入仓库后建议先浏览两个文件根目录README.md了解每个组件的成熟度状态Development / Alpha / Beta / StableAGENTS.md了解仓库的构建方式与目录约定 新手建议只挑你要用的组件看不必通读整个 monorepo。第 2 步安装 NuGet 探针包约 2 分钟在你的业务项目中不是 contrib 仓库本身按技术栈安装对应包。以最常见的 ASP.NET Core HttpClient 组合为例dotnet add package OpenTelemetry.Extensions.Hosting dotnet add package OpenTelemetry.Instrumentation.AspNetCore dotnet add package OpenTelemetry.Instrumentation.Http dotnet add package OpenTelemetry.Exporter.Console包与源码的对应关系安装包名 src/下的目录名例如OpenTelemetry.Instrumentation.Http的源码位于src/OpenTelemetry.Instrumentation.Http/其 README 里写明了默认采集哪些属性如http.request.method、http.response.status_code。第 3 步注册探针跑通链路约 2 分钟在应用启动处Program.cs或Startup注册核心就一段链式调用builder.Services.AddOpenTelemetry() .ConfigureResource(r r.AddService(my-app)) .WithTracing(tracing tracing .AddAspNetCoreInstrumentation() // 入站 Web 请求 .AddHttpClientInstrumentation() // 出站 HTTP 调用 .AddConsoleExporter()); // 先输出到控制台验证启动应用并发起一个请求控制台就会打印出带 TraceId、SpanId 的链路数据——恭喜你的分布式链路追踪已经跑起来了验证要点入站请求与出站调用共享同一个TraceId这就是链路的含义每个 Span 上带有方法、路由、状态码等语义约定属性确认无误后把AddConsoleExporter()换成 OTLP Exporter 指向你的后端如 Grafana、Jaeger该选哪些链路追踪组件速查表所有组件都在src/下每个目录都有独立 README 和 CHANGELOG你的场景组件目录ASP.NET Core 入站请求src/OpenTelemetry.Instrumentation.AspNetCore/传统 ASP.NET (IIS)src/OpenTelemetry.Instrumentation.AspNet/出站 HttpClient 调用src/OpenTelemetry.Instrumentation.Http/SQL Server 查询src/OpenTelemetry.Instrumentation.SqlClient/Redis 缓存操作src/OpenTelemetry.Instrumentation.StackExchangeRedis/Kafka 消息生产/消费src/OpenTelemetry.Instrumentation.ConfluentKafka/Hangfire 后台任务src/OpenTelemetry.Instrumentation.Hangfire/AWS 客户端 SDKsrc/OpenTelemetry.Instrumentation.AWS/把数据发给 OneCollector/Genevasrc/OpenTelemetry.Exporter.OneCollector/、src/OpenTelemetry.Exporter.Geneva/进阶加分项按需了解自定义维度用 Enrichment 扩展给每个 Span 自动附加用户 ID、租户 ID示例代码见examples/enrichment/Examples.Enrichment/Program.cs只需实现ITraceEnricher并调用TryAddTraceEnricherT()识别运行环境安装OpenTelemetry.Resources.AWS/OpenTelemetry.Resources.Azure等包自动补充云环境资源标签采样策略src/OpenTelemetry.Sampler.AWS/提供对接 AWS X-Ray 的远程采样器本地调试想快速验证行为可参考examples/下对应场景的完整可运行工程如examples/redis/、examples/kafka/新手常见问题Q组件版本应该跟核心 SDK 保持一致吗A建议与所用核心 OpenTelemetry 包保持同系列版本。各组件状态Stable/Beta 等见其目录下的README.md预发布版本带-beta、-alpha后缀。Q装了多个探针会冲突吗A不会。所有探针统一挂在TracerProviderBuilder上互不干扰这也是 OpenTelemetry 的设计优势。Q如何确认追踪数据发出去没A先用 Console Exporter 本地验证再切换到正式后端数据格式遵循 OpenTelemetry 语义约定各探针 README 都列出了默认采集的属性清单。写在最后5 分钟回顾克隆仓库 → 安装 NuGet 包 → 一段代码注册探针你的 .NET 应用就拥有了完整的分布式链路追踪能力。后续每接入一个新的依赖SQL、Redis、Kafka……只需再装一个对应的探针包并追加一行注册链路会自动串联起来。祝排障顺利 【免费下载链接】opentelemetry-dotnet-contribThis repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Instrumentation libraries, exporters, and other components can find their home here.项目地址: https://gitcode.com/gh_mirrors/op/opentelemetry-dotnet-contrib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考