分布式链路追踪系统之docker-compose安装skywalking

发布时间:2026/9/22 4:56:52
分布式链路追踪系统之docker-compose安装skywalking 分布式链路追踪系统之docker-compose安装skywalking在微服务架构中分布式链路追踪是排查性能瓶颈和错误定位的核心工具。SkyWalking 作为 Apache 基金会旗下的开源 APM 系统以其轻量级、高性能和丰富的生态支持成为众多团队的首选。本文将从实战角度出发演示如何使用 docker-compose 快速搭建 SkyWalking 环境并集成一个简单的 Python 服务进行链路追踪。## 为什么选择 docker-compose 部署 SkyWalking在生产环境中SkyWalking 通常需要部署多个组件如 OAP 服务器、UI 面板、存储后端。使用 docker-compose 可以-一键启动所有组件避免手动配置依赖关系-环境隔离每个组件运行在独立容器中-快速扩展通过修改 YAML 文件即可调整资源或组件版本## 环境准备确保你的系统已安装以下软件- Docker (20.10)- Docker Compose (v2)可以通过以下命令验证bashdocker --versiondocker compose version## 第一步编写 docker-compose.yml 文件首先创建项目目录bashmkdir skywalking-docker cd skywalking-docker然后创建docker-compose.yml文件内容如下yamlversion: 3.8services: # Elasticsearch 作为存储后端 elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.10 container_name: skywalking-es environment: - discovery.typesingle-node # 单节点模式适合开发测试 - ES_JAVA_OPTS-Xms1g -Xmx1g # JVM 堆内存限制 - xpack.security.enabledfalse # 禁用安全认证 ports: - 9200:9200 networks: - skywalking volumes: - es_data:/usr/share/elasticsearch/data # 持久化数据 # SkyWalking OAP 服务负责数据收集与存储 oap: image: apache/skywalking-oap-server:9.6.0 container_name: skywalking-oap depends_on: - elasticsearch environment: - SW_STORAGEelasticsearch # 使用 ES 作为存储 - SW_STORAGE_ES_CLUSTER_NODESelasticsearch:9200 - SW_HEALTH_CHECKERdefault - SW_TELEMETRYprometheus # 启用 Prometheus 指标 ports: - 12800:12800 # gRPC 端口用于接收 Agent 数据 - 11800:11800 # HTTP 端口用于接收 HTTP 上报 networks: - skywalking restart: always # SkyWalking UI 面板 ui: image: apache/skywalking-ui:9.6.0 container_name: skywalking-ui depends_on: - oap environment: - SW_OAP_ADDRESSoap:12800 # 连接 OAP 的 gRPC 地址 ports: - 8080:8080 # Web 界面端口 networks: - skywalking restart: alwaysnetworks: skywalking: driver: bridgevolumes: es_data: driver: local### 配置说明-Elasticsearch作为 SkyWalking 的默认存储后端版本需与 OAP 兼容这里使用 7.17.10。-OAP 服务核心分析引擎通过环境变量SW_STORAGE指定存储类型。-UI 面板提供可视化界面通过SW_OAP_ADDRESS连接 OAP。-网络与卷所有服务通过skywalking网络通信ES 数据持久化到本地卷。## 第二步启动服务在项目目录下执行bashdocker compose up -d第一次启动会自动拉取镜像等待 1-2 分钟。检查服务状态bashdocker compose ps输出应显示三个服务均为Up状态。访问http://localhost:8080即可看到 SkyWalking UI 界面。## 第三步集成 Python 服务进行链路追踪为了验证链路追踪效果我们创建一个 Python 服务并使用 SkyWalking Python Agent 进行自动埋点。首先编写一个简单的 Flask 应用python# app.pyfrom flask import Flaskimport timeimport random# 导入 SkyWalking Python Agentfrom skywalking import agent, config# 配置 Agent 参数config.init( agent_collector_backend_services127.0.0.1:11800, # OAP HTTP 地址 agent_service_namepython-flask-service, # 服务名称 agent_instance_nameinstance-1, # 实例名称 agent_log_levelDEBUG # 调试日志级别)app Flask(__name__)app.route(/api/hello)def hello(): 简单的 GET 接口模拟业务逻辑 time.sleep(0.1) # 模拟耗时操作 return {message: Hello from SkyWalking!}app.route(/api/process)def process(): 模拟复杂处理流程 # 模拟数据库查询 time.sleep(0.2) # 模拟外部调用 if random.random() 0.5: time.sleep(0.3) # 模拟业务计算 result sum(range(1000)) return {result: result, status: success}if __name__ __main__: # 启动 Flask 应用并自动接入 SkyWalking agent.start() app.run(host0.0.0.0, port5000)### 安装依赖并运行创建requirements.txt文件flask3.0.0apache-skywalking0.9.0安装依赖并启动服务bashpip install -r requirements.txtpython app.py注意这里假设 Python 应用与 SkyWalking OAP 在同一台机器上运行通过127.0.0.1:11800通信。如果不在同一网络需要替换为 OAP 的实际 IP 地址。## 第四步生成测试流量并查看链路打开另一个终端使用 curl 发送请求bash# 发送简单的请求curl http://localhost:5000/api/hello# 发送处理请求多次执行以生成更多链路for i in {1..10}; do curl http://localhost:5000/api/process sleep 0.5done然后访问 SkyWalking UIhttp://localhost:8080在左侧菜单选择服务即可看到python-flask-service已经注册。点击进入后可以查看-拓扑图展示服务间的调用关系-追踪列表显示每个请求的完整链路耗时-指标包括响应时间、吞吐量、错误率等## 常见问题与优化### 1. Agent 无法连接 OAP检查agent_collector_backend_services地址是否正确。如果使用 Docker 网络Python 应用需要连接host.docker.internalWindows/Mac或宿主机 IPLinux。### 2. Elasticsearch 内存占用过高在docker-compose.yml中调整ES_JAVA_OPTS的-Xms和-Xmx值例如改为-Xms512m -Xmx512m。### 3. 数据清理策略SkyWalking 默认保留 7 天数据。如需调整在 OAP 环境变量中添加SW_CORE_GRPC_MAX_MESSAGE_SIZE10MSW_STORAGE_ES_INDEX_TTL_DAYS3 # 保留 3 天## 总结通过本文的实战演示我们成功使用 docker-compose 部署了 SkyWalking 的完整环境Elasticsearch OAP UI并集成了一个 Python Flask 应用进行链路追踪。整个过程只需要一个 YAML 文件和一个 Python 脚本充分体现了容器化部署的便捷性。核心要点回顾1.组件依赖OAP 需要先于 UI 启动ES 需要先于 OAP 启动通过depends_on控制顺序。2.网络配置所有服务使用同一个 Docker 网络确保容器间通信正常。3.Agent 集成Python 应用只需几行代码即可完成自动埋点零侵入性。4.可视化效果SkyWalking UI 提供了拓扑图、追踪详情、性能指标等丰富功能。在实际生产环境中建议使用更稳定的存储后端如 Elasticsearch 集群并配置健康检查。此外SkyWalking 还支持 Java、Go、Node.js 等多种语言的 Agent可轻松扩展到全栈链路追踪。希望本文能帮助你快速上手 SkyWalking为微服务监控打下坚实基础。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询