分布式链路追踪系统之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为微服务监控打下坚实基础。

相关新闻

21231221

21231221

11 1111

2026/10/30 14:42:53 阅读更多 →
从F280x到Piccolo系列DSP外设迁移实战:ADC、ePWM与CSM核心差异解析

从F280x到Piccolo系列DSP外设迁移实战:ADC、ePWM与CSM核心差异解析

1. 项目概述与迁移背景如果你正在从经典的TMS320F280x、F2801x或F2804x系列DSP,转向更紧凑、更具性价比的Piccolo系列(F2802x/F2803x),那么恭喜你,这个选择在成本和集成度上通常很有优势。但随之而来的外设迁移工作&am…

2026/10/29 11:26:53 阅读更多 →
在 VS Code 中让终端显示简洁路径(告别冗长全路径)

在 VS Code 中让终端显示简洁路径(告别冗长全路径)

文章目录在 VS Code 中让终端显示简洁路径(告别冗长全路径)问题场景快速解决方案1. 修改终端标签页标题2. 按 Shell 类型优化提示符🪟 **PowerShell(Windows)**🐧 **Bash(Linux/macOS/WSL&#…

2026/10/25 18:48:44 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻