首页
/ SkyWalking分布式系统监控平台Docker Compose部署指南

SkyWalking分布式系统监控平台Docker Compose部署指南

2025-07-05 05:52:53作者:廉皓灿Ida

概述

SkyWalking是一个开源的分布式系统监控平台,专门为微服务、云原生和容器化架构设计。本文将通过Docker Compose的方式,详细讲解如何快速部署SkyWalking监控系统。

部署架构

SkyWalking的Docker Compose部署包含以下核心组件:

  1. OAP(Observability Analysis Platform) - 核心分析平台,负责数据收集、聚合和分析
  2. UI - 可视化界面,展示监控数据
  3. 存储后端 - 支持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服务有两个变体,分别对应不同的存储后端:

  1. Elasticsearch版本
oap-es:
  environment:
    SW_STORAGE: elasticsearch
    SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
  1. 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端口。

部署步骤

  1. 创建并启动Elasticsearch版本:
docker-compose --profile elasticsearch up -d
  1. 创建并启动BanyanDB版本:
docker-compose --profile banyandb up -d
  1. 验证服务状态:
docker-compose ps

健康检查机制

各服务都配置了健康检查:

  • Elasticsearch:通过/_cluster/healthAPI检查
  • BanyanDB:检查17912端口是否可用
  • OAP:通过/internal/l7check端点检查

资源调优建议

  1. 生产环境

    • 增加Elasticsearch的JVM堆内存(至少4GB)
    • 考虑使用Elasticsearch集群而非单节点
    • 调整OAP的JVM参数(示例中为2GB)
  2. 数据保留

    • 对于Elasticsearch,可通过索引生命周期管理(ILM)控制数据保留
    • BanyanDB可通过配置TTL管理数据过期

常见问题

  1. 端口冲突

    • 确保9200(ES)、8080(UI)、11800/12800(OAP)端口未被占用
  2. 内存不足

    • 如遇到OOM错误,适当增加JVM参数
  3. 启动顺序

    • 依赖服务(存储)会先启动,确保健康检查通过后OAP才会启动

总结

通过Docker Compose部署SkyWalking是一种快速搭建监控系统的方式,特别适合开发测试环境。生产环境建议根据实际负载调整资源配置,并考虑高可用部署方案。