ABP VNext + OpenTelemetry + Jaeger:分布式追踪与调用链可视化 🚀
📚 目录
版本说明:本文基于
OpenTelemetry.Extensions.Hosting>=1.4.0 编写,推荐使用统一的.AddOpenTelemetry().WithTracing(...).WithMetrics(...)API。
TL;DR
- 提供完整
Program.cs+docker-compose.yml示例 🏃♂️- 自动 + 手动埋点:支持 HTTP/gRPC、数据库、外部调用与自定义 Span 🔍
- 高性能采样:Parent-Based + TraceIdRatioBasedSampler,动态可配 ⚙️
- 生产级部署:Batch 模式、OTel Collector、日志/Metrics 关联、异常标记 🚀
背景与动机 🌟
在分布式微服务架构中,调用链横跨多个进程与网络节点,“谁调用了谁”、“哪些环节慢”成为痛点。
OpenTelemetry(OTel)与 Jaeger 提供了开源、无侵入的端到端分布式追踪解决方案,帮助我们:
- 自动化采集:入站 HTTP/gRPC、数据库、外部 HTTP 等一键埋点 📡
- 自定义业务 Span:灵活埋点关键业务逻辑 🛠️
- 统一可视化:Jaeger UI 或 Grafana Tempo 展示完整调用链 📈
本文基于 ABP VNext 6.x + .NET 6+,演示从零搭建到生产级优化,涵盖自动/手动埋点、采样策略、异常与日志关联等最佳实践。
环境与依赖 📦
- .NET SDK:6.0+
- ABP Framework:vNext 6.x
- OpenTelemetry.Extensions.Hosting:>=1.4.0
- Jaeger:all-in-one(测试);独立 Agent/Collector/Storage(生产)
- 可选:OpenTelemetry Collector、Grafana Tempo、Prometheus/Grafana
必装 NuGet 包
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Instrumentation.AspNetCore
dotnet add package OpenTelemetry.Instrumentation.Http
dotnet add package OpenTelemetry.Instrumentation.SqlClient
dotnet add package OpenTelemetry.Instrumentation.GrpcNetClient
dotnet add package OpenTelemetry.Instrumentation.GrpcAspNetCore
dotnet add package OpenTelemetry.Exporter.Jaeger
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol

最低0.47元/天 解锁文章
1191

被折叠的 条评论
为什么被折叠?



