本系列全部文章由75888丶编写,非盗用他人文档,根据实际使用、自我理解、网上搜寻、视频技术文档等进行整理,可能存在类似,保证全部手打,非复制粘贴他人文档、代码。从文章的编写到代码,全部跟进行了测试,保证可用。
文章末尾提供了githup、gitee的源代码地址,如有疑问或问题,可在文章底部留言,我们共同讨论。如解决您的问题,欢迎留言点赞!最后感谢您的阅读。
SpringCloud、SpringBoot群聊:958923746
第一章:SpringCloud for Alibaba 环境准备、版本统一
第二章:SpringCloud for Alibaba 集成 Ncoas服务注册与发现、雪崩保护、集群配置等
第三章:SpringCloud for Alibaba 集成Ribbon负载均衡器
第四章:SpringCloud for Alibaba 集成LoadBalancer
第五章:SpringCloud for Alibaba 集成OpenFeign解决调用远程地址硬编码等问题
第六章:SpringCloud for Alibaba 集成Nacos配置中心
第七章:SpringCloud for Alibaba 集成Sentinel高可用防护组件
第八章:SpringCloud for Alibaba 集成Seata之分布式事务
第九章:SpringCloud for Alibaba 集成Seata解决分布式事务
第十章:SpringCloud for Alibaba 集成Gateway之网关配置、了解
第十一章:SpringCloud for Alibaba 集成Gateway之路由断言工厂
第十二章:SpringCloud for Alibaba 集成Gateway之过滤器、自定义全局过滤器
第十三章:SpringCloud for Alibaba 集成Gateway整合Sentinel
第十四章:SpringCloud for Alibaba 集成SkyWalking之特性介绍
第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建
第十六章:SpringCloud for Alibaba 集成SkyWalking之集群配置与集成logback等日志框架
agent // 微服务引用,数据上报/数据探针等
oap-libs // skywalking 服务端
webapp //前端展示页面,与服务端进行交互获取数据展示
logs //服务端与前端日志文件
config //服务端配置文件,包含持久化配置等
和业务绑定一起,负责收集各种监控数据
负责处理监控数据,比如接收skywalking agent的监控数据,并存储在数据库中;接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。通常以集群的方式存在
前端界面,数据展示
存储监控数据的数据库,比如mysql、elasticsearch等
下载地址:https://skywalking.apache.org/downloads/,本次下载的是:skywalking-apm-es7-8.5.0
webApp:前端UI端口:8080
oap后端系统暴漏端口:11800、12800。分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口在config/application.yml
Skywalking跨多个微服务跟踪,只需要每个微服务启动添加javaagent参数
# Linux中使用jar包项目部署:启动,添加agent参数,skywalking-oap地址,服务名
java
-javaagent:agent/skywalking-agent.jar
-Dskywalking.agent.service_name=config-business
-Dskywalking.collector.backend_service=10.0.12.4:11800
-jar jar/$server_name.jar
# idea中测试
-javaagent:C:\wangshenghui\skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=order-seata-skywalking3-service
-Dskywalking.collector.backend_service=127.0.0.1:11800
springcloud版本:
<properties>
<java.version>1.8java.version>
<spring.boot.version>2.3.12.RELEASEspring.boot.version>
<spring.cloud.version>Hoxton.SR12spring.cloud.version>
<spring.cloud.alibaba.version>2.2.7.RELEASEspring.cloud.alibaba.version>
<mybatis-plus.version>3.2.0mybatis-plus.version>
properties>
# 查看启动路径是否可以正常启动Skywalking服务端服务
# 日志路径:skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\logs
# 前端与服务端启动路径:skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\bin
#需要将
# apache-skywalking-apm-bin-es7\agent\optional-plugins 中的JAR包 移动到
# apache-skywalking-apm-bin-es7\agent\plugins 路径中。
# 具体移动以下jar
# 1、带有apm-spring-cloud-gateway前缀的全部jar
# 2、带有apm-spring-webflux前缀的全部jar
# 3、复制到apache-skywalking-apm-bin-es7\agent\plugins路径中,重启全部项目与skywalking服务端
服务端无法启动成功,会出现找不到类的问题
# org.apache.skywalking.apm.plugin.spring.cloud.gateway.v21x.define.EnhanceObjectCache cannot be cast to org.apache.skywalking.apm.plugin.spring.cloud.gateway.v3x.define.EnhanceObjectCache
问题:java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc:mysql://localhost:3306/skywalking
解决:缺少mysql的驱动,需要将maven中的mysql驱动包放到skywalking的oap-libs文件夹中,重启解决
如果加入了jar还是无法启动,报错,那就重启一下数据库。解决了。
默认skywalking记录各个服务接口的记录,无法记录服务接口内部方法的返回值与请求值的记录,使用自定义链路追踪可以更加透明化的查看各个方法的调用情况,也方便进行排查问题
org.apache.skywalking
apm-toolkit-trace
8.5.0
// 注意,要加到业务方法的实现上。
@Override
@Trace
// 仅查看返回值设置
// @Tag(key = "selectOrder",value = "returnedObj") // key = 方法名,value=返回值
// 查看请求参数与返回值设置
@Tags({@Tag(key = "param",value = "arg[0]"), //key = "param"查看参数,value = "arg[0]"查看请求值,0=第一个参数
@Tag(key = "selectOrder",value = "returnedObj")}) // key = 方法名,value= "returnedObj"查看返回值
public Order selectOrder(Integer id) {
return orderDao.selectById(id);
}
随着业务不断扩大,微服务链路越来越长,各个服务之间需要进行性能监控,保证服务响应性能。使用性能剖析可以快速定位问题,调用链、调用损耗时间等
githup地址:https://github.com/wangsh6379/SpringCloud-for-Alibaba
gitee地址:https://gitee.com/75888/spring-cloud-for-alibaba