插件窝 干货文章 Docker搭建Skywalking的实现示例

Docker搭建Skywalking的实现示例

Skywalking Elasticsearch Docker OAP 714    来源:    2025-04-01

Docker搭建Skywalking实现指南

Skywalking是一款优秀的分布式系统性能监控工具,下面我将详细介绍如何使用Docker快速搭建Skywalking环境。

一、Skywalking组件架构

Skywalking主要包含以下组件: - OAP Server:负责数据接收、分析和存储 - Storage:数据存储(支持ES/H2/MySQL等) - UI:可视化界面 - Agent:应用探针,收集数据

二、Docker快速部署方案

方案1:使用官方Docker镜像(推荐)

# 创建专用网络
docker network create skywalking-net

# 部署Elasticsearch作为存储
docker run -d --name elasticsearch \
  --network skywalking-net \
  -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  elasticsearch:7.9.0

# 部署Skywalking OAP Server
docker run -d --name oap \
  --network skywalking-net \
  -p 11800:11800 -p 12800:12800 \
  -e SW_STORAGE=elasticsearch7 \
  -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
  apache/skywalking-oap-server:8.7.0

# 部署Skywalking UI
docker run -d --name skywalking-ui \
  --network skywalking-net \
  -p 8080:8080 \
  -e SW_OAP_ADDRESS=oap:12800 \
  apache/skywalking-ui:8.7.0

方案2:使用Docker Compose

创建docker-compose.yml文件:

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.9.0
    container_name: elasticsearch
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      discovery.type: single-node
      ES_JAVA_OPTS: -Xms512m -Xmx512m
    networks:
      - skywalking-net

  oap:
    image: apache/skywalking-oap-server:8.7.0
    container_name: oap
    depends_on:
      - elasticsearch
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_STORAGE: elasticsearch7
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
    networks:
      - skywalking-net

  ui:
    image: apache/skywalking-ui:8.7.0
    container_name: skywalking-ui
    depends_on:
      - oap
    ports:
      - 8080:8080
    environment:
      SW_OAP_ADDRESS: oap:12800
    networks:
      - skywalking-net

networks:
  skywalking-net:
    driver: bridge

启动服务:

docker-compose up -d

三、配置应用探针

Java应用配置

  1. 下载Skywalking Agent:
wget https://archive.apache.org/dist/skywalking/java-agent/8.7.0/apache-skywalking-java-agent-8.7.0.tgz
tar -zxvf apache-skywalking-java-agent-8.7.0.tgz
  1. 启动Java应用时添加JVM参数:
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \
  -Dskywalking.agent.service_name=your-service-name \
  -Dskywalking.collector.backend_service=oap-server-ip:11800 \
  -jar your-application.jar

四、验证部署

  1. 访问Skywalking UI:http://localhost:8080
  2. 检查OAP Server日志:
docker logs -f oap
  1. 检查Elasticsearch数据:
curl http://localhost:9200/_cat/indices?v

五、常见问题解决

1. 内存不足问题

如果ES或OAP因内存不足崩溃,可以调整JVM参数:

# 对于ES
environment:
  ES_JAVA_OPTS: -Xms1g -Xmx1g

# 对于OAP
environment:
  SW_JAVA_OPTS: -Xms1g -Xmx1g

2. 存储选择

除了ES,Skywalking还支持其他存储: - H2(默认,仅测试用) - MySQL - TiDB - InfluxDB

例如使用MySQL:

environment:
  SW_STORAGE: mysql
  SW_JDBC_URL: "jdbc:mysql://mysql:3306/swtest"
  SW_DATA_SOURCE_USER: root
  SW_DATA_SOURCE_PASSWORD: root

3. 性能调优

对于生产环境,建议: - 增加OAP实例数量 - 使用集群版ES - 调整OAP处理线程数:

environment:
  SW_CORE_GRPC_THREAD_POOL_SIZE: 4
  SW_CORE_REST_THREAD_POOL_SIZE: 4

六、高级配置

1. 自定义告警规则

挂载自定义alarm-settings.yml

volumes:
  - ./config/alarm-settings.yml:/skywalking/config/alarm-settings.yml

2. 持久化数据

对于生产环境,建议挂载数据卷:

volumes:
  - es_data:/usr/share/elasticsearch/data

volumes:
  es_data:

通过以上步骤,您已经成功使用Docker搭建了Skywalking监控系统。根据实际需求,您可以进一步调整配置和扩展组件。