尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
分布式链路追踪系统之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为微服务监控打下坚实基础。
RELATED

相关推荐

21231221

21231221

11 1111

📅 2026/9/18 5:09:03
大模型Function Calling机制:语义可执行性解析与实践

大模型Function Calling机制:语义可执行性解析与实践

1. Function Calling 机制解析:为什么"火星天气"会触发工具调用?在测试 Function Calling 功能时,我们发现一个有趣现象:当询问"火星天气"时,系统会正常调用天气查询工具,而输入"…

📅 2026/9/18 4:32:50
AI论文生成工具:从文献综述到学术写作的智能革命

AI论文生成工具:从文献综述到学术写作的智能革命

1. 项目背景与核心价值去年在学术圈混迹时,我发现一个有趣现象:身边80%的研究生都在为文献综述和论文初稿熬夜。直到某天实验室来了位访问学者,他演示了个自研的文本生成工具——15分钟产出3万字结构完整的学科综述,震惊全场。这让…

📅 2026/9/10 2:28:03
MORE NEWS

更多资讯

📰

Hugo 开发服务器配置指南:Server 配置下的响应头、重定向规则与 404 处理

Hugo 开发服务器配置指南:Server 配置下的响应头、重定向规则与 404 处理 【免费下载链接】hugo The world’s fastest framework for building websites. 项目地址: https://gitcode.com/gh_mirrors/hu/hugo server 是 Hugo 中一组仅作用于开发服务器&#…

📰

Astro vs Next.js:从零JS到群岛架构的性能实战评测

别急着给 Next.js 判死刑,先看看你手里拿的到底是什么“锤子”如果你是个天天跟 React、Vue 打交道的前端,最近大概率被 Astro 刷屏了。铺天盖地的“放弃 Next.js,拥抱 Astro”,“首屏零 JS”,“速度提升 100%”……看…

📰

Slang 语义检查阶段深度解析:从 AST 到类型完备 IR 前置状态

Slang 语义检查阶段深度解析:从 AST 到类型完备 IR 前置状态 【免费下载链接】slang Making it easier to work with shaders 项目地址: https://gitcode.com/GitHub_Trending/sl/slang 本篇技术指南聚焦 Slang 着色语言编译器前端流水线中的**语义检查&…

📰

oh-my-hermes:为React Native定制一键式Hermes引擎开发工具链

1. 为什么会有 oh-my-hermes:先聊清楚它到底要解决什么问题1.1 Hermes 引擎开发里那些隐藏的重复劳动先说 Hermes 是什么。如果你做过 React Native 开发,Hermes 这个词大概率不陌生——它是专门为移动端设计的 JavaScript 引擎,Meta 开源出来…

📰

oh-my-hermes:模块化终端配置方案,一条命令还原你的开发环境

先说明一下,我今天要聊的不是某个神秘的希腊神话人物,而是一套我最近在折腾的终端环境配置方案,项目名就叫“oh-my-hermes”。名字确实有点玩梗的意思,灵感来自那几个经典的“oh-my-”系列工具,但核心目的很实在&#…

📰

企业AI服务市场分层与五类服务商精准定位

1. 企业AI服务市场现状与需求分析当前企业AI应用市场呈现明显的分层化特征,不同规模、不同数字化基础的企业在AI转型过程中面临着截然不同的挑战。根据Gartner最新调研数据显示,超过78%的中小企业表示在AI落地时遭遇技术选型困难,而大型企业则…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬