springboot 日志跟踪(skywalking)

2022-09-29 12:24:28 浏览数 (1)

1、背景

上了 springboot 微服务框架后会有很多微服务,每次都到单个微服务自己的日志海洋里去找需要很大经理, 日志跟踪就会成为一个麻烦。我们尝试来寻找一个简化方案

skywalking 可以在不修改任何代码的情况下,帮你生成调用跟踪链路,而且描述了各个链路的调用时长,相关日志。非常的强大。

2、skywalking 介绍

skywalking,分布式系统的应用程序性能监控工具,专为微服务、云原生和基于容器的 (Kubernetes) 架构而设计。

官网:https://skywalking.apache.org/ github: https://github.com/apache/skywalking

官方文档:https://skywalking.apache.org/docs/main/latest/readme/

Skywalking相比于zipkin还是有很大的优势的,如下:

skywalking采用字节码增强的技术实现代码无侵入,zipKin代码侵入性比较高 skywalking功能比较丰富,报表统计,UI界面更加人性化

组成: 探测器(Probe):收集数据并根据 SkyWalking 要求重新格式化(不同的探测器支持不同的来源)。 平台后端(Platform backend):支持数据聚合、分析和流式处理,包括跟踪、度量和日志。 存储(Storage):通过开放/可插入接口存储 SkyWalking 数据。您可以选择现有的实现,例如 ElasticSearch、H2、MySQL、TiDB、InfluxDB,也可以自己实现。欢迎为新的存储实现者打补丁! UI(UI):是一个高度可定制的基于 Web 的界面,允许 SkyWalking 最终用户可视化和管理 SkyWalking 数据。

安装和部署

从 https://skywalking.apache.org/downloads/ 选择 SkyWalking APM 下载。

参考: https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/setup/backend/backend-ui-setup.html

配置文件

后端服务的配置文件在 config 目录下,主要配置文件是 application.yml。

启动

SkyWalking 相关的启动脚本都在 bin 目录下。

如果是第一次使用,则需要初始化数据库表结构,不是第一次则跳过。执行脚本 oapServiceInit.sh。

代码语言:javascript复制
./oapServiceInit.sh
SkyWalking OAP started successfully!

初始化执行成功后,执行应用启动脚本 oapService.sh。

代码语言:javascript复制
./oapService.sh
SkyWalking OAP started successfully!

执行成功

SkyWalking 后端会启动一个 12800 端口的 rest 服务和一个 11800 的 gRPC 服务。 看看端口是否通畅:

代码语言:javascript复制
telnet 127.0.0.1 11800
telnet 127.0.0.1 12800

gRPC 报告器

gRPC 报告器可以将收集到的日志转发到 SkyWalking OAP 服务器或SkyWalking Satellite sidecar。Trace id、segment id 和 span id 将自动附加到日志。无需修改现有布局。

代码语言:javascript复制
添加GRPCLogClientAppenderlogback.xml
    <appender name="grpc-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.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>

这么配置了以后,就可以在 web 上看到了,不过。。。那个表格看日志真的很不方便

兼容 spring-cloud-gateway

经过上面的步骤之后,链路已经搭建完成,查看发现了一个问题,gateway 模块的 traceId 和 业务模块的 traceId 不统一。

这是由于 SkyWalking 对于 spring-cloud-gateway 的支持不是默认的,所以需要将 agent/optional-plugins/apm-spring-cloud-gateway-2.1.x-plugin-8.7.0.jar 复制到 agent/plugins 下,然后重启即可。

IDEA 中配置

IDEA 中配置 VM OPTIONS 启动参数:

代码语言:javascript复制
-javaagent:/Users/zhangyunfei/Downloads/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=ruoyi-system -Dskywalking.collector.backend_service=127.0.0.1:11800

参考

https://juejin.cn/post/7049920780569673736

https://www.jianshu.com/p/77b4e70c7817

https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/

https://juejin.cn/post/7012458633455730702

https://my.oschina.net/u/2344188/blog/4319631

0 人点赞