skywalking全链路追踪
文章目录
- 一、介绍
- 二、全链路追踪
- 1. 测试1 - 正常请求
- 2. 测试2 - 异常请求
- 三、过滤非业务请求链路
- 1. 链路忽略插件
- 2. 配置
- 3. 测试
一、介绍
在上一篇文章skywalking安装教程中我们介绍了skywalking的作用以及如何将其集成到我们的微服务项目中。本篇文章我们介绍在微服务架构中,如何使用skywalking对一次客户端请求进行全链路追踪。
skywalking的介绍分多篇文章:
-
- 微服务项目集成skywalking
-
- 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,创建评论仓库 在部署博客之前ÿ…...
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…...
电力巡检无人机助力迎峰度夏,保障夏季电力供应
夏季是电力需求量较高的时期,随着高温天气的来临,风扇、空调和冰箱等电器的使用量也大大增加,从而迎来夏季用电高峰期,电网用电负荷不断攀升。为了保障夏季电网供电稳定,供电公司会加强对电力设施设备的巡检࿰…...
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)是一种关键的策略,旨在提高网站在搜索引擎结果页面上的排名,从而增加网站的曝光率和有针对…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
