分布式链路追踪系统之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/7/23 20:36:36 阅读更多 →
从F280x到Piccolo系列DSP外设迁移实战:ADC、ePWM与CSM核心差异解析

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

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

2026/7/23 20:36:36 阅读更多 →
在 VS Code 中让终端显示简洁路径(告别冗长全路径)

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

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

2026/7/23 20:35:36 阅读更多 →

最新新闻

企业级基础软件领域中远超国外的国货

企业级基础软件领域中远超国外的国货

进入互联网时代后,尤其移动互联网,中国的软件有了长足的进步,很多软件已经站在了世界的前列,比如很多toC 的个人软件,微信,淘宝,尤其是抖音的 Tiktok,更是成为了世界级的应用但是toB…

2026/7/23 20:45:39 阅读更多 →
Reliable Curation of EHR Dataset via Large Language Models under Environmental Constraints

Reliable Curation of EHR Dataset via Large Language Models under Environmental Constraints

文章总结与翻译 一、主要内容 本文针对医疗研究人员缺乏数据库专业知识,难以高效利用电子健康记录(EHR)数据的问题,提出了名为CELEC的框架。该框架基于大型语言模型(LLM),实现自动化EHR数据提取与分析,核心功能包括将自然语言查询转化为SQL语句、执行本地查询及生成数…

2026/7/23 20:45:39 阅读更多 →
计算机毕业设计之中小型企业销售管理系统

计算机毕业设计之中小型企业销售管理系统

本文论述了中小型企业销售管理系统的设计和实现,该网站从实际运用的角度出发,运用了计算机网站设计、数据库等相关知识,基于net语言;MVC框架和SQL Server数据库设计来实现的,网站主要包括产品、客户、销售员、销售订单…

2026/7/23 20:45:39 阅读更多 →
洛谷 P2424:约数和 ← 整数分块算法 + 约数

洛谷 P2424:约数和 ← 整数分块算法 + 约数

【题目来源】 https://www.luogu.com.cn/problem/P2424 【题目描述】 对于一个数 X&#xff0c;函数 f(X) 表示 X 所有约数的和。例如&#xff1a;f(6)123612。对于一个 X&#xff0c;Smart 可以很快的算出 f(X)。现在的问题是&#xff0c;给定两个正整数 X,Y(X<Y)&#xf…

2026/7/23 20:45:39 阅读更多 →
3个关键指标,帮你选出专业的种子包装袋厂家

3个关键指标,帮你选出专业的种子包装袋厂家

种子包装行业的从业者都清楚&#xff0c;选对包装袋直接影响种子的储存和运输效果。在这个领域&#xff0c;有一些厂家凭借专业实力和稳定品质逐渐获得了市场认可。从生产经验来看&#xff0c;真正专业的厂家通常具备这些特质&#xff1a;首先是原材料把控严格&#xff0c;采用…

2026/7/23 20:45:39 阅读更多 →
高中数学必修第一册互动教程

高中数学必修第一册互动教程

高中数学必修第一册互动教程人教版 2019课标版 图文并茂 互动探索&#x1f4d6; 简介 本教程是依托人教版《高中数学必修第一册》内容&#xff0c;专为高中学生设计的互动式在线学习资源。每章均配有生活类比讲解、可操作的数学动态演示、知识小结和即时反馈练习&#xff0c…

2026/7/23 20:44:39 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从单点好评到指数级传播&#xff1a;AI副业主理人必须掌握的4层口碑渗透模型&#xff08;含ROI测算表&#xff09; 当AI副业主理人不再仅满足于单次服务交付&#xff0c;而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI写作开头钩子设计&#xff1a;为什么你的AI文案完读率不足18%&#xff1f;——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后&#xff0c;我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南&#xff1a;免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻