docker 部署Skywalking

发布于:2025-08-31 ⋅ 阅读:(18) ⋅ 点赞:(0)

创建网络

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

详细说明

  1. Elasticsearch 服务

    • 使用 elasticsearch:7.14.0 镜像。
    • 启用单节点模式,设置 JVM 参数以优化内存使用。
    • 启用安全功能,设置 elastic 用户的密码。
    • 挂载卷 elasticsearch-data 以持久化数据。
    • 映射端口 19200 和 19300。
  2. SkyWalking OAP Server 服务

    • 使用 apache/skywalking-oap-server:8.6.0-es7 镜像。
    • 配置 Elasticsearch 作为存储,设置集群节点地址、用户名和密码。
    • 映射端口 11800 和 12800。
    • 依赖于 Elasticsearch 服务。
  3. SkyWalking UI 服务

    • 使用 apache/skywalking-ui:8.6.0 镜像。
    • 配置 OAP Server 的地址。
    • 映射端口 18080。
    • 依赖于 OAP Server 服务。
  4. 网络和卷

    • 定义了一个名为 skywalking-net 的桥接网络,确保所有服务在同一网络中。
    • 定义了一个卷 elasticsearch-data,用于持久化 Elasticsearch 的数据。

启动服务

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

docker compose up -d

验证

  1. 检查 Elasticsearch 是否正常运行

    curl -u elastic:elastic http://127.0.0.1:19200
    
  2. 检查 OAP Server 是否正常运行
    查看 OAP Server 的日志,确认它是否成功连接到 Elasticsearch:

    docker logs skywalking-oap
    
  3. 访问 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 的官方文档提供了详细的使用指南和配置说明,建议参考以下链接:

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


网站公告

今日签到

点亮在社区的每一天
去签到