美文网首页
springboot 日志跟踪(skywalking)

springboot 日志跟踪(skywalking)

作者: 张云飞Vir | 来源:发表于2022-09-28 11:18 被阅读0次

    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。

    ./oapServiceInit.sh
    SkyWalking OAP started successfully!
    

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

    ./oapService.sh
    SkyWalking OAP started successfully!
    

    执行成功

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

    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 将自动附加到日志。无需修改现有布局。

    添加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 启动参数:

    -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

    相关文章

      网友评论

          本文标题:springboot 日志跟踪(skywalking)

          本文链接:https://www.haomeiwen.com/subject/fycnortx.html