这里集成的链路追踪使用的是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=服务名称

skywalking监控报警规则 skywalking监控mysql_java

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这个参数了。

skywalking监控报警规则 skywalking监控mysql_mysql_02

skywalking监控报警规则 skywalking监控mysql_java_03

 

如果没有看到日志的话。请查看下筛选的时间是否是在重启服务之后。