第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建

声明

本系列全部文章由75888丶编写,非盗用他人文档,根据实际使用、自我理解、网上搜寻、视频技术文档等进行整理,可能存在类似,保证全部手打,非复制粘贴他人文档、代码。从文章的编写到代码,全部跟进行了测试,保证可用。
文章末尾提供了githup、gitee的源代码地址,如有疑问或问题,可在文章底部留言,我们共同讨论。如解决您的问题,欢迎留言点赞!最后感谢您的阅读。
SpringCloud、SpringBoot群聊:958923746

SpringCloud for Alibaba 全套文章整理

第一章: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等日志框架

SkyWalking环境搭建

模块区分

  • springboot程序:skywalking agent【微服务中】
  • skywalking oapservice集群【部署搭建】
  • skywalking webapp UI服务【部署搭建】
  • 数据库【需持久化】

Skywalking目录结构

agent 		// 微服务引用,数据上报/数据探针等
oap-libs	// skywalking 服务端
webapp		//前端展示页面,与服务端进行交互获取数据展示
logs		//服务端与前端日志文件
config		//服务端配置文件,包含持久化配置等

skywalking agent

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

skywalking oapservice

负责处理监控数据,比如接收skywalking agent的监控数据,并存储在数据库中;接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。通常以集群的方式存在

skywalking webapp

前端界面,数据展示

数据库

存储监控数据的数据库,比如mysql、elasticsearch等

下载地址:https://skywalking.apache.org/downloads/,本次下载的是:skywalking-apm-es7-8.5.0

目录结构

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第1张图片

项目端口

webApp:前端UI端口:8080

oap后端系统暴漏端口:11800、12800。分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口在config/application.yml

微服务接入Skywalking

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

Linux环境下集成skywalking4第二种方式

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第2张图片

Skywalking服务指标

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第3张图片

IDEA开发环境集成skywalking

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第4张图片

问题

使用gateway与sykwalking无法看到gateway的服务于请求URL,这里版本:skywalking-apm-es7-8.5.0

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

复制JAR

#需要将
# 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服务端

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第5张图片

解决后的截图

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第6张图片

版本不匹配会出现的问题

服务端无法启动成功,会出现找不到类的问题

# 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

Skywalking持久化

连接mysql失败

问题:java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc:mysql://localhost:3306/skywalking

解决:缺少mysql的驱动,需要将maven中的mysql驱动包放到skywalking的oap-libs文件夹中,重启解决

启动报错org.apache.skywalking.oap.server.library.module.ModuleStartException: Specified key was too long; max key length is 1000 bytes

如果加入了jar还是无法启动,报错,那就重启一下数据库。解决了。

自定义链路追踪

默认skywalking记录各个服务接口的记录,无法记录服务接口内部方法的返回值与请求值的记录,使用自定义链路追踪可以更加透明化的查看各个方法的调用情况,也方便进行排查问题

pom

 
 
     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);
    }

Skywalking性能剖析

为什么要用性能剖析?

随着业务不断扩大,微服务链路越来越长,各个服务之间需要进行性能监控,保证服务响应性能。使用性能剖析可以快速定位问题,调用链、调用损耗时间等

如何进行性能剖析?

第十五章:SpringCloud for Alibaba 集成SkyWalking之环境搭建_第7张图片

源码提供(照顾某些git很卡的同学,提供gitee地址)

githup地址:https://github.com/wangsh6379/SpringCloud-for-Alibaba
gitee地址:https://gitee.com/75888/spring-cloud-for-alibaba

你可能感兴趣的:(SpringCloud,for,Alibaba,全套,spring,cloud,java,skywalking,微服务,分布式)