微服务链路跟踪之SkyWalking实战小结

本文介绍了微服务链路跟踪的概念和原理,并详细阐述了SkyWalking的使用,包括下载地址、服务端部署、java-agent部署以及如何在日志中添加TraceId。通过SkyWalking,可以实现对微服务调用关系的可视化监控和问题跟踪。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.关于链路跟踪

概念、原理可参考这两篇博文:

各大厂分布式链路跟踪系统架构对比

技术分析:搞懂链路追踪

2.关于SkyWalking

可参考这篇博文:

skywalking 5.X 分布式链路跟踪 使用笔记

3.SkyWalking下载地址

http://skywalking.apache.org/downloads/

4.SkyWalking服务端部署

1)将SkyWalking解压到任意目录

2)运行启动脚本(以6.2.0为例)

apache-skywalking-apm-bin/bin/startup.sh
// or for windows:
apache-skywalking-apm-bin/bin/startup.bat

默认采用H2内存数据库存储trace数据;开启本地11800端口作为trace采集端口;8080端口作为web监控服务端口。

5.SkyWalking java-agent部署

1)将apache-skywalking-apm-bin/agent整个目录拷贝至微服务的运行目录(docker环境下,考虑制作包含apache-skywalking-apm-bin/agent整个目录的基础镜像)

2)如果仅跟踪dubbo接口调用关系,直接在微服务启动时增加JVM参数即可。例如:

java -javaagent:/xxx/yyy/agent/skywalking-agent.jar -Dskywalking.agent.service_name=myDemoService1 -jar demo-dubbo-provider-1.5.8.RELEASE.jar

其中,-javaagent参数指定skywalking-agent.jar的全路径;skywalking.agent.service_name指定微服务实例名称,用于展示在SkyWalking的web监控界面

3)如果需要跟踪微服务接口内部的调用关系,并采集性能数据,则按需要在各方法上增加@trace注解

3-1)引入apm-toolkit-trace包,用于AOP方式采集方法trace信息

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

3-2)要跟踪的方法上增加@trace注解

import org.apache.skywalking.apm.toolkit.trace.Trace;
...
    @Trace
    public void hello() {
        String ret = demoService.getHello("consumer1");
        log.info("RPC return : " + ret);
    }

4)日志中增加TraceId,方便问题跟踪

TraceId是SkyWalking框架生成的唯一键,可用于在SkyWalking的web监控界面按此ID快速定位各种接口的调用关系

4-1)以logback为例,引入apm-toolkit-logback-1.x包,用于在日志中增加TraceId

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

4-2)logback配置文件中,将默认配置替换为SkyWalking的配置

    <appender name="STDOUT" 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.TraceIdPatternLogbackLayout">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{35} - %msg%n</pattern>
            </layout>
        </encoder>
    </appender>

其中,[%tid]部分即为TraceId

6.运行效果图

1)仪表盘

 

2)拓扑图

 

3)拓扑图中查看明细

 

4)追踪调用链路

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值