SkyWalking链路追踪:从零搭建
从零搭建 SkyWalking 链路追踪:安装、配置与验证教程
微服务架构下,一次请求可能跨多个服务,排查性能问题离不开SkyWalking链路追踪。
很多新手觉得部署 APM 工具很复杂,其实只要按步骤执行,半小时就能跑起来。
本文以 SkyWalking 9.x 为例,带你完成从下载安装到接入 Java 应用的全过程,最后验证链路数据是否正常上报。
准备开始:下载并启动 SkyWalking 后端
首先确保服务器上已安装 JDK 8 或更高版本(SkyWalking 后端依赖 Java 运行环境)。
去 SkyWalking 官网(skywalking.apache.org)下载最新稳定版二进制包,建议选择 apache-skywalking-apm-xxx.tar.gz 文件。
将压缩包上传到服务器(假设路径为 /opt),解压:
tar -zxvf apache-skywalking-apm-9.6.0.tar.gz -C /opt
cd /opt/apache-skywalking-apm-bin
默认后端使用 H2 存储数据,适合测试;
生产环境建议改用 Elasticsearch。
本次教程先用 H2 快速体验。
直接启动:
./bin/startup.sh
启动后 SkyWalking 后端默认监听 11800(gRPC)和 12800(HTTP)端口。
检查日志 logs/skywalking-oap-server.log,确认无报错。
配置 Agent 并接入 Spring Boot 应用
SkyWalking 通过 Agent 方式无侵入接入应用。
找到解压目录下的 agent 文件夹,里面包含 skywalking-agent.jar。
在你的 Spring Boot 应用启动参数中加入以下配置(以命令行运行为例):
-javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar
-Dskywalking.agent.service_name=my-demo-app
-Dskywalking.collector.backend_service=127.0.0.1:11800
其中 service_name 是自定义的应用名,backend_service 指向 SkyWalking 后端地址。
如果应用打包成 jar,启动命令类似:
java -javaagent:/opt/.../skywalking-agent.jar -Dskywalking.agent.service_name=order-service -jar order-service.jar
如果你的应用部署在 Tomcat 或 Spring Boot 的容器中,可以在 JVM 参数里加上这些配置。
避坑指南:常见问题与处理
问题1:Agent 启动后应用报错连接超时
检查后端是否已启动,以及 backend_service 的端口是否写错。默认 gRPC 端口是 11800,不是 HTTP 端口 12800。
问题2:UI 页面无法访问
SkyWalking 的 UI 默认在 8080 端口,访问 http://服务器IP:8080。如果端口被占用,可以在 webapp/webapp.yml 中修改 server.port。
问题3:数据看不到应用实例
确保 Agent 版本和 OAP 后端版本匹配,大版本不一致会导致协议不兼容。
效果验证:查看链路追踪数据
启动应用后,模拟用户请求(比如调用一个 REST 接口)。
然后打开 SkyWalking UI(http://localhost:8080),左侧导航点击“拓扑图”,可以看到应用节点。
如果想看具体调用链,点击“追踪”菜单,选择时间范围,就能看到每条请求的详细 Span 列表,包括耗时、数据库调用、异常信息等。
你可以继续接入更多微服务,并在 SkyWalking 中观察服务之间的调用关系和响应时间,快速定位慢请求。
高频问题解答
Q:SkyWalking 只能监控 Java 应用吗?
不一定,官方提供 Java、.NET、Node.js、Python 等语言的 Agent,但本文主要讲解 Java。
Q:如何持久化存储链路数据?
默认 H2 重启后数据丢失。生产环境建议集成 Elasticsearch,在 application.yml 中修改 storage.selector 为 elasticsearch 并配置 ES 地址。
Q:Agent 对应用性能影响大吗?
正常使用影响很小(一般 <5%),不会导致业务中断。
如果你正在处理 SkyWalking 链路追踪,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。