记录一次为了排查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

    https://im.gurl.eu.org/file/9218aac12c26d99e9486e.png

    • 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)下搭建使用,后续学习补充。

Logo

更多推荐