链路追踪主要是查看微服务各服务的健康状态以及请求响应时间,哪个服务停了,或者响应时间慢了,辅助监控作用。
目前常见的几款开源链路追踪产品:cat(大众点评),zipkin(Twitter),pingpoint(韩国naver),skywalking(吴晟)。
cat接入需要添加依赖及改动代码,zipkin需要添加依赖,pingpoint和skywalking使用java agent技术,0侵入。无需改动代码。目前用的比较多的应该是zipkin和skywalking,本文讨论如何接入skywalking,看官网Downloads | Apache SkyWalking
2022.9.2更新了版本9.2.0说明项目一直在维护的。一开始呢,我使用了9.2.0版本,但是发现启动skywalking之后,web页面一片空白,后面我改成使用他们的v8.8.1版本可以了。
skywalking系统架构(简单说就是agent负责收集数据给oap,oap存储数据到es,h2等存储系统,另外oap还负责分析数据,提供接口给web系统)
整个架构,分成上、下、左、右四部分:
上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。默认采用H2,skywalking自带了H2无需安装,生产大数据量中很多是采用ES,需要另外安装ES。
左部分 SkyWalking UI :负责提供控台,查看链路等等。
1.在服务器新建文件夹/usr/local/skywalking
2.将v8.8.1下载到该文件夹
wget https://archive.apache.org/dist/skywalking/8.8.1/apache-skywalking-apm-8.8.1.tar.gz
3.下载后解压 tar -zxf apache-skywalking-apm-8.8.1.tar.gz
4.下载代理 wget https://archive.apache.org/dist/skywalking/java-agent/8.8.0/apache-skywalking-java-agent-8.8.0.tgz
5.解压 tar -zxf apache-skywalking-java-agent-8.8.0.tgz
6.微服务启动脚本修改
- #!/bin/bash
-
- # SkyWalking Agent 配置
- export SW_AGENT_NAME=MyGateWay # 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
- export SW_AGENT_COLLECTOR_BACKEND_SERVICES=118.118.183.73:11800 # 配置 Collector 地址。
- export SW_AGENT_SPAN_LIMIT=2000 # 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。
- export JAVA_AGENT=-javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar # SkyWalking Agent jar 地址。
-
-
-
- echo start MyGateWay
- MyGateWayJarname='MyGateWay-1.0.0'
- pid=`ps aux | grep $MyGateWayJarname | grep -v grep | awk '{print $2}'`
- echo $pid
- kill -9 $pid
- nohup java -jar $JAVA_AGENT -jar $MyGateWayJarname.jar >MyGateWayRun.log &
- echo MyGateWay started successfully
7.修改skywalking web监控页面的默认端口
/usr/local/skywalking/apache-skywalking-apm-bin/webapp/webapp.yml
改成8018
- server:
- port: 8018
-
- spring:
- cloud:
- gateway:
- routes:
- - id: oap-route
- uri: lb://oap-service
- predicates:
- - Path=/graphql/**
- discovery:
- client:
- simple:
- instances:
- oap-service:
- - uri: http://127.0.0.1:12800
我这里是在网关mygateway启动时加入了agent,其他的微服务,注册中心,配置中心都可以在启动时设skywalking的agent。这样在访问了微服务后就可以追踪了。比如我将skywalking部署在这个ip的这个端口。那么访问地址就是:
拓扑图里面看各个微服务的健康情况,如果出现红色就是有问题的
追踪里面看微服务调用耗时情况,比如我们的一个积分查询微服务调用链耗时情况
初步搭建,应该很有很多问题,需要继续研究。
参考:
https://blog.csdn.net/u012394095/article/details/79700200
springcloud - 史上最全SpringCloud整合skywalking_个人文章 - SegmentFault 思否