记录一次为了排查bug,而在本地搭建SkyWalking环境的过程。
背景
微服务作为当前系统架构的主流选型,虽然可以应对复杂的业务场景,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,对于一些核心的业务流程,其请求链路会涉及到多个业务服务。
在这种模式下当请求发生故障时,或者进行优化时,需要分析链路性能,追踪调用链路,排查和解决链路故障。
SkyWalking就是这样一款分布式系统的监控工具。
SkyWalking的工作流程:服务通过探针的方式接入数据采集的功能,之后请求链路的相关处理行为会上报到OAP服务中,进行数据的聚合管理和分析,并存储在持久层,然后可以通过UI界面进行可视化呈现。
环境搭建
官网下载地址:https://skywalking.apache.org/downloads/
先在官网下载SkyWalking Apm和Java Agent,分别在Distribution下选择9.0.0版本和8.16.0版本。
- 这里不选择其他版本,是因为不同版本的包结构是不一样的,环境搭建过程也是不一样的
- skywalking在之前的旧版本中,apm与agent是在一个包中的,在9.0的版本中是需要分开下载的
一、配置存储方式
默认情况下,使用的数据源是h2,选择将h2改为mysql
-
修改amp下的配置文件:
config/application.yml
# 将selector由h2改为mysql storage: selector: ${SW_STORAGE:mysql} # 修改mysql连接信息:地址端口/数据库、账号、密码 mysql: properties: jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"} dataSource.user: ${SW_DATA_SOURCE_USER:username} dataSource.password: ${SW_DATA_SOURCE_PASSWORD:password}
-
在maven仓库下载一个mysql的jar包,放在oap-libs目录下
- 这里的jar包版本选择需要注意的是,要和application.yml中的连接地址配置必须保持一致
-
使用客户端工具连接mysql,并创建swtest数据库,采用latin1字符编码,可以避免索引长度的问题
-
双击apm下bin目录中的oapServiceInit.bat(Windows环境下使用),弹出一个窗口后,会自动在swtest库创建相关的表
- 创建后要检查一下是否表创建成功了,若失败,一般是mysql依赖包版本的问题
二、UI配置
-
修改amp下的配置文件:
webapp/webapp.yml
# UI服务的默认端口未8080,为避免冲突,改为10110 server: port: 10110
三、日志信息
日志信息存储在 logs目录
四、服务集成
微服务项目中,由于涉及网关服务,还需要添加相关插件的依赖。
将skywalking-agent下optional-plugins可选插件目录中的两个网关的依赖包,复制到plugins插件目录下
五、SkyWalking服务启动
选择apm下的bin目录中的startup.bat(Windows环境下使用)启动即可
-
分别会启动后台和前台Ui界面两个服务(两个都出现才表示全部启动成功,如果没有成功,检查下是不是apm路径存在中文!)
也就是分别执行了webappService.bat和oapService.bat
- Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息,Http默认端口12800,gRPC默认端口11800
- Skywalking-Webapp:UI管理平台页面
-
打开浏览器,访问web ui服务,例如我的是localhost:10110
如下页面就表示服务搭建成功啦!
六、Idea服务使用
任意搭建一个SpringBoot项目(这里就不细记录了)
-
在运行/调试配置中,选择使用的项目,在配置虚拟机选项内容添加如下
-
具体配置如下
第一个是agent配置skywalking-agent.jar
第二个-Dskywalking.agent.service_name表示注册到SkyWalking服务的服务名称
-javaagent:D:\data\apache-skywalking-java-agent-8.16.0\apache-skywalking-java-agent-8.16.0\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=user
-
然后启动项目,刷新web ui服务就能看到当前这个user服务了,如果是微服务项目,也能够看到请求接口的网络拓扑结构图
Jar包方式
将项目打包成jar,然后放在skywalking-agent的目录下(和skywalking-agent.jar保持同级目录),然后启动jar包即可,然后再启动SkyWalking。
后续
关于更多SkyWalking的使用,以及生产环境(Linux)下搭建使用,后续学习补充。