Springboot получает доступ к распределенному отслеживанию ссылок SkyWalking

Java
Springboot получает доступ к распределенному отслеживанию ссылок SkyWalking

«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Двойные заявки на внутреннюю и внешнюю стороны, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов!"

Скачать SkyWalking (рекомендуется официальный сайт)

skywalking.apache.org/downloads/

Загрузите пакет tar напрямуюwoohoo.apache.org/wish you/closer. …

Запустите SkyWalking локально

  1. Разархивируйте пакет tar и войдите в каталог apache-skywalking-apm-bin/bin.
  2. Система Windows напрямую запускает файл startup.bat (система Linux запускает файл startup.sh), появляется следующее представление, указывающее, что запуск прошел успешно

image.png

Браузер открывается:http://localhost:8080/Вы можете получить доступ к интерфейсу управления SkyWalking

image.png

Springboot доступ к SkyWalking

Доступ через javaagent, без вмешательства в код

java -javaagent:/usr/skywalking/agent/skywalking-agent.jar  -Dskywalking.agent.service_name=your-service-name -Dskywalking.collector.backend_service=127.0.0.1:11800

Если вы используете идею для запуска проекта Springboot, вы можете настроить его в области параметров виртуальной машины.

image.png

Запустите проект и увидите следующую топологию, что означает, что ваш сервис отслеживался

image.png

журнал печати trace_id

Возьмите logback в качестве примера

  • файл pom добавить зависимости
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.6.0</version>
        </dependency>
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
        </dependency>
  • файл конфигурации logback добавить конфигурацию
    <!-- 控制台输出 -->
    <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.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>${logEnv} %d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n
                </Pattern>
            </layout>
        </encoder>
    </appender>

    <!-- 上报给logstash -->
    <appender name="logStash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${StashUrl}</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <provider class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.logstash.TraceIdJsonProvider"/>
            <customFields>{"applicationName":"${AppID}-${logEnv}"}</customFields>
        </encoder>
    </appender>
  • Идея запускает проект, чтобы увидеть вывод консоли

image.png

  • Просмотр журналов на Kibana

image.png

  • Посмотреть ссылку звонка по trace_id

image.png

Решить проблему, из-за которой невозможно получить trace_id, когда проект использует фреймворк WebFlux.

Например, используя компонент шлюза Springcloud.

image.pngСкопируйте 4 дополнительных плагина в папку \apache-skywalking-apm-bin\agent\Optional-plugins на приведенном выше рисунке в \apache-skywalking-apm-bin\агент\плагиныimage.png