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相关的非业务接口已不再被追踪

在这里插入图片描述



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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/60014.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostMan调用gitlab接口,OAuth 2.0 身份认证 API ,copy完事~

获取token接口: https://gitlab.***.com/oauth/token ,接下来就可以调用其他功能的接口了 例:创建账户,将获取到的access_token放置在接口请求的token中 其他接口调用同上

ChatGPT辅助写论文:提升效率与创造力的利器

写作是人类最重要的交流方式之一,也是学术研究中不可或缺的环节。然而,写作并不是一件容易的事情,尤其是对于科研人员来说,他们需要花费大量的时间和精力来撰写高质量的论文,并且面临着各种各样的挑战,如语…

环境温度变化对DC电源模块稳定性的影响

环境温度变化对DC电源模块稳定性的影响 BOSHIDA DC电源模块是一种将交流电输入转化为稳定直流电输出的设备,其输出电压稳定性是非常重要的指标之一。在使用过程中,环境温度的变化可能会对其稳定性造成影响,因此需要对其进行充分的了解。 首先…

用Log4j 2记录日志

说明 maven工程中增加对Log4j 2的依赖 下面代码示例的maven工程中的pom.xml文件中需要增加对Log4j 2的依赖&#xff1a; <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.20.0&…

SQL92 SQL99 语法 Oracle 、SQL Server 、MySQL 多表连接、Natural 、USING

SQL92 VS SQL 99 语法 92语法 内连接 from table1&#xff0c; table2 where table1.col table2.col 外连接 放在 从表 左连接&#xff1a; from table1&#xff0c; table2 where table1.col table2.col() 右连接&#xff1a; from table1&#xff0c; table2 where table…

分布式协议与算法——拜占庭将军问题

拜占庭将军问题 背景&#xff1a;以战国时期为背景 战国时期&#xff0c;齐、楚、燕、韩、赵、魏、秦七雄并立&#xff0c;后来秦国的势力不断强大起来&#xff0c;成了东方六国的共同威胁。于是&#xff0c;这六个国家决定联合&#xff0c;全力抗秦&#xff0c;免得被秦国各个…

18. SpringBoot 如何在 POM 中引入本地 JAR 包

❤️ 个人主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;成功解决 BUG 合集 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; Spring Boot 是一种基于 Spring 框架的轻量级应用程序开发框架&#xff0c;它提供了快速开发应用程…

el-table那些事

el-table那些事 获取el-table所有勾选的行数据 用于记录工作和日常学习遇到的坑&#xff0c;需求。 vue3element-plusts 获取el-table所有勾选的行数据 1、需要先声明一个ref变量&#xff0c;并赋值给el-table 2、通过el-table提供的getSelectionRows()函数获取选中的"行…

uni-app:分页实现多选功能

效果 代码解析 一、标签-列表 <view class"item_all" v-for"(item, index) in info" :key"index"><view class"position parameter-info text-over" :class"{checked_parameter: item.checked}" :data-id"i…

gradio创建机器学习的好工具 基本使用和示例

1.gradio介绍 Gradio: 用Python构建机器学习网页APP Gradio是一个开源的Python库,用于构建演示机器学习或数据科学,以及web应用程序。 使用Gradio,您可以基于您的机器学习模型或数据科学工作流快速创建一个漂亮的用户界面,让用户可以”尝试“拖放他们自己的图像、粘贴文本…

HTML5(H5)的前生今世

目录 概述HTML5与其他HTML的区别CSS3与其他CSS版本的区别总结 概述 HTML5是一种用于构建和呈现网页的最新标准。它是HTML&#xff08;超文本标记语言&#xff09;的第五个版本&#xff0c;于2014年由万维网联盟&#xff08;W3C&#xff09;正式推出。HTML5的前身可以追溯到互联…

java实现钉钉群机器人@机器人获取信息后,机器人回复(机器人接收消息)

1.需求 鉴于需要使用钉钉群机器人回复&#xff0c;人们提出的问题&#xff0c;需要识别提出的问题中的关键词&#xff0c;后端进行处理实现对应的业务逻辑 2.实现方式 用户群机器人&#xff0c;附带提出的问题&#xff0c;后端接收消息后识别消息内容&#xff0c;读取到关键…

无人机机巢有哪些,无人机机场/机场的主要分类

随着无人机技术的飞速发展&#xff0c;无人机已经渗透到了物流、农业、救援、公共安全等多个领域。而为了使这些无人机能更加高效、灵活地运行&#xff0c;一个新的概念应运而生&#xff0c;那就是无人机机巢&#xff08;UAV Nest&#xff09;。复亚智能无人机机巢是一种供无人…

MIT 6.824 -- MapReduce -- 01

MIT 6.824 -- MapReduce -- 01 引言抽象和实现可扩展性可用性(容错性)一致性MapReduceMap函数和Reduce函数疑问 课程b站视频地址: MIT 6.824 Distributed Systems Spring 2020 分布式系统 推荐伴读读物: 极客时间 – 大数据经典论文解读DDIA – 数据密集型应用大数据相关论文…

RabbitMQ(一) - 基本结构、SpringBoot整合RabbitMQ、工作队列、发布订阅、直接、主题交换机模式

RabbitMQ结构 Publisher &#xff1a; 生产者 Queue: 存储消息的容器队列&#xff1b; Consumer:消费者 Connection&#xff1a;消费者与消息服务的TCP连接 Channel:信道&#xff0c;是TCP里面的虚拟连接。例如&#xff1a;电缆相当于TCP&#xff0c;信道是一条独立光纤束&…

【JavaEE】Spring Boot - 项目的创建和使用

【JavaEE】Spring Boot 开发要点总结&#xff08;1&#xff09; 文章目录 【JavaEE】Spring Boot 开发要点总结&#xff08;1&#xff09;1. Spring Boot 的优点2. Spring Boot 项目创建2.1 下载安装插件2.2 创建项目过程2.3 加载项目2.4 启动项目2.5 删除一些没用的文件 3. Sp…

python 连接oracle pandas以简化excel的编写和数据操作

python代码 Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: liukai 2810248865qq.com LastEditTime: 2023-07-06 22:12:56 FilePath: \PythonProject02\pandas以简化excel的编写和数据操作.py Description: 这是默认设置,请设置customMade, 打开koro…

大厂架构笔记 暂记 :Airbnb,可汗学院,来福车

Airbnb的架构 https://quastor.substack.com/p/airbnbs-architecturehttps://www.youtube.com/watch?vyGOtTd-l_3E我们将介绍每个体系结构&#xff0c;并讨论其优缺点以及迁移Airbnb原因。我们将介绍每个体系结构&#xff0c;并讨论其优缺点以及迁移Airbnb原因。我们将介绍每…

无涯教程-Perl - Subroutines(子例程)

定义子程序 Perl编程语言中 Subroutine子程序定义的一般形式如下: sub subroutine_name {body of the subroutine } 调用该Perl Subroutine的典型方式如下- subroutine_name( list of arguments ); 在Perl 5.0之前的版本中&#xff0c;调用 Subroutine的语法略有不同&…

过去几十年来,主要湖泊遭受了严重的水流失

一项新的研究表明&#xff0c;干旱和潮湿地区的损失是全球性的&#xff0c;可能对地球四分之一的人口产生重大影响。 美国宇航局的地表水和海洋地形任务&#xff08;如图所示&#xff09;在轨道上运行&#xff0c;将扫描湖泊和水库&#xff0c;为全球湖泊水储存估计提供新数据…