【SkyWalking从入门到精通】第09篇:SkyWalking安装全攻略——5分钟跑起来你的第一个APM系统
上一篇【第08篇】Service Mesh入门——下一代微服务通信架构你了解多少
下一篇【第10篇】SkyWalking工程结构深度解读——源码里藏着什么宝贝
摘要
理论说了一大堆,是时候动手了!本篇是一篇实操性极强的安装指南,带你从零开始搭起SkyWalking的完整运行环境。你会选择:方式A(下载发行包,5分钟搞定)或方式B(编译源码,更深入)。无论哪种方式,本篇都给你完整的步骤,保证你看完就能跑起来。另外特别提醒:默认H2存储的"坑",是新手最容易踩的——本篇提前帮你避开。
一、环境准备
在开始之前,确认你的机器上有以下环境:
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| JDK | 1.8+ | 运行OAP和Agent的基础 |
| Maven | 3.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.batstartup.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里看不到数据
检查清单:
skywalking.collector.backend_service地址是否正确?- OAP的11800端口是否能从Agent所在机器访问?
- Agent日志(
agent/logs/skywalking-api.log)有没有错误信息? - 应用是否确实在处理请求(空应用不会产生追踪数据)?
本篇小结
SkyWalking的安装非常简单:
- 快速体验:下载发行包,执行
startup.sh,5分钟内可以看到UI - 深入学习:克隆源码,
./mvnw clean package -DskipTests,编译得到发行包 - 接入应用:加上
-javaagent参数,配置service_name和backend_service即可 - 生产环境:必须替换H2存储为ES或MySQL,数据才能持久化
下一篇我们深入SkyWalking的工程结构,搞清楚每个模块的职责,为后续的源码学习打好基础。
上一篇【第08篇】Service Mesh入门——下一代微服务通信架构你了解多少
下一篇【第10篇】SkyWalking工程结构深度解读——源码里藏着什么宝贝
