当前位置: 首页 > news >正文

skywalking全链路追踪

文章目录

  • 一、介绍
  • 二、全链路追踪
    • 1. 测试1 - 正常请求
    • 2. 测试2 - 异常请求
  • 三、过滤非业务请求链路
    • 1. 链路忽略插件
    • 2. 配置
    • 3. 测试

一、介绍

在上一篇文章skywalking安装教程中我们介绍了skywalking的作用以及如何将其集成到我们的微服务项目中。本篇文章我们介绍在微服务架构中,如何使用skywalking对一次客户端请求进行全链路追踪。

skywalking的介绍分多篇文章:

    1. 微服务项目集成skywalking
    1. skywalking全链路追踪

何为全链路追踪?

个人理解:在微服务架构中,一次客户端请求在对应的接口中可能需要通过多次服务调用完成,以skywalking安装教程中的项目演示为例,一次成功结束的请求可能需要经过商品服务、订单服务以及支付服务三个服务共同处理,其中商品服务调用订单服务订单服务调用支付服务。这就是微服务架构的调用链。skywalking通过一个请求上下文将一次客户端请求中涉及到的服务调用进行追踪,这就是全链路追踪的含义。

通过skywalking支持全链路追踪,可以将微服务架构中的服务调用转变为实例调用

二、全链路追踪

在上一篇文章skywalking安装教程中我们已经将skywalking集成到微服务项目中,并在服务端页面看到集成的微服务以及各个服务的实例

下面我们通过接口调用,来查看skywalking的链路追踪是如何一回事。

在服务集成到skywalking初期,skywalking是无法显示服务中的业务接口的,当我们调用服务中的接口时,对应的接口才会出现在skywalking中。

如下所示为服务集成到skywalking初期,我们还没有调用接口

在这里插入图片描述

下面我们调用一次接口

在这里插入图片描述

调用后,该接口将出现在skywalking

在这里插入图片描述

1. 测试1 - 正常请求

当我们调用商品服务的接口并传入商品id为1

在这里插入图片描述

得到的结果为0,即成功

查看日志如下:

在这里插入图片描述

从日志中可以看出,此次请求的调用链如下所示

在这里插入图片描述

下面我们进入skywalking页面查看该调用链路

首先我们知道此次请求调用的是商品服务暴露的接口,所以我们进入商品服务查看调用链路

在这里插入图片描述

在截图左下角的列表中,显示的是当前服务所接收到的所有请求,其中包含大量/eureka相关的请求,这是eureka注册中心与当前服务之间心跳检测所产生的请求,后面我们将会通过配置屏蔽此类请求链路;当然也可以看到我们自己发起的业务请求及其调用链路(图中箭头所示)。

在调用链路中,我们看到此次请求涉及到三个服务的调用:商品服务(紫色标记)订单服务(蓝色标记)支付服务(绿色标记),且从下面的图形中可以看到:商品服务调用订单服务订单服务调用支付服务

如何确定具体处理调用请求的是哪一个实例呢?换句话说,这三个服务各有两个实例,究竟是哪一个实例处理了请求?

我们点击调用链路的其中一环,如下所示,可以发现,商品服务处理请求的实例为端口号为8012的实例

在这里插入图片描述

商品服务调用订单服务,我们再点击订单服务中接口请求的一行

在这里插入图片描述

订单服务调用支付服务,我们再点击支付服务中接口请求的一行

在这里插入图片描述

2. 测试2 - 异常请求

当我们调用商品服务的接口并传入商品id为5时,发现响应状态为500,说明接口中出现异常

在这里插入图片描述

查看日志如下:

在这里插入图片描述

从日志中可以看出,此次请求的调用链如下所示

在这里插入图片描述

下面我们进入skywalking页面查看该调用链路

首先我们知道此次请求调用的是商品服务暴露的接口,所以我们进入商品服务查看调用链路

在这里插入图片描述

与前面正常请求的界面不同的是,当接口中出现异常导致响应500时,该链路采用红色重点标记,其调用链中也通过使用红色的点进行标记,方便我们知道异常发生在哪些服务中。

我们点击调用链路的其中一环,如下所示,可以发现,商品服务处理请求的实例为端口号为8011的实例,从中也可以看到异常信息

在这里插入图片描述

商品服务调用订单服务,我们再点击订单服务中接口请求的一行

在这里插入图片描述

订单服务调用支付服务,我们再点击支付服务中接口请求的一行

在这里插入图片描述

三、过滤非业务请求链路

前面说到,在skywalking追踪到的请求调用链路中,不仅包含了我们定义的业务接口,还包含了其他非业务接口(如eureka心跳检测的接口),下面我们介绍如何过滤掉这些非业务接口,使其不出现在skywalking的链路追踪中。

在这里插入图片描述

1. 链路忽略插件

进入skywalking客户端目录,如下图所示

在这里插入图片描述

进入optional-plugins文件夹,将jar包apm-trace-ignore-plugin-8.16.0.jar复制到plugins文件夹中

在这里插入图片描述

2. 配置

忽略调用链路的配置有两种:1. 系统变量2. 配置文件系统变量优先级大于文件

其配置的路径应匹配Ant Path规则,如/path/*/path/**/path/?

  • 系统变量

    在系统变量中添加skywalking.trace.ignore_path来配置要忽略的接口,多个接口之间用逗号“,”分隔。

  • 配置文件

    config文件夹中添加配置文件apm-trace-ignore-plugin.config,在该配置文件中添加以下配置

    trace.ignore_path=/your/path/1/**,/your/path/2/**
    

示例:

我们要忽略掉eureka心跳检测的接口,则在配置文件中添加以下配置

trace.ignore_path=/eureka/**

3. 测试

插件配置都完成后,我们重启服务,并进入调用链路页面进行查看,此时和eureka相关的非业务接口已不再被追踪

在这里插入图片描述



纸上得来终觉浅,绝知此事要躬行。

————————我是万万岁,我们下期再见————————

http://www.lryc.cn/news/108535.html

相关文章:

  • Nacos配置中心设置Mongodb
  • 【Spring Boot】请求参数传json对象,后端采用(map)CRUD案例(101)
  • 微软开测“Moment4”启动包:Win11 23H2要来了
  • SpringCloud《Eureka、Ribbon、Feign、Hystrix、Zuul》作用简单介绍
  • 运维项目—K8S命令
  • java框架整合Springmvc+···+maven
  • 答辩PPT怎么做?在线PPT软件哪个好?
  • Astro + Vercel 快速搭建自己的博客网站
  • TensorFlow
  • 【iOS RunLoop】
  • 阿里云平台注册及基础使用
  • Mr. Cappuccino的第58杯咖啡——MacOS配置Maven和Java环境
  • linux Ubuntu 更新镜像源、安装sudo、nvtop
  • LUN映射出错导致写操作不互斥的服务器数据恢复案例
  • Android 仿京东头部滚动头像动态变化
  • 高频交易学习——上期SimNow开通
  • 电力巡检无人机助力迎峰度夏,保障夏季电力供应
  • UOS环境python3.7及pyqt5安装
  • SEO优化:提升网站排名与流量的关键策略
  • flutter-GridView使用
  • Unity Shader编辑器工具类ShaderUtil 常用函数和用法
  • 详解Spring中涉及的技术
  • 阿里云ssl免费数字证书快过期 如何更换
  • 利用OpenCV实现图像拼接
  • 【java安全】无Commons-Collections的Shiro550反序列化利用
  • CSS 滚动条
  • Linux: security: openssh: sshd 出现defunct的一种情况
  • Self-regulating Prompts: Foundational Model Adaptation without Forgetting
  • 平时工资不够用?推荐4种适合工作之余做的兼职副业!
  • 21.Netty源码之编码器