Springcloud 集成 Skywalking 实现全链路追踪

下载链接
https://skywalking.apache.org/downloads/

Springcloud 集成 Skywalking 实现全链路追踪_第1张图片

本地搭建springcloud工程,偷懒可参考gitee
https://gitee.com/wangLi1997/spring-cloud-example.git

解压skywalking

Springcloud 集成 Skywalking 实现全链路追踪_第2张图片

准备工作

1.修改application.yml,指定es地址
Springcloud 集成 Skywalking 实现全链路追踪_第3张图片
Springcloud 集成 Skywalking 实现全链路追踪_第4张图片

2.修改端口,默认8080改成其他端口
Springcloud 集成 Skywalking 实现全链路追踪_第5张图片
3.修改 agent.config

# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:127.0.0.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}

4.如果有用到spring-gateway,需要手动调整
Springcloud 集成 Skywalking 实现全链路追踪_第6张图片
copy到
Springcloud 集成 Skywalking 实现全链路追踪_第7张图片

修改idea配置

Springcloud 集成 Skywalking 实现全链路追踪_第8张图片

-javaagent:E:\gitee\apache-skywalking-apm-8.6.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=你的微服务名
-Dskywalking.collector.backend_service=127.0.0.1:11800

启动Skywalking

Springcloud 集成 Skywalking 实现全链路追踪_第9张图片
Springcloud 集成 Skywalking 实现全链路追踪_第10张图片

启动springcloud项目

完成几次多模块服务调用

Springcloud 集成 Skywalking 实现全链路追踪_第11张图片
如果没有数据,可以调整下时间
Springcloud 集成 Skywalking 实现全链路追踪_第12张图片

集成logback

依赖

     <skywalking.version>8.6.0</skywalking.version>

	      <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>${skywalking.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>${skywalking.version}</version>
        </dependency>

logback配置


<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <springProperty scope="context" name="LOG_HOME" source="logging.file.path" defaultValue="/var/logs/test-server"/>
    <springProperty scope="context" name="LOG_NAME" source="spring.application.name" defaultValue="test-device"/>

    <property name="CONSOLE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%5level) %magenta(${PID}) --- [%15.15thread] %cyan(%-40.40logger) : %msg%n"/>
    <property name="FILE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5level ${PID} --- [%15.15thread] %-40.40logger : %msg%n"/>

    <property name="STDOUT_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - [%tid] - %msg%n"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!--保证控制台打印链路信息-->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${STDOUT_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
                <marker>MARKER_MP_NOTIFY</marker>
            </evaluator>
            <onMismatch>NEUTRAL</onMismatch>
            <onMatch>DENY</onMatch>
        </filter>
        <file>${LOG_HOME}/${LOG_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${LOG_NAME}_%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <!-- 单个日志文件最多50MB -->
            <maxFileSize>50MB</maxFileSize>
            <!-- 日志文件保留天数 -->
            <maxHistory>30</maxHistory>
            <!-- 最大不能超过20GB, 到了这个值, 就会删除旧的日志 -->
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!--保证日志文件打印链路信息-->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${STDOUT_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

    <!--整合skyWalking,日志上传至skyWalking-->
    <property name="SKY_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss} | %-5level | %thread | %tid | %logger{50} %L\ | %msg%n" />
    <appender name="SKY_LOG" 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.TraceIdPatternLogbackLayout">
                <pattern>${SKY_LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>


    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="SKY_LOG"/>
    </root>

</configuration>

Springcloud 集成 Skywalking 实现全链路追踪_第13张图片

参考链接
https://www.codeleading.com/article/39345349197/

https://blog.csdn.net/Mrqiang9001/article/details/121497944

你可能感兴趣的:(SpringCloud,Java,#,SkyWalking,spring,cloud,java,spring)