场景
链路追踪
随着微服务分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如分布式服务、分布式数据库、分布式缓存等,使得后台服务构成了一种复杂的分布式网络。在服务能力提升的同时,复杂的网络结构也使问题定位更加困难。在一个请求在经过诸多服务过程中,出现了某一个调用失败的情况,查询具体的异常由哪一个服务引起的就变得十分抓狂,问题定位和处理效率是也会非常低。
分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
在上面搭建起来微服务的架构之后,怎样实现链路追踪。
skywalking
SkyWalking是一个可观测性分析平台(Observability Analysis Platform 简称OAP)和应用性能管理系统(Application Performance Management 简称 APM)。提供分布式链路追踪,服务网格(Service Mesh)遥测分析,度量(Metric)聚合和可视化一体化解决方案。
注:
关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
实现
skywalking下载地址
http://skywalking.apache.org/downloads/
选择apm下载
这里是Windows版本,点击Distribution下的合适版本
这里点击8.4.0下的tar包下载,下载后解压找到bin目录下,在Windows下双击startup.bat直接启动
会启动两个项目,一个是收集器,一个是web项目
打开浏览器访问
http://localhost:8080/
可以看到启动成功
然后使用IDEA打开微服务项目,在每个服务的启动类中配置vm
这里以网关为例,在VM options下面添加如下内容
-javaagent:D:\Software\apache-skywalking-apm-es7-8.4.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar-Dskywalking.agent.service_name=ruoyi-gateway-Dskywalking.collector.backend_service=localhost:11800注意:
javaagent 是配置skywalking-agent.jar的地址
service_name 是配置需要监控的服务名
backend_service 是收集器服务的地址
这里在网关服务下进行了vm配置,其他需要做链路追踪的服务下的启动类也要配置。
然后启动各个服务的启动类
就可以在拓扑图中看到链路追踪了,然后调用下某个接口,那么这个接口所需的服务就会在追踪中被显示