如何基于docker 部署Skywalking

 更新时间:2025年09月03日 11:45:08   作者:搞不懂语言的程序员  
文章详解使用Docker部署SkyWalking,涵盖Elasticsearch单节点配置、OAPServer与UI服务的镜像选择、端口映射及依赖关系,以及客户端Agent集成方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

创建网络

docker network create skywalking-network

docker compose 安装SkyWalking

docker-compose.yaml文件

version: "3"
services:
  # SkyWalking OAP server with Elasticsearch storage
  skywalking-oap:
    image: apache/skywalking-oap-server:8.9.0
    container_name: skywalking-oap
    ports:
      - "12800:12800"
      - "11800:11800"
    networks:
      - skywalking-network
    depends_on:
      skywalking-elasticsearch:
        condition: service_healthy  # 等待ES健康检查
    environment:
      - SW_STORAGE=elasticsearch
      - TZ=Asia/Shanghai
      - SW_STORAGE_ES_CLUSTER_NODES=skywalking-elasticsearch:9200
    #volumes:
    #  - ./oap-config:/skywalking/config # 挂载本地目录到容器中
  # Elasticsearch
  skywalking-elasticsearch:
    image: elasticsearch:7.16.3
    container_name: skywalking-elasticsearch
    ports:
      - "19200:9200"
      - "19300:9300"
    networks:
      - skywalking-network
    environment:
      - discovery.type=single-node
      - TZ=Asia/Shanghai
      - ingest.geoip.downloader.enabled=false  # 禁用GeoIP下载
    healthcheck: # 添加健康检查
      test: [ "CMD-SHELL", "curl -s http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"'" ]
      interval: 10s
      timeout: 10s
      retries: 20
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    mem_limit: 2g
    #volumes:
    #  - ./es-data:/usr/share/elasticsearch/data/nodes # 挂载本地目录到容器中
  # SkyWalking UI
  skywalking-ui:
    image: apache/skywalking-ui:8.9.0
    container_name: skywalking-ui
    ports:
      - "18080:8080"
    networks:
      - skywalking-network
    environment:
      - SW_OAP_ADDRESS=http://skywalking-oap:12800
      - TZ=Asia/Shanghai
    volumes:
      - ./ui-config:/app/config # 挂载本地目录到容器中
networks:
  skywalking-network:
    external:
      name: skywalking-network

详细说明

  • Elasticsearch 服务
    • 使用 elasticsearch:7.14.0 镜像。
    • 启用单节点模式,设置 JVM 参数以优化内存使用。
    • 启用安全功能,设置 elastic 用户的密码。
    • 挂载卷 elasticsearch-data 以持久化数据。
    • 映射端口 19200 和 19300。
  • SkyWalking OAP Server 服务
    • 使用 apache/skywalking-oap-server:8.6.0-es7 镜像。
    • 配置 Elasticsearch 作为存储,设置集群节点地址、用户名和密码。
    • 映射端口 11800 和 12800。
    • 依赖于 Elasticsearch 服务。
  • SkyWalking UI 服务
    • 使用 apache/skywalking-ui:8.6.0 镜像。
    • 配置 OAP Server 的地址。
    • 映射端口 18080。
    • 依赖于 OAP Server 服务。
  • 网络和卷
    • 定义了一个名为 skywalking-net 的桥接网络,确保所有服务在同一网络中。
    • 定义了一个卷 elasticsearch-data,用于持久化 Elasticsearch 的数据。

启动服务

在包含 docker-compose.yml 文件的目录中运行以下命令启动服务:

docker compose up -d

验证

检查 Elasticsearch 是否正常运行

curl -u elastic:elastic http://127.0.0.1:19200

检查 OAP Server 是否正常运行
查看 OAP Server 的日志,确认它是否成功连接到 Elasticsearch:

docker logs skywalking-oap

访问 SkyWalking UI
打开浏览器,访问 http://172.30.112.19:18080,您应该能够看到 SkyWalking 的界面。

2. 客户端代码集成

2.1 下载 SkyWalking Agent

从 SkyWalking 官方网站下载对应版本的 Agent。

wget https://archive.apache.org/dist/skywalking/8.6.0/apache-skywalking-apm-8.6.0.tar.gz
tar -xvzf apache-skywalking-apm-8.6.0.tar.gz
cd apache-skywalking-apm-bin

2.2 配置 SkyWalking Agent

编辑 agent/config/agent.config 文件,配置以下参数:

# SkyWalking Agent 名称
SW_AGENT_NAME=springboot-skywalking-demo
# Collector 服务地址
SW_AGENT_COLLECTOR_BACKEND_SERVICES=172.30.112.19:11800
# 链路的最大 Span 数量
SW_AGENT_SPAN_LIMIT=2000

2.3 启动应用

在启动 Spring Boot 应用时,通过 -javaagent 参数指定 SkyWalking Agent 的路径。

java -javaagent:/path/to/skywalking-agent.jar \
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=172.30.112.19:11800 \
-DSW_AGENT_NAME=springboot-skywalking-demo \
-jar your-springboot-app.jar

jar包地址(官网):https://skywalking.apache.org/downloads/
阿里云:https://mirrors.aliyun.com/apache/skywalking/

运行起来就是这样

自己可以进行调用,然后记得修改时间(有的版本在下面):

使用文档

SkyWalking UI 使用文档

SkyWalking UI 提供了丰富的功能,用于监控和分析分布式系统的性能和调用链路。以下是 SkyWalking UI 的主要功能和使用方法:

1.仪表盘 (Dashboard)

仪表盘提供了全局和当前服务的运行状态和监控指标,包括:

  • 调用热力图 (Calls HeatMap):显示请求数量和响应时间。
  • 应用平均告警 (Avg Application Alarm):显示应用的告警信息。
  • 慢服务 (Slow Service):显示响应时间最长的服务。
  • 应用吞吐量 (Application Throughput):显示每分钟的调用次数 (CPM)。

2.拓扑图 (Topology)

拓扑图以图形化方式展示服务之间的依赖关系和调用链路,包括:

  • 拓扑结构图 (Topology Map):显示服务之间的调用关系。
  • 概览 (Overview):显示服务的总体运行状态。
  • SLA (Service Level Agreement):显示服务的可用率。
  • 每分钟调用 (Calls Per Minute):显示每分钟的调用次数。
  • 平均响应时间 (Avg Response Time):显示服务的平均响应时间。

3.服务 (Service)

服务页面提供了特定服务的详细信息,包括:

  • 平均吞吐量 (Avg Throughput):显示服务的平均吞吐量。
  • 平均响应时间 (Avg Response Time):显示服务的平均响应时间。
  • 平均可用率 (Avg SLA):显示服务的平均可用率。
  • 依赖图 (Dependency Map):显示服务的依赖关系。

4.端点 (Endpoint)

端点页面提供了特定端点的详细调用数据,包括:

  • 调用次数 (Call Count):显示端点的调用次数。
  • 平均响应时间 (Avg Response Time):显示端点的平均响应时间。
  • 错误率 (Error Rate):显示端点的错误率。
  • 调用链路 (Trace):显示端点的调用链路。

5.追踪 (Trace)

追踪页面提供了具体的调用链路数据,包括:

  • Trace ID:唯一标识一次调用的 ID。
  • 调用链路:显示每次调用的详细链路,包括每个节点的响应时间、调用顺序等。

6.性能剖析 (Performance Analysis)

性能剖析页面提供了对特定端点的性能分析,包括:

  • 采样分析:对端点进行采样分析,查看详细的堆栈信息。
  • 任务列表:显示当前的性能分析任务。
  • 任务详情:查看任务的详细信息,包括实例信息、操作类型、操作时间等。

7.日志 (Log)

日志页面提供了服务的日志信息,包括:

  • 服务日志:显示服务的日志信息。
  • 浏览器日志:显示浏览器的日志信息。
  • 追踪 ID:通过追踪 ID 查看跨服务的整体流程日志。

8.告警 (Alarm)

告警页面展示了触发告警的列表,包括:

  • 实例告警:显示实例相关的告警信息。
  • 请求超时:显示请求超时相关的告警信息。

9.事件 (Event)

事件页面展示了服务实例的启动和端点的调用等事件信息。

10.时间选择器 (Time Selector)

时间选择器用于设定统计指标的时间范围,所有指标数据展示都依赖于这个时间范围。

官方文档

SkyWalking 的官方文档提供了详细的使用指南和配置说明,建议参考以下链接:

通过这些功能和文档,您可以全面监控和分析分布式系统的性能和调用链路,快速定位和解决性能问题。

到此这篇关于如何基于docker 部署Skywalking的文章就介绍到这了,更多相关docker 部署Skywalking内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker容器化spring boot应用详解

    Docker容器化spring boot应用详解

    本篇文章主要介绍了Docker容器化spring boot应用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Docker 进阶之镜像分层方案详解

    Docker 进阶之镜像分层方案详解

    这篇文章主要介绍了Docker 进阶之镜像分层详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • docker 安装部署多个MySQL的实现步骤

    docker 安装部署多个MySQL的实现步骤

    本文主要介绍了docker 安装部署多个MySQL的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 使用Docker部署Filestash文件管理器的实现步骤

    使用Docker部署Filestash文件管理器的实现步骤

    Filestash是一款功能强大的网络文件管理工具,它允许用户在单一界面下管理分布于不同地点和平台的数据,本文就来介绍一下Docker部署Filestash文件管理器的实现步骤,感兴趣的可以了解一下
    2025-07-07
  • Docker 文件系统-AUFS 原理介绍

    Docker 文件系统-AUFS 原理介绍

    这篇文章主要介绍了Docker 文件系统-AUFS原理,Docker 主要是基于 Namespace、cgroups 和联合文件系统这三大核心技术实现的,下文相关内容需要的小伙伴可以参考一下
    2022-04-04
  • docker-compose部署mysql数据库完整步骤

    docker-compose部署mysql数据库完整步骤

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排,这篇文章主要给大家介绍了关于docker-compose部署mysql数据库的完整步骤,需要的朋友可以参考下
    2024-05-05
  • Docker使用格式化输出与排序的技巧分享

    Docker使用格式化输出与排序的技巧分享

    Docker 作为当今最流行的容器化技术之一,其命令行工具提供了强大的功能来管理容器镜像,本文给大家介绍了Docker使用格式化输出与排序的技巧,需要的朋友可以参考下
    2025-05-05
  • 使用docker搭建sonarqube的方法

    使用docker搭建sonarqube的方法

    这篇文章主要介绍了使用docker搭建sonarqube的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • docker如何将jar包生成镜像并将宿主机目录挂载

    docker如何将jar包生成镜像并将宿主机目录挂载

    这篇文章主要介绍了docker如何将jar包生成镜像并将宿主机目录挂载问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • docker容器增加端口映射全过程(修改配置文件方式)

    docker容器增加端口映射全过程(修改配置文件方式)

    文章详细描述了如何通过修改Docker容器的配置文件来增加端口映射,以解决已经运行的容器需要增加端口映射的问题,以MySQL容器为例进行了具体操作步骤的说明
    2024-11-11

最新评论