当前位置: 首页 > 网络应用技术

GRPC:如何实现分布式日志跟踪?

时间:2023-03-08 14:14:50 网络应用技术

  本文将介绍如何在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

  当激活调用链拦截器时,将自动生成跟踪。

  资料来源:阿里巴巴云