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)是一种关键的策略,旨在提高网站在搜索引擎结果页面上的排名,从而增加网站的曝光率和有针对…...
前端性能监控指标体系
前端性能监控指标体系:构建高效用户体验的关键 在当今快节奏的互联网时代,用户体验已成为决定产品成败的关键因素之一。前端性能直接影响用户留存率、转化率以及品牌形象,因此建立一套科学的前端性能监控指标体系至关重要。通过实时监控和分…...
PDE (Processing D Editor) 三维场景编辑器 · 软件白皮书 · 基于 v..德
MySQL 中的 count 三兄弟:效率大比拼! 一、快速结论(先看结论再看分析) 方式 作用 效率 一句话总结 count(*) 统计所有行数 最高 我是专业的!我为统计而生 count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄…...
阅文偶得笔录
物有本末,事有始终,知所先后,则近道矣。风月 尘世三千繁华,君且行,我自与酒拜桃花,任尔金玉琳琅良驹成双,不敌我眉间红逗朱砂。–<寒门崛起>楼上看山,城头看雪,灯前…...
SitemapGenerator适配器详解:6种存储方案对比与选择
SitemapGenerator适配器详解:6种存储方案对比与选择 【免费下载链接】sitemap_generator SitemapGenerator is a framework-agnostic XML Sitemap generator written in Ruby with automatic Rails integration. It supports Video, News, Image, Mobile, PageMap a…...
Qwen3-ASR-1.7B开源大模型教程:PyTorch 2.5.0 + CUDA 12.4环境配置
Qwen3-ASR-1.7B开源大模型教程:PyTorch 2.5.0 CUDA 12.4环境配置 1. 引言:为什么选择Qwen3-ASR-1.7B? 如果你正在寻找一个开箱即用、功能强大的语音识别解决方案,Qwen3-ASR-1.7B绝对值得你花时间了解。这个由阿里通义千问团队推…...
车辆三自由度运动学模型; Carsim_Simulink联合仿真; 无人驾驶车辆模型预测控制(2.1);
车辆三自由度运动学模型; Carsim/Simulink联合仿真; 无人驾驶车辆模型预测控制(2.1); 包括Carsim的设置、控制信号数据、PPT文件、cpar件、车辆运动分析图(适用于word两栏布局);Simu…...
.NET 新特性概览与相关文章索引檀
从 UI 工程师到 AI 应用架构者 13 年前,我的工作是让按钮在 IE6 上对齐; 13 年后,我用 fetch-event-source 订阅大模型的“思维流”,用 OCR 解锁图片中的文字——前端,正在成为 AI 产品的第一道体验防线。 最近&#x…...
ORA-06521: PL/SQL映射函数错误,权威解析Oracle报错故障修复与远程处理方案
故障修复核心方案:首先检查PL/SQL代码中的映射函数调用,确保参数类型匹配,避免类型转换错误。执行以下SQL诊断:SELECT * FROM user_errors WHERE name 你的包名; 清理后重编译:ALTER PACKAGE your_package COMPILE; 如…...
数据摄取构建模块简介(预览版)(二)趴
Qt是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...
SpringCloud进阶--Seata与分布式事务庇
起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧ÿ…...
