这里集成的链路追踪使用的是skywalking的版本是8.7。这个版本是可以支持mysql作为存储介质的。实际生成请数使用es作为存储介质来提高性能。
下载地址
https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7-8.7.0.tar.gz
配置项
修改config/application.yml 1.修改mysql的配置信息
2.修改存储介质为mysql
storage:
selector: ${SW_STORAGE:mysql}
3.补充mysql的驱动jar包
这里有一个其他网友提供的jar包地址:https://share.weiyun.com/VLNUcu1u
驱动包放在oap-libs
4.修改启动的web端口号[默认为8080.不改也可行]
配置文件地址webapp/webapp.yml
5.配置探头
配置文件地址:apache-skywalking-apm-bin-es7/agent/config/agent.config
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
修改对应的ip,端口号一般不动
6.服务增加 启动参数
-javaagent:C:\你的skywalking的目录\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=服务名称
7.启动skywalking服务
bin/startup.sh[startup.bat]对应的平台使用对应的启动服务。
服务启动后过1分钟左右就会在skywalking中看到对应的服务信息了。这里是使用的mysql作为数据源,所以初始化数据库也是需要时间的。
8.把服务日志上传到skywalking
这里使用logback[log4j2不敢用了....]
(1)各个服务中增加依赖【注意版本】
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.7.0</version>
</dependency>
增加log-spring.xml配置信息
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到log上下文中。定义变量后,可以使“${}”来使用变量。 -->
<!--<property name="log.path" value="C:/idea_log/cube" />-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<!--日志格式:增加Skywalking的唯一TID-->
<!--<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>-->
<Pattern>-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid]){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</Pattern>
</layout>
</encoder>
</appender>
<!--设置Appender-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
增加logback-spring.xml配置信息
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到log上下文中。定义变量后,可以使“${}”来使用变量。 -->
<!--<property name="log.path" value="C:/idea_log/cube" />-->
<!--修改本地日志格式,增加skywalking的TID-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<!--日志格式:增加Skywalking的唯一TID-->
<!--<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>-->
<Pattern>-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid]){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</Pattern>
</layout>
</encoder>
</appender>
<!--将日志发布到skywalking服务端,这样就无需修改本地的日志格式-->
<appender name="GRPCLOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<!--引用以上配置,否则配置不会生效-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="GRPCLOG"/>
</root>
</configuration>
重启服务后就可以在skywalking中看到相应的日志了,也可以在控制中看到每个日志打印中都会带有TID这个参数了。
如果没有看到日志的话。请查看下筛选的时间是否是在重启服务之后。