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.mzph.cn/news/22438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

router 跳转打开新窗口

let url router.resolve({name: screen, })?.hrefwindow.open(url, _black)注意:新窗口无法全屏 参考链接:https://stackoverflow.com/questions/29281986/run-a-website-in-fullscreen-mode/30970886#30970886

数据库索引失效的情况

1.对添加了索引的字段进行函数运算 2.如果是字符串类型的字段,如果不加单引号也会导致索引失效 3.如果最索引字段使用模糊查询,如果是头部模糊索引将失效,如果是尾部模糊索引则正常 4.如果使用or分割符,如果or前面的条件中的列有…

基于Yolov2深度学习网络的车辆检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 卷积神经网络(CNN) 4.2. YOLOv2 网络 4.3. 实现过程 4.4. 应用领域 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心…

使用css和js给按钮添加微交互的几种方式

使用css和js给按钮添加微交互的几种方式 在现实世界中,当我们轻弹或按下某些东西时,它们会发出咔嗒声,例如电灯开关。有些东西会亮起或发出蜂鸣声,这些响应都是“微交互”,让我们知道我们何时成功完成了某件事。在本文…

【Winform学习笔记(五)】引用自定义控件库(dll文件)

引用自定义控件库dll文件 前言正文1、生成dll文件2、选择工具箱项3、选择需要导入的dll文件4、确定需要导入的控件5、导入及使用 前言 在本文中主要介绍 如何引用自定义控件库(dll文件)。 正文 1、生成dll文件 通过生成解决方案 或 重新生成解决方案 生成 dll 文件 生成的…

如何发布自己的npm包

发布一个简单的npm包 首先创建一个文件夹(唯一的命名)创建package.json包,输出npm init,一直回车就好。创建index.js文件,向外暴露方法。 将包上传或更新到 npm 执行登录命令:npm login 登录npm官网&…

Java中的SPI机制与扫描class原理

文章目录 前言ClassLoaderJAVA SPI机制Spring SPI机制示例原理 如何加载jar包里的class 前言 Java的SPI机制与Spring中的SPI机制是如何实现的? ClassLoader 这里涉及到了class Loader的机制,有些复杂,jdk中提供默认3个class Loader&#x…

AP AUTOSAR在软件定义汽车生态系统中的角色

AP AUTOSAR在软件定义汽车生态系统中的角色 AP AUTOSAR是AUTOSAR(汽车开放系统架构)的最新版本之一,它是一种面向服务的软件平台,旨在满足未来汽车电子系统的需求,特别是高性能计算、高带宽通信、软件无线更新(OTA)等方面。 AP AUTOSAR在软件定义汽车生态系统中扮演着…

docker 部署mysql 5.6集群

docker搭建mysql的集群(一主双从) 1.拉取镜像 docker pull mysql:5.6 2.启动master容器 docker run -it -d --name mysql_master -p 3306:3306 --ip 192.168.162.100 \ -v /data/mysql_master/mysql:/var/lib/mysql \ -v /data/mysql_master/conf.d…

【无标题】云原生在工业互联网的落地及好处!

什么是工业互联网? 工业互联网(Industrial Internet)是新一代信息通信技术与工业经济深度融合的新型基础设施、应用模式和工业生态,通过对人、机、物、系统等的全面连接,构建起覆盖全产业链、全价值链的全新制造和服务…

Scrum是什么意思,Scrum敏捷项目管理工具有哪些?

一、什么是Scrum? Scrum是一种敏捷项目管理方法,旨在帮助团队高效地开展软件开发和项目管理工作。 Scrum强调迭代和增量开发,通过将项目分解为多个短期的开发周期(称为Sprint),团队可以更好地应对需求变…

聊聊混合动力汽车和纯电骑车的优势和劣势

混合动力汽车和纯电动骑车是两种不同的交通工具,它们都有各自的优势和劣势。本文将分别探讨混合动力汽车和纯电动骑车的优势和劣势,并为文章提供三个备选的好听的标题。 混合动力汽车是一种结合了内燃机和电动机的汽车,它可以同时利用燃油和电…

使用隧道HTTP时如何解决网站验证码的问题?

使用代理时,有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时,由于请求的源IP地址被更改,可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法: 1. 使用高匿…

树和二叉树 --- 数据结构

目录 1.树的概念及结构 1.1树的概念 1.2树的表示 1.3树在实际生活中的运用 2.二叉树的概念及结构 2.1概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n (n>0)个有限结点组成…

No primary or single unique constructor found for interface java.util.List

报错截图: 报错内容: 2023-08-04 15:46:32.884 ERROR 14260 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing fa…

Android 版本 对应的 API版本

Android 14(开发者预览版) 如需详细了解平台变更,请参阅 Android 14 文档。 Android 13(API 级别 33) 如需详细了解平台变更,请参阅 Android 13 文档。 Android 12(API 级别 31、32&#xf…

接口自动化测试-Postman+Newman+Git+Jenkins实战集成(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Postman 创建…

Linux之 centos、Ubuntu 安装常见程序 (-) Mysql 5.7 版本和8.0版本

CentOS 安装 MySql 注意 需要有root权限 安装5.7版本 – 由于MySql并不在CentOS的官方仓库中,所以需要通过rmp命令: 导入MySQL仓库密钥 1、配置MySQL的yum仓库 配置yum仓库 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 安装…

【Linux】Linux下git的使用

文章目录 一、什么是git二、git发展史三、Gitee仓库的创建1.新建仓库2.复制仓库链接3.在命令行克隆仓库3.1仓库里的.gitignore是什么3.2仓库里的git是什么 三、git的基本使用1.将克隆仓库的新增文件添加到暂存区(本地仓库)2.将暂存区的文件添加到.git仓库中3.将.git仓库中的变化…

中介者模式——协调多个对象之间的交互

1、简介 1.1、概述 如果在一个系统中对象之间的联系呈现为网状结构,如下图所示: 对象之间存在大量的多对多联系,将导致系统非常复杂,这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对…