SpringBoot(48)-使用 SkyWalking 进行分布式链路追踪

Spring Boot(48)- 使用 SkyWalking 进行分布式链路追踪

介绍

在分布式系统中,了解各个服务之间的调用关系和性能表现是非常重要的。SkyWalking 是一款开源的分布式系统监控与分析平台,能够帮助我们实现分布式系统的链路追踪、性能监控和故障排查。本教程将介绍如何使用 Apache SkyWalking 进行分布式链路追踪,帮助我们深入了解分布式系统的运行情况。

前置知识

  1. Java 编程基础
  2. SpringBoot 应用开发、微服务架构概念
  3. Skywalking 核心概念

准备工作

  1. 下载并安装 Apache SkyWalking 服务器。
  2. 配置 Alibaba SkyWalking 服务器。
  3. 创建一个基本的 Spring Boot 应用,用于进行链路追踪实验。

步骤一:安装和配置 SkyWalking 服务器

  1. 下载 SkyWalking 服务器安装包。
  2. 解压安装包到指定目录。
  3. 配置 SkyWalking 服务器的相关参数。
    本文是用 v9.0.0 版本为例
    进入SkyWalking 官方网站下载页面,点击 tar 资源下载

    目录结构如下:

    进入 bin 执行,执行 bash startup.sh (如果是 Windows ,执行 startup.bat)

访问 localhost:8080 ,正常访问表示启动成功。

相比 6.X、7.X,新页面还是可以的。

步骤二:编写 Spring Boot 应用

  1. 添加 SkyWalking 依赖到 Spring Boot 项目中。
xml 复制代码
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>9.0.0</version>
</dependency>
  1. 配置 Spring Boot 应用的 SkyWalking 连接信息。
    application.properties 文件配置如下:

    spring.application.name=skywalking-quickstart

    应用端口号

    server.port=8081

    SkyWalking 配置

    skywalking.collector.backend_service=127.0.0.1:11800
    skywalking.trace.ignore_path=/css,/js,/images

  2. 下载 Skywalking Agent

    Skywalking 通过 Agent 的方式上报链路数据, 所以需要下载对应版本 Agent ,本文下载 V9.0.0[tar]。

    解压后目录如下所示:

    重点关注 skywalking-agent.jar 的全路径, 比如本文的地址是: /Users/murphy/Downloads/skywalking-agent/skywalking-agent.jar

  3. IDEA 配置 启动参数

    如何在IDEA 中配置 java agent 的启动参数呢?如下所示

打开 IntelliJ IDEA,并打开你的 Spring Boot 项目。

在菜单栏中选择 "Run" -> "Edit Configurations..."。

在弹出的窗口中,选择你的 Spring Boot 应用程序的运行/调试配置。

在右侧的 "Configuration" 选项卡中,找到 "VM options" 输入框。

在 "VM options" 输入框中输入以下内容

java 复制代码
-javaagent:/Users/murphy/Downloads/skywalking-agent/skywalking-agent.jar
  1. 编写一个验证接口
java 复制代码
import org.apache.skywalking.apm.toolkit.trace.ActiveSpan;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/hello")
    public String hello() {
        // 手动触发链路信息的上传
        ActiveSpan.tag("tag_key", "tag_value");
        return "Hello World!";
    }
}
  1. 启动 Spring Boot 应用,使其将调用链信息发送到 SkyWalking 服务器。
    访问接口 localhost:8081/hello 。

步骤三:查看分布式链路追踪结果

  1. 登录 SkyWalking 控制台,查看应用的调用链信息和性能指标。

  2. 观察调用链路图,了解各个服务之间的调用关系和性能瓶颈。

常见问题及解答

  1. 问题:SkyWalking 服务器启动失败。

    解答:检查 SkyWalking 服务器的配置和环境是否正确,确保端口未被占用,默认是 8080端口。

  2. 问题:应用的调用链信息未显示在 SkyWalking 控制台。

    解答:检查应用的 SkyWalking 配置是否正确,尤其是 Skywalking Agent 的版本和路径是否正确 , 确保连接信息和应用名称配置无误。

总结

通过本教程,我们学习了如何使用 Alibaba SkyWalking 进行分布式链路追踪。SkyWalking 提供了强大的分布式系统监控能力,能够帮助我们深入了解分布式系统的运行情况,及时发现和解决性能问题。

最后,贴上项目源码地址:d48-skywalking

相关推荐
身如柳絮随风扬7 小时前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务
AIMath~8 小时前
雪花算法+ZooKeeper解决方案+RPC是什么
分布式·zookeeper·云原生
KmSH8umpK8 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第六篇
数据库·redis·分布式
直奔標竿9 小时前
Java开发者AI转型第二十五课!Spring AI 个人知识库实战(四)——RAG来源追溯落地,拒绝AI幻觉
java·开发语言·人工智能·spring boot·后端·spring
空中海10 小时前
Kafka :存储、复制与可靠性
分布式·kafka·linq
渣渣盟10 小时前
构建企业级实时数据管道:Kafka + Flink 最佳实践
分布式·flink·kafka
敖正炀10 小时前
WebFlux 深度:Reactor 线程模型、背压与错误处理
spring boot
BING_Algorithm10 小时前
一文搞定 AOP 所有核心知识点
spring boot·后端·spring
KmSH8umpK11 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第四篇
数据库·redis·分布式
勿忘初心122111 小时前
【Java实战】SpringBoot 集成 freemarker 导出 Word 模板
java·spring boot·freemarker·模板引擎·word导出·后端实战