答案:Jaeger是CNCF维护的分布式追踪系统,通过OpenTelemetry集成到.NET微服务中,采集请求链路数据并发送至Jaeger Agent,经Collector存储后可在UI查看调用链、延迟等信息。

Jaeger 是由 Uber 开源、现由 Cloud Native Computing Foundation(CNCF)维护的分布式追踪系统,用于监控和诊断微服务架构中的请求链路。它能帮助开发者可视化服务之间的调用关系、识别性能瓶颈,比如慢请求、服务依赖问题等。
Jaeger 的核心组件
Jaeger 包含几个关键部分:
Jaeger Agent:运行在每台主机上的网络守护进程,接收来自客户端的追踪数据并转发给 Collector。 Jaeger Collector:接收上报的追踪信息,校验并写入后端存储(如 Elasticsearch 或 Cassandra)。 Query Service:提供 UI 查询接口,用于查看和搜索追踪记录。 UI(Jaeger UI):图形化界面,展示调用链、服务依赖图和延迟分布。
在 .NET 微服务中集成 Jaeger
要在 .NET 应用中实现分布式追踪,通常使用 OpenTelemetry 配合 Jaeger Exporter。OpenTelemetry 是统一的观测性框架,支持多种语言,.NET 生态中已广泛采用。
以下是具体步骤:
1. 安装必要 NuGet 包
在你的 .NET 项目中安装以下包:
OpenTelemetry OpenTelemetry.Exporter.Jaeger OpenTelemetry.Extensions.Hosting(如果是 ASP.NET Core 项目) OpenTelemetry.Instrumentation.AspNetCore(可选,自动追踪 HTTP 请求) OpenTelemetry.Instrumentation.Http(可选,追踪 HttpClient 调用)dotnet add package OpenTelemetry –version 1.8.1 dotnet add package OpenTelemetry.Exporter.Jaeger –version 1.8.1 dotnet add package OpenTelemetry.Extensions.Hosting dotnet add package OpenTelemetry.Instrumentation.AspNetCore dotnet add package OpenTelemetry.Instrumentation.Http
2. 配置 OpenTelemetry 和 Jaeger Exporter
在 Program.cs 中添加如下配置(以 .NET 6+ 为例):
var builder = WebApplication.CreateBuilder(args);// 添加 OpenTelemetry 追踪服务builder.Services.AddOpenTelemetryTracing(tracerProviderBuilder =>{ tracerProviderBuilder .AddAspNetCoreInstrumentation() // 自动追踪 MVC/WebAPI 请求 .AddHttpClientInstrumentation() // 自动追踪 HttpClient 调用 .AddJaegerExporter(opt => { opt.AgentHost = “localhost”; // Jaeger Agent 地址 opt.AgentPort = 6831; // 默认 UDP 端口 }) .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(“MyDotNetService”));});var app = builder.Build();app.MapGet(“/”, () => “Hello World!”);app.Run();
这段代码会自动收集进入和离开服务的 HTTP 请求,并通过 Jaeger Exporter 发送到本地的 Jaeger Agent。
3. 启动 Jaeger 实例(开发环境)
使用 Docker 快速启动 Jaeger All-in-One:
docker run -d –name jaeger -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 14250:14250 -p 9411:9411 jaegertracing/all-in-one:latest
启动后访问 https://www.php.cn/link/13941bddb1399810f387f38dc7c775f0 即可打开 Jaeger UI。
4. 验证追踪数据
运行你的 .NET 微服务,发起一些请求(例如访问 /api/values)。然后打开 Jaeger UI,选择对应的服务名称(如 MyDotNetService),点击 “Find Traces”,就能看到请求链路详情,包括每个 span 的耗时、标签、事件等。
进阶建议
在生产环境中,建议将 Jaeger Collector 暴露为独立服务,并配置 TLS 和认证。 可以结合日志系统(如 Serilog)将 TraceId 输出到日志,便于关联排查。 若服务间使用 gRPC 或消息队列(如 Kafka),可分别启用 Grpc.Net.Client 和 OpenTelemetry.Instrumentation.Kafka 等插件增强追踪能力。基本上就这些。只要配置好 OpenTelemetry 并连接到 Jaeger,.NET 微服务的调用链就能自动被捕捉和展示。
以上就是什么是 Jaeger,如何追踪 .NET 微服务?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440206.html
微信扫一扫
支付宝扫一扫