Springboot接入SkyWalking分布式链路追踪
下载SkyWalking(推荐官网)
skywalking.apache.org/downloads/
直接下载tar包 www.apache.org/dyn/closer.…
本地启动SkyWalking
解压缩tar包,进入apache-skywalking-apm-bin/bin目录
windows系统直接运行startup.bat(linux系统运行startup.sh);出现如下视图,表示启动成功
浏览器打开:http://localhost:8080/ 即可访问SkyWalking的管理界面
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
复制代码
如果是用idea启动springboot项目,可在VM参数区配置
启动项目,看到如下拓扑图,即说明你的服务已被监控
日志打印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>
复制代码
idea启动项目可看到控制台输出
Kibana上查看日志
通过trace_id查看调用链路
解决项目使用WebFlux框架导致trace_id无法获取的问题
比如使用了Springcloud的gateway组件
将上图中\apache-skywalking-apm-bin\agent\optional-plugins下的4个可选插件复制到 \apache-skywalking-apm-bin\agent\plugins下即可
作者:l拉不拉米
链接:https://juejin.cn/post/6981640309943828487
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论