APM学习之—skywalking
⽬前⼊职差不多⼀个⽉了,⼀个⽉来⼀直都在学习微服务⽅⾯的知识,前段时间我们项⽬组的技术栈都已经确定了下来,所以这段时间⾃⼰也⼀直在学习相关⽅⾯的知识。今天想学习下我们项⽬采⽤的APM⼯具——skywalking,关于它的相关信息可以去看下官⽹,我们还是从使⽤⽅⾯着⼿。
⼀、sk yw a lk ing组成
为什么是skywalking?skywalking是可观察性分析平台和应⽤程序性能管理系统。提供分布式跟踪,服务⽹格遥测分析,度量聚合和可视化等多合⼀解决⽅案——来⾃官⽹的介绍。
⾸先到skywalking官⽹下载稳定版本,然后解压。我们先通过项⽬结构了解⼀下,skywalking的组成。
skywalking⽬录结构.png
skywalking我个⼈理解可以分为3个部分:1、UI部分(webappService),即webapp⽂件夹,主要负责数据展⽰;2、数据收集部分(oapService),这部分涉及到的是config和oap-lib,⼀个是配置相关,⼀个是oap需要依赖的jar包;3、代理模块,即agent⽂件夹。当然把1和2合起来看成⼀个模块也没问题。
bin⽬录下是skywalking启动的脚本,其实根据脚本也可以发现,其实skywalking启动脚本,也不过是分别启动oapService和webappService。
⼆、启动sk yw a lk ing
在启动项⽬之前我们需要修改下数据收集的配置,因为skywalking默认使⽤的是H2,根据⾃⼰的需要改成elasticsearch或者Mysql、TiDB。但是使⽤elasticsearch时不建议使⽤较⾼版本的⽐如7.5。根据官⽅的⽂档给出说明是,elasticsearch版本只要⾼于6.3.2或以上,最好是7.0.0或以上(skywalking版本为6.5的前提下)。因为我⾃⼰在尝试使⽤elasticsearch7.5的过程中出现了不少的问题,但是官⽅并没有给出相关的解释,折腾了半天只能更换版本。因为⾃⼰对elasticsearch也不是特别的了解,出现的问题⾃⼰也解决不了,所以最终还是⽼⽼实实使⽤6.4.0版本。
PS:elasticsearch版本更新是在太快了......
进⼊到config⽬录下修改l,因为使⽤的是单机版本,因此之修改存储部分的配置即可,如果想了解更多配置,建议看下官⽅⽂档
。我⾃⼰只是将H2改成了elasticsearch,如下:
,然后查询数据库。我们在看下⽹络拓扑图,如下:
⽹络拓扑图-1.png
刚开始我有点吃惊,为什么只有user-service和postgresql,gateway-service呢??按理来讲请求是先到达的gateway-service,为什么整个⽹络拓扑中没有它呢然后仔细看下skywalking⽀持的版本列表发现skywalking只⽀持Spring Cloud Gateway RELEASE,并是Optional,这意味着需将optional-plugins⽬录下的内容复制到plugins⽬录下,另外我使⽤的Gateway版本是2.2.1.RELEASE。问题到了,我先将agent-gateway⽬录下optional-plugins下jar复制到plugins下。然后重新启动gateway-service,重新测试⼀下,虽然仪表盘有了gateway-service,但是拓扑图⾥⾯依然没有.....看来还是要修改下版本号,那就修改下gateway-service的版本为2.1.1.RELEASE,然后重新打包,但是可惜启动失败....由于时间原因我就不再去追查这个问题了。包括我看了最近的skywalking6.6.0版本,依然是只⽀持Spring Cloud Gateway RELEASE,所以在选择版本的时候⼀定注意⼀下。
既然修改gateway-service版本有问题,那么我决定重新在创建⼀个服务,并使⽤Fegin来进⾏服务间的调⽤,创建order-service服务,同理也创建⼀个与其对应的agent,修改其配置⽂件。在user-service中引⼊Feign依赖,通过user-service调⽤order-service,我们调
⽤localhost:8090/user/order/userId,这个接⼝是先调⽤通过user-service,其通过Feign调⽤order-ser
vice。修改之后我们重新启动相关的服务,并调⽤上⾯的接⼝,之后我们来看下拓扑图:
⽹络拓扑图-2.png
根据这个图可以看到两个服务之间已经建⽴起了连接,如果Gateway版本较低应该也是出现的,⽽且左边也给出了服务的类
型SpringMvc、Postgresql。
接着我们看下追踪⾯板信息,如下图:
追踪图.png
通过上⾯这个图可以明显看到调⽤服务接⼝的整个⾛向,以及每个跨度的相关信息,⽐如执⾏时间、
请求路径、包括sql语句等等。springcloud难学吗
四、总结
相⽐之前使⽤过的Zipkin,skywalking的功能更全⾯⼀些,另外还可以监控JVM的⼀些信息,堆、栈、垃圾回收等等,还有数据库的⼀些信息,⽐如某个应⽤接⼝执⾏的sql,响应时间等等。就skywalking的使⽤来讲好像没什么特别难的地⽅,跟着⽂档基本没问题,当然我觉得还是要多动⼿,这样才能发现问题。感兴趣的可以尝试下将其他的中间件引⼊到skywalking中,⽐如Redis、RocketMQ等等。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。