GRPC: 如何实现分布式日志跟踪?
简介: 本文将介绍如何在 gRPC 分布式场景中,实现 API 的日志跟踪。
介绍
本文将介绍如何在 gRPC 分布式场景中,实现 API 的日志追踪。
什么是 API 日志追踪?一个 API 请求会跨多个微服务,我们希望通过一个唯一的 ID 检索到整个链路的日志。
请访问如下地址获取完整教程:
安装
快速开始
我们会创建 /api/v1/greeter API 进行验证,同时开启 logging, meta 和 tracing 拦截器以达到目的。
1. 创建 api/v1/greeter.proto
2. 创建 api/v1/gw_mapping.yaml
3. 创建 buf.yaml
4. 创建 buf.gen.yaml
5. 编译 proto file
如下的文件会被创建。
6. 创建 bootA.yaml & serverA.go
Server-A 监听 1949 端口,并且发送请求给 Server-B。
我们通过 rkgrpcctx.InjectSpanToNewContext() 方法把 Tracing 信息注入到 Context 中,发送给 Server-B。
7. 创建 bootB.yaml & serverB.go
Server-B 监听 2008 端口。
8. 文件夹结构
9. 启动 ServerA & ServerB
10. 往 ServerA 发送请求
11. 验证日志
两个服务的日志中,会有同样的 traceId,不同的 requestId。
我们可以通过 grep traceId 来追踪 RPC。
- ServerA
- ServerB
概念
当我们没有使用例如 jaeger 调用链服务的时候,我们希望通过日志来追踪分布式系统里的 RPC 请求。
rk-boot 的拦截器会通过 openTelemetry 库来向日志写入 traceId 来追踪 RPC。
当启动了日志拦截器,原数据拦截器,调用链拦截器的时候,拦截器会往日志里写入如下三种 ID。
EventId
当启动了日志拦截器,EventId 会自动生成。
RequestId
当启动了日志拦截器和原数据拦截器,RequestId 和 EventId 会自动生成,并且这两个 ID 会一致。
即使用户覆盖了 RequestId,EventId 也会保持一致。
TraceId
当启动了调用链拦截器,traceId 会自动生成。
原文链接
本文为阿里云原创内容,未经允许不得转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-10-21 小红书推荐大数据在阿里云上的实践
2019-10-21 云栖深度干货 | 打造“云边一体化”,时序时空数据库TSDB技术原理深度解密