当前位置: 首页 > 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相关的非业务接口已不再被追踪

在这里插入图片描述



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

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

相关文章:

skywalking全链路追踪

文章目录 一、介绍二、全链路追踪1. 测试1 - 正常请求2. 测试2 - 异常请求 三、过滤非业务请求链路1. 链路忽略插件2. 配置3. 测试 一、介绍 在上一篇文章skywalking安装教程中我们介绍了skywalking的作用以及如何将其集成到我们的微服务项目中。本篇文章我们介绍在微服务架构…...

Nacos配置中心设置Mongodb

目录 1.common模块导入nacos config依赖 2.common模块新建bootstrap.yaml 3.在自己的模块导入common模块依赖 4.打开nacos新建配置,发布 5.运行服务并测试 效果:在部署完成后,其他人可以自动连接到你本地mongoDB数据库,无需再…...

【Spring Boot】请求参数传json对象,后端采用(map)CRUD案例(101)

请求参数传json对象,后端采用(map)接收的前提条件: 1.Spring Boot 的Controller接受参数采用:RequestBody 2.需要一个Json工具类,将json数据转成Map; 工具类:Json转Map import com…...

微软开测“Moment4”启动包:Win11 23H2要来了

近日, 有用户在Win11最新的7月累积更新中发现,更新文件中已经开始出现了对“Moment4”的引用。 具体来说,在7月累积更新中,微软加入了“Microsoft-Windows-UpdateTargeting-ClientOS-SV2Moment4-EKB”“Microsoft-Windows-23H2Ena…...

SpringCloud《Eureka、Ribbon、Feign、Hystrix、Zuul》作用简单介绍

概述 SpringCloud是一个全家桶,包含多个组件。 本文主要介绍几个重要组件,也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。 一、业务场景介绍 业务流程,支付订单功能 订单服务改变为已支付订单服务调用库存服务,扣减…...

运维项目—K8S命令

文章目录 一、基本操作1、命名空间kubectl get ns 获取命名空间kubectl get ns default -o yaml 以yaml的格式查看某个nskubectl describe ns hoc-prod 查看某个ns详情1、命名空间与Podkubectl get pods --all-namespaces查看所有命名空间下的所有podkubectl get pod -A查看所有…...

java框架整合Springmvc+···+maven

框架整合: Springmvc Mybatis Shiro(权限) REST(服务) WebService(服务) JMS(消息) Lucene(搜搜引擎) Quartz(定时调度) Bootstrap Html5(支持PC、IOS、Android) 系统模块: 1. 用户管理: 用户信…...

答辩PPT怎么做?在线PPT软件哪个好?

又是一年毕业季,相信很多毕业生都开始准备论文答辩,有些同学正在为论文奋夜苦战,有些则是为论文答辩PPT而烦恼。做PPT要用什么软件好呢?这篇文章就来告诉你。 当下有很多PPT制作工具,其中自然也包括Office三件套。这些…...

Astro + Vercel 快速搭建自己的博客网站

Astro 和 Vercel 彼此相得益彰,前者提供出色的开发者体验,用于构建现代静态站点,而后者负责部署和托管代码。 两者结合我们就可以轻轻松松零成本搭建自己的博客网站。查看示例。 步骤 1,创建评论仓库 在部署博客之前&#xff…...

TensorFlow

什么是 TensorFlow TensorFlow是一个开源的机器学习框架,由Google于2015年推出。它被设计用来构建深度神经网络和其他机器学习模型,从而可以实现图像识别、语音识别、自然语言处理、推荐系统、搜索引擎、预测和控制等应用。TensorFlow是一个基于数据流图…...

【iOS RunLoop】

文章目录 前言-什么是RunLoop?默认情况下主线程的RunLoop原理 1. RunLoop对象RunLoop对象的获取 CFRunLoopRef源码部分(引入线程相关) 2. RunLoop和线程3. RunLoop相关的类RunLoop相关类的实现CFRunLoopModeRef五种运行模式CommonModes CFRun…...

阿里云平台注册及基础使用

首先进入阿里云官网: 阿里云-计算,为了无法计算的价值 点击右上角“登录/注册”,如果没有阿里云账号则需要注册。 注册界面: 注册完成后需要开通物联网平台公共实例: 注册成功后的登录: 同样点击右上角的…...

Mr. Cappuccino的第58杯咖啡——MacOS配置Maven和Java环境

MacOS配置Maven和Java环境 查看Mac使用的是哪个shell下载并准备Maven下载Maven配置前准备 下载并安装JDK下载JDK安装JDK 配置Maven和Java环境添加配置加载配置 验证环境 查看Mac使用的是哪个shell echo $SHELL如果使用的是bash,则使用以下命令 open ~/.bash_profi…...

linux Ubuntu 更新镜像源、安装sudo、nvtop

1.更换镜像源 vi ~/.pip/pip.conf在打开的文件中输入: pip.conf [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple按下:wq保存并退出。 2.安装nvtop 如果输入指令apt install nvtop报错: E: Unable to locate package nvtop 需要更新一下apt&a…...

LUN映射出错导致写操作不互斥的服务器数据恢复案例

服务器数据恢复环境: 某公司的光纤SAN存储系统,6块硬盘组建一组RAID6,划分若干LUN,MAP到不同的SOLARIS操作系统服务器上。 服务器故障&分析: 由于业务增长需要新增应用,工作人员增加了一台IBM服务器&am…...

Android 仿京东头部滚动头像动态变化

UI出了一个新需求,仿京东头部滚动,头像需要动态变化,先来看下京东的是什么效果 我们知道什么效果以后,接下来就想想怎么实现吧,Android常规吸顶折叠布局是由CoordinatorLayoutAppBarLayoutCollapsingToolbarLayout组成…...

高频交易学习——上期SimNow开通

property 是 Python 中的一个装饰器(decorator),用于定义类的属性。它可以将方法转换为相应的特性(property),从而实现属性的访问和修改控制。 property 装饰器的作用是将一个方法变成一个只读属性&#x…...

电力巡检无人机助力迎峰度夏,保障夏季电力供应

夏季是电力需求量较高的时期,随着高温天气的来临,风扇、空调和冰箱等电器的使用量也大大增加,从而迎来夏季用电高峰期,电网用电负荷不断攀升。为了保障夏季电网供电稳定,供电公司会加强对电力设施设备的巡检&#xff0…...

UOS环境python3.7及pyqt5安装

解决方案尝试 先安装pyqt5依赖项: 1、更新python3.7 sudo add-apt-repository ppadeadsnakes/ppa sudo apt-get update sudo apt-get upgrade sudo apt-get autoremove sudo apt-get install python3.7 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/…...

SEO优化:提升网站排名与流量的关键策略

导言: 在如今竞争激烈的互联网时代,网站的排名和流量对于企业的在线可见性和业务发展至关重要。搜索引擎优化(SEO)是一种关键的策略,旨在提高网站在搜索引擎结果页面上的排名,从而增加网站的曝光率和有针对…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...