本文将介绍如何在GRPC分布式场景中实现API日志跟踪。
什么是API日志跟踪?
API请求将跨越多个微服务,我们希望通过唯一的ID检索整个链接日志。
我们将使用RK-boot来启动GRPC服务。
请访问以下地址获取完整的教程:
https://rkdev.info/cnhttps://rkdocs.netlify.app/cn(备用)
RK-Boot默认情况下集成了GRPC-GATEWAY,默认情况下开始。
我们将创建/api/v1/enterer API进行验证,并打开伐木,元和跟踪拦截器以实现目标。
1.创建api/v1/etcher.proto
2.创建api/v1/gw_mapping.yaml
3.创建buf.yaml
4.创建buf.gen.yaml
5.编译原始文件
将创建以下文件。
6.创建boota.yaml&servera.go
Server-A聆听端口1949,并向Server-B发送请求。
我们通过rkgrpcctx.injectspantonewcontext()方法将跟踪信息注入上下文中,然后将其发送到服务器-B。
7.创建bootb.yaml&serverb.go
Server-B监视器端口2008。
8.文件夹结构
9.启动servera&serverb
10.将请求发送到服务器
11.验证日志
在这两种服务的日志中,将有相同的跟踪,不同的请求ID。
我们可以通过GREP TRACEID跟踪RPC。
当我们不使用Jaeger调用链服务时,我们希望通过日志跟踪分布式系统中的RPC请求。
RK-Boot的拦截器将通过OpentElemetry库将TraceID写入日志来跟踪RPC。
当启动日志拦截器时,原始数据拦截器和链拦截器被调用,拦截器将在日志中编写以下三个ID。
最终
当启动日志拦截器时,将自动生成EventID。
requestId
当日志拦截器和原始数据拦截器启动时,将自动生成requestID和EventID,这两个ID将保持一致。
即使用户涵盖了请求ID,EventID也将保持一致。
traceid
当激活调用链拦截器时,将自动生成跟踪。
资料来源:阿里巴巴云