如何基于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搭建私有仓库之Harbor的步骤

    Docker搭建私有仓库之Harbor的步骤

    这篇文章主要介绍了Docker搭建私有仓库之Harbor的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 通过Docker运行AnythingLLM的方法

    通过Docker运行AnythingLLM的方法

    这篇文章主要介绍了通过Docker运行AnythingLLM的方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-12-12
  • Docker项目部署之从后端到前端部署详细流程

    Docker项目部署之从后端到前端部署详细流程

    在当今的软件开发领域,容器化技术已经成为了部署和管理应用程序的重要手段,下面这篇文章主要给大家介绍了关于Docker项目部署之从后端到前端部署的相关资料,需要的朋友可以参考下
    2024-08-08
  • Docker Registry 使用和部署方式

    Docker Registry 使用和部署方式

    Docker Registry是一个无状态、可扩展的服务器端应用程序,本文给大家介绍Docker Registry使用和部署方式,感兴趣的朋友一起看看吧
    2025-10-10
  • docker安装nginx并部署前端项目的全过程

    docker安装nginx并部署前端项目的全过程

    作为一个前端,代码写完,最后部署到服务器,这是一个必须要了解的过程,这篇文章主要给大家介绍了关于docker安装nginx并部署前端项目的相关资料,需要的朋友可以参考下
    2022-05-05
  • 为docker中的nginx配置https的方法步骤

    为docker中的nginx配置https的方法步骤

    这篇文章主要介绍了为docker中的nginx配置https的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • docker部署springboot项目实践(更新无需重新build)

    docker部署springboot项目实践(更新无需重新build)

    文章描述了使用Docker部署Spring Boot项目的另一种方式,通过在宿主机上挂载jar包路径,实现jar包的热更新,避免了每次更新都需要重新构建镜像的问题
    2026-01-01
  • Docker-compose离线安装全过程

    Docker-compose离线安装全过程

    下载docker-compose-Linux-x86_64并上传至CentOS7的/usr/local/bin目录,重命名为docker-compose,添加执行权限,最后通过版本命令测试安装是否成功
    2025-08-08
  • 如何使用cloudflare搭建私人docker镜像站

    如何使用cloudflare搭建私人docker镜像站

    这篇文章主要介绍了如何使用cloudflare搭建私人docker镜像站方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Docker教程之使用dockerfile生成镜像

    Docker教程之使用dockerfile生成镜像

    这篇文章主要介绍了Docker教程之使用dockerfile生成镜像的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论