SkyWalking分布式系统监控平台Docker Compose部署指南
2025-07-05 05:52:53作者:廉皓灿Ida
概述
SkyWalking是一个开源的分布式系统监控平台,专门为微服务、云原生和容器化架构设计。本文将通过Docker Compose的方式,详细讲解如何快速部署SkyWalking监控系统。
部署架构
SkyWalking的Docker Compose部署包含以下核心组件:
- OAP(Observability Analysis Platform) - 核心分析平台,负责数据收集、聚合和分析
- UI - 可视化界面,展示监控数据
- 存储后端 - 支持Elasticsearch或BanyanDB两种存储方案
准备工作
在开始部署前,请确保系统已安装:
- Docker 19.03+
- Docker Compose 1.27+
配置文件详解
网络配置
networks:
demo:
定义了一个名为demo
的Docker网络,所有服务将加入此网络以便相互通信。
存储服务配置
Elasticsearch选项
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.4.2
ports:
- "9200:9200"
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
配置了一个单节点的Elasticsearch服务,限制JVM堆内存为512MB,适合测试环境使用。
BanyanDB选项
banyandb:
image: apache/skywalking-banyandb
ports:
- 17913:17913
command: standalone --stream-root-path /tmp/stream-data --measure-root-path /tmp/measure-data
BanyanDB是SkyWalking团队开发的专用时序数据库,为监控数据优化设计。
OAP服务配置
oap-base: &oap-base
image: apache/skywalking/oap:latest
ports:
- "11800:11800" # gRPC端口,用于接收探针数据
- "12800:12800" # HTTP端口,用于REST API和UI访问
environment: &oap-env
SW_HEALTH_CHECKER: default
SW_TELEMETRY: prometheus
JAVA_OPTS: "-Xms2048m -Xmx2048m"
OAP服务有两个变体,分别对应不同的存储后端:
- Elasticsearch版本:
oap-es:
environment:
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
- BanyanDB版本:
oap-bdb:
environment:
SW_STORAGE: banyandb
SW_STORAGE_BANYANDB_TARGETS: banyandb:17912
UI服务配置
ui:
image: apache/skywalking/ui:latest
ports:
- "8080:8080"
environment:
SW_OAP_ADDRESS: http://oap:12800
UI服务通过8080端口提供Web界面,需要连接到OAP服务的12800端口。
部署步骤
- 创建并启动Elasticsearch版本:
docker-compose --profile elasticsearch up -d
- 创建并启动BanyanDB版本:
docker-compose --profile banyandb up -d
- 验证服务状态:
docker-compose ps
健康检查机制
各服务都配置了健康检查:
- Elasticsearch:通过
/_cluster/health
API检查 - BanyanDB:检查17912端口是否可用
- OAP:通过
/internal/l7check
端点检查
资源调优建议
-
生产环境:
- 增加Elasticsearch的JVM堆内存(至少4GB)
- 考虑使用Elasticsearch集群而非单节点
- 调整OAP的JVM参数(示例中为2GB)
-
数据保留:
- 对于Elasticsearch,可通过索引生命周期管理(ILM)控制数据保留
- BanyanDB可通过配置TTL管理数据过期
常见问题
-
端口冲突:
- 确保9200(ES)、8080(UI)、11800/12800(OAP)端口未被占用
-
内存不足:
- 如遇到OOM错误,适当增加JVM参数
-
启动顺序:
- 依赖服务(存储)会先启动,确保健康检查通过后OAP才会启动
总结
通过Docker Compose部署SkyWalking是一种快速搭建监控系统的方式,特别适合开发测试环境。生产环境建议根据实际负载调整资源配置,并考虑高可用部署方案。