【SkyWalking从入门到精通】第09篇:SkyWalking安装全攻略——5分钟跑起来你的第一个APM系统

📅 2026/7/7 2:51:37 👁️ 阅读次数 📝 编程学习
【SkyWalking从入门到精通】第09篇:SkyWalking安装全攻略——5分钟跑起来你的第一个APM系统

上一篇【第08篇】Service Mesh入门——下一代微服务通信架构你了解多少
下一篇【第10篇】SkyWalking工程结构深度解读——源码里藏着什么宝贝


摘要

理论说了一大堆,是时候动手了!本篇是一篇实操性极强的安装指南,带你从零开始搭起SkyWalking的完整运行环境。你会选择:方式A(下载发行包,5分钟搞定)方式B(编译源码,更深入)。无论哪种方式,本篇都给你完整的步骤,保证你看完就能跑起来。另外特别提醒:默认H2存储的"坑",是新手最容易踩的——本篇提前帮你避开。


一、环境准备

在开始之前,确认你的机器上有以下环境:

依赖最低版本说明
JDK1.8+运行OAP和Agent的基础
Maven3.6+仅编译源码时需要
Git任意仅克隆源码时需要
可用内存4GB+OAP需要至少1-2GB堆内存

二、方式A:下载发行包(推荐新手)

这是最快的方式,适合快速体验SkyWalking的核心功能。

步骤1:下载发行包

访问 SkyWalking 官方下载页面:

  • https://skywalking.apache.org/downloads/
  • 选择最新版本的Distribution包(不是源码包)
  • 下载apache-skywalking-apm-x.y.z.tar.gz
# 或者直接命令行下载(版本号请替换为最新版)wgethttps://archive.apache.org/dist/skywalking/9.3.0/apache-skywalking-apm-9.3.0.tar.gz# 解压tar-xzfapache-skywalking-apm-9.3.0.tar.gzcdapache-skywalking-apm-bin

步骤2:了解目录结构

apache-skywalking-apm-bin/ ├── agent/ ← Java Agent(挂载到你的应用) │ ├── skywalking-agent.jar │ ├── config/ │ │ └── agent.config ← Agent配置文件 │ ├── plugins/ ← 内置插件(Spring/Dubbo/Redis等) │ └── optional-plugins/ ← 可选插件(需手动激活) │ ├── bin/ ← 启动脚本 │ ├── startup.sh ← 一键启动OAP + UI │ ├── oapService.sh ← 单独启动OAP │ └── webappService.sh ← 单独启动UI │ ├── config/ ← OAP配置文件 │ └── application.yaml ← OAP核心配置(重点文件!) │ ├── oap-libs/ ← OAP运行时依赖的jar包 │ └── webapp/ ← Web UI相关文件 └── skywalking-webapp.jar

步骤3:一键启动

# Linux/Maccdapache-skywalking-apm-bin/bin ./startup.sh# Windowscdapache-skywalking-apm-bin\bin startup.bat

startup.sh会同时启动OAP Server和Web UI两个进程:

SkyWalking OAP started successfully! SkyWalking Web Application started successfully!

步骤4:验证运行正常

# 检查进程是否启动psaux|grepskywalking# 检查OAP端口(gRPC: 11800, HTTP: 12800)netstat-tlnp|grep11800netstat-tlnp|grep12800# 检查UI端口(默认8080)netstat-tlnp|grep8080

访问 http://localhost:8080,如果看到SkyWalking的UI界面,说明启动成功!


三、方式B:编译源码(深入学习推荐)

如果你想深入理解SkyWalking、进行二次开发,建议从源码编译开始。

步骤1:克隆源码

gitclone https://github.com/apache/skywalking.gitcdskywalking# 检出稳定版本(推荐,不用master分支)gitcheckout v9.3.0# 初始化子模块(重要!)gitsubmodule update--init

注意:git submodule update --init这一步很关键,SkyWalking有多个子模块(如UI、协议库),不执行这步会编译失败。

步骤2:编译项目

# 编译整个项目(跳过测试,节省时间)./mvnw clean package-DskipTests# 如果网络较慢,可以指定国内Maven镜像./mvnw clean package-DskipTests\-Dmaven.repo.remote=https://maven.aliyun.com/repository/central

编译时间根据机器配置不同,通常需要5-15分钟。耐心等待…

编译成功后,发行包在:

lsdist/# 包含 apache-skywalking-apm-*.tar.gz

步骤3:工程模块概览

skywalking/ ├── apm-sniffer/ ← Java探针核心 │ ├── apm-agent/ ← Agent启动入口 │ ├── apm-agent-core/ ← Agent核心框架 │ └── apm-sdk-plugin/ ← 所有内置插件 │ ├── oap-server/ ← OAP Server │ ├── server-core/ ← OAP核心框架 │ ├── server-receiver-plugin/ ← 各种Receiver插件 │ ├── server-storage-plugin/ ← 存储实现 │ └── server-starter/ ← OAP启动入口 │ ├── apm-application-toolkit/ ← 手动埋点SDK(可选) │ └── apm-webapp/ ← Web UI

四、快速验证:给Spring Boot应用挂上Agent

安装完SkyWalking后,把Agent挂到你的应用上验证是否工作。

准备一个简单的Spring Boot应用

# 如果没有现成的应用,下载SkyWalking官方的示例gitclone https://github.com/SkyAPMTest/skywalking-live-democdskywalking-live-demo

挂载Agent启动应用

java\-javaagent:/path/to/apache-skywalking-apm-bin/agent/skywalking-agent.jar\-Dskywalking.agent.service_name=my-spring-boot-demo\-Dskywalking.collector.backend_service=localhost:11800\-jaryour-app.jar

关键参数说明:

  • -javaagent:指定SkyWalking Agent的jar包路径
  • skywalking.agent.service_name:在SkyWalking中显示的服务名
  • skywalking.collector.backend_service:OAP Server的gRPC地址

发送几个请求,验证追踪

# 给你的应用发几个HTTP请求curlhttp://localhost:8080/api/some-endpointcurlhttp://localhost:8080/api/another-endpoint

然后打开 http://localhost:8080 查看SkyWalking UI,在"追踪"视图中应该能看到刚才的请求记录。


五、⚠️ 重要提醒:H2存储的大坑

SkyWalking默认使用H2内存数据库作为存储。H2是Java内置的轻量级数据库,非常适合快速体验。

但是,H2存储有一个重大限制

⚠️ H2存储的数据不持久化! OAP Server一旦重启,所有历史数据(Trace、指标、拓扑图)全部清空。

这对于快速验证功能没有问题,但绝对不适合生产环境或者你想保留历史数据的场景。

如何确认你当前用的是H2存储

查看config/application.yaml

storage:selector:${SW_STORAGE:h2}# 如果这里是h2,就是H2存储h2:driver:org.h2.jdbcx.JdbcDataSourceurl:jdbc:h2:mem:skywalking-oap-db# mem表示内存,重启即失user:sa

快速切换到MySQL存储(持久化)

storage:selector:${SW_STORAGE:mysql}# 改成mysqlmysql:properties:jdbcUrl:jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=truedataSource.user:rootdataSource.password:yourpassword

然后创建MySQL数据库(SkyWalking会自动创建表结构):

CREATEDATABASEswtestDEFAULTCHARACTERSETutf8mb4;

六、常见启动问题与解决

问题1:OAP启动后很快崩溃

查看日志:logs/skywalking-oap-service.log

常见原因:

  • 内存不足(增加JVM堆内存:编辑bin/oapService.sh,修改-Xmx参数)
  • 端口被占用(检查11800、12800端口是否已被占用)

问题2:UI访问8080无响应

查看日志:logs/webapp.log

常见原因:

  • UI的8080端口被占用
  • OAP未启动,UI连接OAP失败

修改UI端口:编辑webapp/application.yml

server:port:8081# 改成其他未被占用的端口

问题3:Agent挂载后,SkyWalking UI里看不到数据

检查清单:

  1. skywalking.collector.backend_service地址是否正确?
  2. OAP的11800端口是否能从Agent所在机器访问?
  3. Agent日志(agent/logs/skywalking-api.log)有没有错误信息?
  4. 应用是否确实在处理请求(空应用不会产生追踪数据)?

本篇小结

SkyWalking的安装非常简单:

  • 快速体验:下载发行包,执行startup.sh,5分钟内可以看到UI
  • 深入学习:克隆源码,./mvnw clean package -DskipTests,编译得到发行包
  • 接入应用:加上-javaagent参数,配置service_namebackend_service即可
  • 生产环境:必须替换H2存储为ES或MySQL,数据才能持久化

下一篇我们深入SkyWalking的工程结构,搞清楚每个模块的职责,为后续的源码学习打好基础。


上一篇【第08篇】Service Mesh入门——下一代微服务通信架构你了解多少
下一篇【第10篇】SkyWalking工程结构深度解读——源码里藏着什么宝贝