Springboot项目集成Skywalking链路追踪系统

1. SkyWalking配置


1.1 下载SkyWalking


官网:https://skywalking.apache.org/downloads/

下载SkyWalking APM的Distribution的最新版
请添加图片描述

1.2 目录讲解


老版本布局:
请添加图片描述
新版本的布局:
请添加图片描述

1.3 设置配置文件 config/application.yml


storage:
	# 修改存储引擎为mysql
	selector: ${SW_STORAGE:mysql}
	……
	mysql:
		properties:
			# 修改ip和数据库
			jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
			# 修改用户名
            dataSource.user: ${SW_DATA_SOURCE_USER:root}
            # 修改密码
			dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}
			……

Skywalking支持的几种存储方式:

  • h2:是Skywalking自带的,对应的jar包路径是Skywalking/oap-libs/h2-1.4.196.jar,h2是一种内存数据库
  • mysql:MySQL数据库
  • ElasticSearch:ElasticSearch 非关系型数据库
  • ……

1.4 下载Mysql连接jar


在下面的网站中可以选择不同版本的jar包进行下载
https://mvnrepository.com/artifact/mysql/mysql-connector-java

选择下载了8.0.22版本
![[Pasted image 20240723105645.png]]

将jar包放在oap-libs目录下即可,如果没有连接jar包,会抛如下异常:

Failed to get driver instance for jdbcUrl=jdbc:mysql://localhost:3306/XXX

No suitable driver

1.5 启动


  • bin/目录下,执行starup.bat(Windows)或者startup.sh(Linux)文件
  • startup脚本文件会同时启动Skywalking Collector、Skywalking UI

启动之后窗口闪退,问题在于JDK版本为8,与skywalking要求版本11不同

或者是因为目录中有空格

修正问题之后,启动成功:

请添加图片描述

修改了Web的启动端口为8090,在webapp/application.yml中进行修改。

在浏览器中输入localhost:8090/即可进入页面

2. Springboot配置


2.1 下载Java Agent


同样在Skywalking的官网中下载Java Agent
请添加图片描述

解压之后将文件夹放在项目是src文件夹下的main文件夹
请添加图片描述

2.2 配置Java Agent


在Skywalking-agent中的config文件中,找到相应属性进行修改

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
agent.service_name=${SW_AGENT_NAME:Applciation_Name}

2.3 日志对接


在skywalking的UI端有一个日志的模块,用于收集客户端的日志,默认是没有数据的,那么需要如何将项目中产生日志数据传输到skywalking中

在springboot项目中导入相关依赖:

        <!--打印skywalking的TraceId到日志-->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.12.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>8.12.0</version>
        </dependency>

添加配置文件:
新建一个logback-spring.xml放在resource目录下,配置如下:

<?xml version="1.0" encoding="UTF-8"?>  
<configuration>  
    <!-- 修改一下路径-->  
    <property name="PATH" value="./log/business"/>  
  
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder><!--            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>-->  
            <Pattern>%d{mm:ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>  
        </encoder>    </appender>  
    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>${PATH}/trace.log</file>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>  
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
                <maxFileSize>10MB</maxFileSize>  
            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <layout>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>  
        </layout>    </appender>  
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>${PATH}/error.log</file>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>  
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
                <maxFileSize>10MB</maxFileSize>  
            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <layout>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>  
        </layout>        <filter class="ch.qos.logback.classic.filter.LevelFilter">  
            <level>ERROR</level>  
            <onMatch>ACCEPT</onMatch>  
            <onMismatch>DENY</onMismatch>  
        </filter>    </appender>  
    <root level="ERROR">  
        <appender-ref ref="ERROR_FILE" />  
    </root>  
    <root level="TRACE">  
        <appender-ref ref="TRACE_FILE" />  
    </root>  
    <root level="INFO">  
        <appender-ref ref="STDOUT" />  
    </root></configuration>

2.4 使用Idea启动项目


在idea的启动配置中进行编辑,添加JVM选项,在JVM选项中加入

-javaagent:skywalking-agent.jar的绝对地址(skywalking-agent.jar在skywalking-agent文件夹中)

启动项目:
请添加图片描述

此时skywalking页面中就会记录项目运行的日志,并且记录接口的运行时间,可以用来分析接口的处理速度
请添加图片描述

3. 总结


Springboot与Skywalking的集成过程总的来说比较简单,第一步就是配置Skywalking,第二部配置Java Agent即可
此后可以使用Skywalking来分析哪个接口的执行速度比较慢,由此可以看到SQL的具体执行时间,可以定位到哪个sql出现了问题,有助于解决mysql的慢查询的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值