SpringCloud:自定义skywalking链路追踪

本文介绍了如何在Java项目中添加ApacheSkyWalking的Apm-Toolkit依赖,包括logback和trace插件。重点展示了如何使用@Trace和@Tag注解来追踪普通业务方法的调用参数和返回值,以便在SkywalkingUI中可视化监控。

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

一、添加依赖:

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

        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>8.7.0</version>
        </dependency>

二、在普通业务方法添加@Trace注解:

    @Trace
    public String myBusiness(){
        return "my business";
    }

三、在skywalking UI界面可以看到普通业务方法:
在这里插入图片描述
在这里插入图片描述
可以通过@Tag注解来在skywalking里显示调用的参数和返回值

@Trace
@Tags({@Tag(key = "param", value = "arg[0]"),
       @Tag(key = "result", value = "returnedObj")})
public int get(Integer id) {
    return id;
}
### Spring Cloud 中集成 SkyWalking 实现服务监控与链路追踪 #### 添加依赖项 为了使Spring Cloud应用程序能够利用SkyWalking的功能,需在项目的`pom.xml`文件中引入必要的依赖。这包括用于追踪的工具包以及日志记录增强库。 ```xml <dependencies> <!-- 引入 SkyWalking 追踪工具 --> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>${skywalking.version}</version> </dependency> <!-- 增强 Logback 日志框架支持 --> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>${skywalking.version}</version> </dependency> </dependencies> ``` 上述代码片段展示了如何向项目添加SkyWalking的相关依赖[^5]。 #### 启动参数设置 为了让各个微服务实例能被SkyWalking管理并上报数据,在启动这些Java进程时应附加特定JVM选项来加载SkyWalking Agent: ```bash -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=your-service-name -Dskywalking.collector.backend_service=collector_ip:port ``` 此命令行配置允许指定Agent路径和服务名称,并告知Collector的位置以便于接收来自客户端的数据报告[^4]。 #### 自定义链路追踪逻辑 开发人员可以在业务代码内部通过编程方式操作追踪上下文,例如注入自定义键值对或标记重要事件点作为诊断依据之一。 ```java @RequestMapping("/list") public List<User> list(){ // 绑定 key-value 到当前请求上下文中 TraceContext.putCorrelation("name", "fox"); Optional<String> op = TraceContext.getCorrelation("name"); log.info("name = {}", op.orElse("default")); // 获取本次调用产生的唯一跟踪 ID String traceId = TraceContext.traceId(); log.info("traceId = {}", traceId); return userService.list(); } ``` 这段示例说明了怎样手动控制某些追踪细节,从而更精确地捕捉应用行为特征[^3]。 #### 使用 `@Trace` 注解简化方法级追踪 对于希望快速启用的方法级别自动追踪功能,则可以直接采用官方提供的`@Trace`注解形式应用于目标函数之上即可完成基本配置工作而无需额外编码干预。 ```java @Trace @RequestMapping("/example") public ResponseEntity<?> exampleMethod() { ... } ``` 这种方法极大地减少了开发者的工作量,同时也保持了一致性的良好实践标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值