在现代微服务架构中,分布式系统的复杂性使得传统的单体应用调试方法不再适用。为了更好地监控和诊断分布式系统中的问题,使用分布式追踪工具变得尤为重要。Apache SkyWalking 是一个开源的 APM(应用性能管理)工具,支持分布式追踪、服务网格观测以及实时诊断等功能。
本文将介绍如何在 Java 应用程序中使用 SkyWalking 进行分布式追踪与诊断。
Apache SkyWalking 是一款功能强大的分布式追踪系统,它能够帮助开发者监控微服务架构中的请求链路、调用延迟以及错误分布等信息。SkyWalking 提供了以下核心功能:
SkyWalking 支持多种语言(如 Java、Go、Python 等),并且可以轻松集成到 Spring Boot、Dubbo 等框架中。
在开始使用 SkyWalking 之前,我们需要先安装其后端服务和 UI 界面。
访问 Apache SkyWalking 官方网站 并下载最新版本的 SkyWalking 包。
wget https://downloads.apache.org/skywalking/9.x/apache-skywalking-backend-9.x.zip
unzip apache-skywalking-backend-9.x.zip
cd apache-skywalking-backend-9.x
SkyWalking 默认使用 Elasticsearch 作为存储引擎。首先需要确保本地已安装并启动了 Elasticsearch。
# 启动 SkyWalking 后端
./bin/startup.sh
SkyWalking 的前端界面可以通过以下命令启动:
# 启动 SkyWalking UI
cd webapp
npm install && npm run start
默认情况下,UI 界面可以通过浏览器访问 http://localhost:8080
。
SkyWalking 提供了一种无侵入式的监控方式,通过 Java Agent 来实现对应用程序的监控。
wget https://downloads.apache.org/skywalking/agent/java-agent-8.x.zip
unzip java-agent-8.x.zip
编辑 config/config.properties
文件,设置 SkyWalking 后端地址:
agent.collector.backend_service=127.0.0.1:11800
在启动 Java 应用时,通过 -javaagent
参数加载 SkyWalking Agent:
java -javaagent:/path/to/skywalking-agent.jar -jar your-application.jar
如果您的项目是基于 Spring Boot 的,可以通过引入 SkyWalking 的自动配置依赖来简化集成过程。
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-spring-boot-starter</artifactId>
<version>8.x</version>
</dependency>
application.yml
:spring:
application:
name: your-service-name
skywalking:
agent:
collector-backend-service: 127.0.0.1:11800
service-name: your-service-name
instance-name: your-instance-name
@RestController
@RequestMapping("/api")
public class TestController {
@GetMapping("/hello")
public String hello() {
return "Hello, SkyWalking!";
}
}
http://localhost:8080
打开 SkyWalking UI。