基于Docker Compose一键部署SkyWalking+BanyanDB全链路监控平台

张开发
2026/4/8 10:11:29 15 分钟阅读

分享文章

基于Docker Compose一键部署SkyWalking+BanyanDB全链路监控平台
1. 为什么选择Docker Compose部署SkyWalkingBanyanDB全链路监控已经成为现代分布式系统不可或缺的组成部分。SkyWalking作为一款开源的APM应用性能监控系统配合BanyanDB这个专为可观测性场景优化的时序数据库能够提供从基础设施到应用层的全方位监控能力。但传统的手动部署方式往往面临组件依赖复杂、配置繁琐等问题这正是Docker Compose的用武之地。我去年在金融行业的一个微服务项目中就深有体会。当时团队需要为30多个微服务搭建监控平台如果按照传统方式逐个部署SkyWalking组件至少需要2天时间。而改用Docker Compose后整个部署过程缩短到20分钟。这种效率提升在紧急故障排查时尤其宝贵——当生产环境出现性能问题时你能快速拉起一套完整的监控系统。Docker Compose的核心优势在于环境一致性所有组件版本和配置都被固化在YAML文件中依赖管理自动处理服务启动顺序和网络连接一键操作单条命令即可启动/停止整个监控系统资源隔离与宿主机环境解耦避免依赖冲突2. 部署前的准备工作2.1 硬件与软件需求根据我的实测经验要流畅运行这套监控系统建议配置CPU至少4核处理OAP的聚合分析内存不低于8GBBanyanDB比较吃内存磁盘100GB以上SSD存储监控数据操作系统支持Docker的Linux发行版推荐Ubuntu 22.04软件方面需要提前安装# 安装Docker引擎 curl -fsSL https://get.docker.com | sh # 安装Docker Compose插件 sudo apt-get install docker-compose-plugin2.2 网络与端口规划这几个端口必须确保可用11800SkyWalking Agent上报端口12800OAP服务通信端口17913BanyanDB服务端口8080UI访问端口在企业内网部署时我遇到过防火墙阻断的问题。建议先用telnet测试端口连通性telnet localhost 118003. 编写Docker Compose文件3.1 基础服务定义这是我优化过的docker-compose.yml模板version: 3.8 services: banyandb: image: apache/skywalking-banyandb:latest container_name: banyandb ports: - 17913:17913 command: standalone --stream-root-path /data/stream --measure-root-path /data/measure volumes: - banyandb_data:/data ulimits: nofile: 65535 oap: image: apache/skywalking-oap-server:latest container_name: oap depends_on: - banyandb ports: - 11800:11800 - 12800:12800 environment: SW_STORAGE: banyandb SW_STORAGE_BANYANDB_TARGETS: banyandb:17912 JAVA_OPTS: -Xms4g -Xmx4g volumes: - ./config/application.yml:/skywalking/config/application.yml - /etc/localtime:/etc/localtime ulimits: nofile: 65535 ui: image: apache/skywalking-ui:latest container_name: ui depends_on: - oap ports: - 8080:8080 environment: SW_OAP_ADDRESS: http://oap:12800 volumes: banyandb_data:3.2 关键配置解析存储配置BanyanDB使用本地卷持久化数据OAP通过SW_STORAGE环境变量指定存储类型性能调优设置ulimit防止Too many open files错误给OAP分配4GB堆内存根据实际负载调整时区同步挂载/etc/localtime保证日志时间准确4. 启动与验证4.1 一键启动服务docker compose up -d启动后建议检查日志docker logs -f oap4.2 访问监控界面SkyWalking UIhttp://localhost:8080BanyanDB状态通过OAP日志查看连接状态第一次访问UI可能会显示无数据这是因为还没有接入应用。可以先用自带的气象站demo测试docker run --name demo-app --link oap:oap -e SW_AGENT_COLLECTOR_BACKEND_SERVICESoap:11800 apache/skywalking-demo:latest5. 应用接入实战5.1 Java应用接入在Spring Boot项目中通过agent方式接入java -javaagent:/path/to/skywalking-agent.jar \ -Dskywalking.agent.service_nameyour-service \ -Dskywalking.collector.backend_servicelocalhost:11800 \ -jar your-app.jar5.2 Kubernetes环境接入使用initContainer注入agentinitContainers: - name: skywalking-agent image: apache/skywalking-java-agent:latest command: [cp, -r, /skywalking/agent, /shared] volumeMounts: - name: shared-volume mountPath: /shared6. 常见问题排查OAP启动失败检查application.yml是否存在验证BanyanDB连接状态查看JVM内存是否不足UI无数据确认agent配置正确检查11800端口连通性查看OAP日志是否有处理错误性能问题调整OAP的JVM参数考虑集群化部署优化BanyanDB的存储配置这套方案已经在多个生产环境稳定运行。记得定期备份BanyanDB的数据卷监控数据是无价的资产。当需要升级版本时先在一个测试环境验证新的docker-compose配置确保数据兼容性后再在生产环境实施。

更多文章