Spring Cloud Alibaba-SkyWalking链路追踪

一、链路追踪介绍

对于一个大型的几十个,几百个微服务构成的微服务架构系统,通常会遇到下面的一系列问题。

  • 如何串联整个调用链路,快速定位问题?

  • 如何澄清各个微服务之间的依赖关系?

  • 如何进行各个微服务接口的性能分析?

  • 如何追踪各个业务流程的调用处理顺序?

二、Skywalking介绍

        Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。

         Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

三、功能和技术方案对比

  • Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。

  • Pinpoint一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多

  • Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。

  • CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。

四、Skywalking架构

Skywalking agent和业务端绑定在一起,负责收集各种监控数据

Skywalking oapservice是负责处理监控数据,接受agent的数据并存储在数据库中,接受来自UI的请求,查询监控数据。

Skywalking UI提供给用户,展现各种监控数据和告警。

五、Skywalking目录结构

 

  六、Skywalking的使用

1.Skywaking的启动

Skywaking安装完成后进入bin目录下

2.IDEA集成使用agent

        开发环境IDEA中使用探针配置即可集成使用agent,我们使用探针配置为3个项目分别配置agent:

(1)

(2)

 

# 客户端需要的jar所在位置
-javaagent:D:/softInstall/apache-skywalking-apm-bin/agent/skywalking-agent.jar
# 客户端服务名称
-Dskywalking.agent.service_name=springcloud-order
# skywalking地址
-Dskywalking.collector.backend_service=localhost:11800

(3)注意:路径有一部分需要变更为自己存放文件的位置*

(4)

此时启动IDEA,并访问 http://localhost:8080/效果如下:

3.skywalking收集网关gateway的信息

默认skywalking不会收集gateway微服务的信息,如何让他支持gateway微服务。

(1)

在agent目录下找到optional-plugins

 (2)找到gateway的jar包

(3)返回agent目录下并进入plugins目录下将gateway的jar包粘贴进去

 4.skywalking持久化

        我们发现如果skywalking服务重启的话链路日志就会消失,因为skywalking默认在内存中保存链路日志等信息,我们可以通过持久化存储将相关信息存储在mysql或es等存储引擎中

(1)进入config目录下找到application.yml文件

 

(2)修改application.yml文件

a.

b.

(3)创建名为swtest的数据库(名字可以自己定义但是一定要与application.yml中的一致)

(4)重启skywalking服务

完成!

七、介绍skywalking

1.Rocketbot-仪表盘

作用:查看被监控服务的运行状态。

监控面板:

 (1)APM

APM: 应用性能管理,通过各种探针采集数据,收集关键指标,同时搭配数据呈现以实现对应用程序性能管理和故障管理的系统化解决方案。

Global全局维度  

板块描述:

services load :服务每分钟请求数s1ow services:慢响应服务,单位ms
Un-Health services (Apdex) :Apdex性能指标,1为满分。
show Endpoints:慢响应端点,单面ms
G1obal Response Latency:百分比响应延时,不同百分比的延时时间,单位ms
G1obal Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度
底部栏:展示数据的时间区间,点击可以调整

Service服务维度

属性描述:

service Apdex(数字):当前服务的评分
service Apdex(折线图):不同时间的Apdex评分
service Avg Response Times:平均响应延时,单位ms
G1obal Response Time Percentile:百分比响应延时
successfu1 Rate(数字):请求成功率
successfu1 Rate(折线图):不同时间的请求成功率
servce Load(数字):每分钟请求数
servce Load(折线图):不同时间的每分钟请求数
servce Instances Load:每个服务实例的每分钟请求数
show service Instance:每个服务实例的最大延时
service Instance successfu1 Rate:每个服务实例的请求成功率

Instance实例维度

 属性描述:

service Instance Load:当前实例的每分钟请求数
service Instance successfu1 Rate:当前实例的请求成功率
service Instance Latency:当前实例的响应延时
vM CPu: jvm占用CPU的百分比
JVM Memory : VM内存占用大小,单位m
JVM GC Time : VM垃圾回收时间,包含YGC和oGC
JVM Gc count: JVM垃圾回收次数,包含YGC和oGC
JVM Thread count (ava service) : VM创建线程数量
CLR xx:类似VM虚拟机(可以直接理解成虚拟机)

Endpoint端点(API)维度

属性描述:

Endpoint Load in current service:每个端点的每分钟请求数
s1ow Endpoints in current service:每个端点的最慢请求时间,单位ms
successful Rate in current service:每个端点的请求成功率
Endpoint Load:当前端点每个时间段的请求数据
Endpoint Avg Response Time:当前端点每个时间段的请求行响应时间
Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比
Endpoint successfu1 Rate:当前端点每个时间段的请求成功率

(2)DataSource展示栏

 属性描述:

当前数据库:选择查看数据库指标
Database Avg Response Time:当前数据库事件平均响应时间,单位ms
Database Access successfu7 Rate:当前数据库访问成功率
Database Traffic:CPM,当前数据库每分钟请求数
Database Access Latency Percentile:数据库不同比例的响应时间,单位ms
s1ow statements :前N个慢查询,单位ms
A17 Database Loads:所有数据库中CPM排名
Un-Health Databases:所有数据库健康排名,请求成功率排名

2.拓扑图

 3.追踪

属性描述:

左侧:api接口列表,红色-异常请求,蓝色-正常请求
右侧:api追踪列表,api请求连接各端点的先后顺序和时间 

 操作详情:可以看到底层执行语句

 4.性能剖析

创建性能剖析采集清单:

 新建性能剖析属性描述:

服务:需要分析的服务
端点:链路监控中端点的名称,可以再链路追踪中查看端点名称监控时间:采集数据的开始时间
监控持续时间:监控采集多长时间起始监控时间:多少秒后进行采集监控间隔:多少秒采集一次
最大采集数:最大采集多少样本

 

 

 

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Cloud Alibaba中,可以使用SkyWalking进行链路追踪SkyWalking是一个开源的APM(应用程序性能管理)系统,支持多语言和多框架,包括Java、.NET Core、Node.js等。下面简单介绍如何使用SkyWalking进行链路追踪: 1. 添加依赖 在Spring Boot项目中,需要添加以下依赖: ```xml <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>${skywalking.version}</version> </dependency> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>${skywalking.version}</version> <scope>runtime</scope> </dependency> ``` 其中${skywalking.version}可以根据需要自行指定。 2. 配置SkyWalkingSpring Boot项目中,可以通过application.properties或application.yml配置文件进行配置。以下是一个示例: ```yml # SkyWalking配置 skywalking: # SkyWalking OAP地址 address: 127.0.0.1:11800 # 应用名称 application-name: my-application ``` 其中,address指定了SkyWalking OAP的地址,application-name指定了应用的名称。 3. 启用SkyWalkingSpring Boot项目中,可以通过注解@EnableSkyWalking来启用SkyWalking。例如: ```java @SpringBootApplication @EnableSkyWalking public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 4. 查看链路追踪数据 启动应用后,可以在SkyWalking控制台中查看链路追踪数据。打开浏览器并输入http://localhost:8080进入SkyWalking控制台,查看应用的链路追踪数据。 以上是使用SkyWalking进行链路追踪的基本步骤,具体使用过程中可以根据需要进行配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值