Apache SkyWalking轻量级部署:单机版快速启动指南
1. 痛点与解决方案
你是否在部署分布式追踪系统时遇到以下问题:
- 复杂的多组件依赖配置耗费数小时
- 资源占用过高导致开发环境卡顿
- 文档分散难以快速上手
本文将提供一套15分钟内可完成的单机版部署方案,通过Docker容器化技术消除环境依赖,只需3步即可搭建完整的APM(Application Performance Monitoring,应用性能监控)系统。
2. 部署前准备
2.1 环境要求
| 组件 | 最低版本 | 推荐配置 |
|---|---|---|
| Docker | 20.10.x | 24.0.0+ |
| Docker Compose | v2.0.0 | v2.20.0+ |
| 内存 | 4GB | 8GB+ |
| CPU | 2核 | 4核+ |
| 磁盘空间 | 10GB | 20GB SSD |
2.2 环境验证
# 验证Docker安装
docker --version && docker compose version
# 预期输出示例
Docker version 24.0.6, build ed223bc
Docker Compose version v2.21.0
3. 三种部署方式对比
| 部署方式 | 操作难度 | 启动时间 | 资源占用 | 适用场景 |
|---|---|---|---|---|
| 源码编译 | ★★★★☆ | 30-60分钟 | 高 | 二次开发 |
| 二进制包 | ★★★☆☆ | 10-15分钟 | 中 | 生产环境 |
| Docker容器 | ★☆☆☆☆ | 5-8分钟 | 中 | 开发/测试/演示 |
本文聚焦Docker容器化部署,这是目前最快捷的单机部署方案。
4. 快速部署步骤
4.1 获取项目代码
# 克隆代码仓库
git clone https://gitcode.com/gh_mirrors/sky/skywalking.git
cd skywalking
4.2 构建Docker镜像
# 构建OAP服务器和UI镜像(跳过测试加速构建)
make docker SKIP_TEST=true
# 验证镜像构建结果
docker images | grep skywalking
成功构建后将显示两个镜像:
skywalking/oap:latest- 后端分析服务器skywalking/ui:latest- 前端可视化界面
4.3 启动服务集群
# 进入Docker配置目录
cd docker
# 使用Elasticsearch存储启动(推荐生产环境)
docker compose --profile elasticsearch up -d
# 或使用BanyanDB存储(轻量级,适合资源受限环境)
# docker compose --profile banyandb up -d
5. 服务验证与访问
5.1 容器状态检查
# 查看运行中的容器
docker compose ps
# 预期输出应包含以下状态为Up的服务:
# elasticsearch (或banyandb)
# oap
# ui
5.2 服务健康检查
# 检查OAP服务器健康状态
curl http://localhost:12800/health
# 预期输出:{"status":"UP"}
5.3 访问Web界面
打开浏览器访问:http://localhost:8080
首次访问将显示默认仪表盘,包含:
- 服务拓扑图
- 性能指标概览
- 追踪数据查询入口
6. 核心配置说明
6.1 端口映射说明
| 端口 | 组件 | 用途 |
|---|---|---|
| 11800 | OAP | gRPC数据接收端口 |
| 12800 | OAP | HTTP API端口 |
| 8080 | UI | Web界面访问端口 |
| 9200 | Elasticsearch | 存储服务端口(仅ES模式) |
6.2 自定义配置
通过修改docker/.env文件调整关键参数:
# 编辑环境变量配置
vi docker/.env
# 关键配置项说明
OAP_IMAGE=skywalking/oap:latest # OAP镜像版本
UI_IMAGE=skywalking/ui:latest # UI镜像版本
ES_VERSION=8.10.4 # Elasticsearch版本
STORAGE=elasticsearch # 存储类型(elasticsearch/banyandb)
修改后需重启服务:
docker compose --profile elasticsearch down
docker compose --profile elasticsearch up -d
7. 应用接入示例
7.1 Java应用接入
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=localhost:11800 \
-jar your-application.jar
7.2 服务发现验证
接入应用后,在UI界面执行以下步骤验证:
- 访问服务列表页面(左侧菜单:
服务 -> 服务列表) - 确认你的服务名出现在列表中
- 点击服务名查看详情指标
8. 故障排查指南
8.1 常见问题解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| UI无法访问 | 端口冲突 | 检查8080端口占用,修改docker-compose.yml中UI端口映射 |
| OAP启动失败 | 内存不足 | 增加JVM堆内存:修改OAP_JVM_OPTS环境变量 |
| 无数据显示 | 代理配置错误 | 检查agent.service_name和collector.backend_service配置 |
8.2 日志查看
# 查看OAP服务器日志
docker compose logs -f oap
# 查看UI日志
docker compose logs -f ui
# 查看Elasticsearch日志
docker compose logs -f elasticsearch
9. 服务停止与清理
9.1 停止服务
# 停止所有服务(保留数据)
docker compose --profile elasticsearch down
# 停止并清理数据卷(彻底重置)
docker compose --profile elasticsearch down -v
9.2 资源清理
# 删除构建的镜像(如需重新构建时使用)
docker rmi skywalking/oap:latest skywalking/ui:latest
10. 进阶部署建议
10.1 数据持久化配置
为防止容器重启导致数据丢失,建议配置外部数据卷:
# 在docker-compose.yml中添加自定义卷配置
volumes:
elasticsearch-data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/path/to/your/elasticsearch/data'
10.2 性能优化参数
编辑.env文件添加以下优化配置:
# OAP性能优化
OAP_JVM_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC"
# ES存储优化(仅ES模式)
ES_JVM_OPTS="-Xms2g -Xmx2g"
11. 总结与后续学习
通过本文方案,你已成功部署:
- 完整的SkyWalking APM单机环境
- 容器化的服务管理方式
- 基础的应用接入能力
推荐后续学习路径:
- 数据采集深入:学习如何配置不同语言的代理(Agent)
- 告警规则配置:通过
alarm-settings.yml设置业务告警阈值 - 分布式追踪:分析调用链数据定位性能瓶颈
- 集群部署:参考官方文档扩展为生产级集群
扩展资源:
- 官方文档:https://skywalking.apache.org/docs/
- 配置示例:
dist-material/config-examples/ - 常见问题:
docs/en/FAQ/
点赞 + 收藏 本文,关注作者获取更多SkyWalking实战技巧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



