Spring Cloud —— SkyWalking(四)

8. 自定义追踪

skywalking 默认会追踪接口(如加了 @RequestMapping 的方法),如果想追踪程序中的其他方法就需要自定义追踪。

8.1 添加依赖

xml 复制代码
<dependency>
	<groupId>org.apache.skywalking</groupId>
	<artifactId>apm-toolkit-trace</artifactId>
	<version>9.4.0</version>
</dependency>

8.2 注解添加

这里以该接口,调用的 orderService.queryById() 方法进行自定义追踪。

在该方法上添加 @Trace 注解

java 复制代码
    @Override
    @Trace
    public OrderInfo queryById(Integer orderId) {
        return orderMapper.selectById(orderId);
    }

链路中就显示了该方法,鼠标放在上面还会有信息,点击后信息更详细,如下图

这里可以看到, 端点名称默认为 包名+类名+方法名(参数类型),在 @Trace 注解中给 operationName 属性赋值就可以指定名字。

java 复制代码
    @Override
    @Trace(operationName = "queryOrderById")
    public OrderInfo queryById(Integer orderId) {
        return orderMapper.selectById(orderId);
    }

如下图:

8.3 附加信息

通过 @Tag 和 @Tags 可以在自定义链路追踪中附加关键业务或上下文信息的注解

@Tag 信息如下

可以看出,是按照键值对的形式存储信息的

java 复制代码
    @Override
    @Trace(operationName = "queryOrderById")
    @Tag(key = "orderId", value = "arg[0]")
    public OrderInfo queryById(Integer orderId) {
        return orderMapper.selectById(orderId);
    }

arg[i] 表示方法的参数,从 0 开始计算

@Tags 就是添加多个 @Tag

java 复制代码
    @Override
    @Trace(operationName = "queryOrderById")
     @Tags({
            @Tag(key = "orderId", value = "arg[0]"),
            @Tag(key = "orderinfo", value = "returnedObj")})
    public OrderInfo queryById(Integer orderId) {
        return orderMapper.selectById(orderId);
    }

returnedObj 即返回值

9. 性能剖析

性能剖析:针对分布式系统代码级性能的动态分析技术

前面只知道哪个端点很耗时,使用性能剖析,就可以精确到某一行代码的耗时多少,可以快速识别高耗时方法(如 慢SQL查询),定位 Trace 中具体 Span 的性能问题,针对性进行优化。

使用

新建任务

  • 端点名称:可以自行输入端点名称(不推荐),在点击后出现的下拉框中选择(如果未出现多刷新几次)
  • 监控时间:(monitor now)新建任务后就监视,(set start time)到了指定时间再开始监视
  • 监控持续时间:监控采样多长时间
  • 起始监控时间:多少秒后开始采集
  • 监控间隔:多长时间采样一次
  • 最大采样数:最大采集多少样本

创建完成后,如果点击任务出现了提示,说明还没采到样,如下图:

采到样后,选中你要看到,点击分析就能看到详细内容

看精确定位到代码行数

相关推荐
AntsData20 分钟前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat27 分钟前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
最强小杰30 分钟前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
Flynn Liang1 小时前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
灿飞1 小时前
Kotlin与Java虚拟机六:基础与类型系统:一切皆对象,但对象有代价
java·kotlin
计算机毕设定制辅导-无忧学长1 小时前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统
雪芽蓝域zzs2 小时前
第 1 章:IDEA 创建 SpringBoot3.5.16 Maven 项目
java·maven·intellij-idea
golang学习记2 小时前
IDEA 开始换芯,发布全新AI版终端
java·人工智能·intellij-idea
vipxieliang2 小时前
ValidX 正则表达式预编译优化:Pattern 复用策略
java·spring boot·后端
Wang's Blog2 小时前
Java 项目实战:交友项目 - FastDFS 工作原理
java·大数据·交友