SkyWalking-Python:Apache SkyWalking 的 Python 代理,为 Python 项目提供原生追踪能力。
SkyWalking:一款应用性能监控(APM)系统,专为微服务、云原生和基于容器(Docker、Kubernetes、Mesos)的架构设计。

SkyWalking Python Agent 是 Apache SkyWalking 的官方 Python 代理组件,旨在为 Python 应用提供分布式追踪、性能指标收集等能力,帮助用户在微服务、云原生及容器化环境中实现对 Python 应用的全链路监控。该代理支持多种数据上报协议(gRPC、HTTP、Kafka),提供自动和手动埋点两种方式,并内置对主流 Python 框架的插件支持。
sw-python 命令行工具实现零代码侵入式集成Python 代理模块已发布至 PyPI,可通过 pip 安装:
shell# 安装最新版本,使用默认 gRPC 协议上报数据至 OAP pip install "apache-skywalking" # 安装最新版本,使用 HTTP 协议上报数据至 OAP pip install "apache-skywalking[http]" # 安装最新版本,使用 Kafka 协议上报数据至 OAP pip install "apache-skywalking[kafka]" # 安装指定版本 x.y.z # pip install apache-skywalking==x.y.z pip install apache-skywalking==0.1.0 # 示例:安装 0.1.0 版本
SkyWalking Python Agent 提供便捷的 Dockerfile 和镜像,利用其自动引导能力实现轻松集成。您可以基于代理启用的 Python 镜像构建 Python 应用镜像,并自动启用 SkyWalking Agent 运行应用。详细构建和配置说明请参考 dockerfile 指南。
请参考 FAQ。
如需试用尚未发布的最新特性,请参考 指南 从源代码构建。
默认情况下,SkyWalking Python Agent 使用 gRPC 协议上报数据至 SkyWalking 后端。SkyWalking 后端中,gRPC 协议端口为 11800,HTTP 协议端口为 12800,请根据使用的协议配置 collector_address(或环境变量 SW_AGENT_COLLECTOR_BACKEND_SERVICES)。
SkyWalking Python Agent 支持无需修改代码即可运行和附加到应用。安装包提供 sw-python 命令行工具,可通过以下方式运行 Python 应用:
shellsw-python run python abc.py # 或 sw-python run program arg0 arg1
生产环境使用前,请阅读 CLI 指南 获取详细介绍。如需要,也可使用以下传统集成方式。
如需使用 gRPC 协议上报数据,配置 collector_address(或环境变量 SW_AGENT_COLLECTOR_BACKEND_SERVICES)为 <oap-ip-or-host>:11800,例如 127.0.0.1:11800:
pythonfrom skywalking import agent, config config.init(collector_address='127.0.0.1:11800', service_name='your awesome service') agent.start()
如需使用 HTTP 协议上报数据,配置 collector_address(或环境变量 SW_AGENT_COLLECTOR_BACKEND_SERVICES)为 <oap-ip-or-host>:12800,例如 127.0.0.1:12800:
注意:需安装带有
http额外依赖的版本:pip install "apache-skywalking[http]"
pythonfrom skywalking import agent, config config.init(collector_address='127.0.0.1:12800', service_name='your awesome service') agent.start()
如需使用 Kafka 协议上报数据,配置 kafka_bootstrap_servers(或环境变量 SW_KAFKA_REPORTER_BOOTSTRAP_SERVERS)为 kafka-brokers,例如 127.0.0.1:9200:
注意:需安装带有
kafka额外依赖的版本:pip install "apache-skywalking[kafka]"
pythonfrom skywalking import agent, config config.init(kafka_bootstrap_servers='127.0.0.1:9200', service_name='your awesome service') agent.start()
此外,也可通过环境变量(如 SW_AGENT_NAME、SW_AGENT_COLLECTOR_BACKEND_SERVICES 等)传递配置,无需调用 config.init。所有支持的环境变量可参考 此处。
Python Agent 能够将收集的日志上报至后端(SkyWalking OAP),实现日志与追踪关联。详细指南请参考 日志上报文档。
内置插件支持对 Python 库的自动 instrumentation(如 http.server、Flask、Django 等),完整列表可参考 此处。
除了支持自动 instrumentation 的 库 外,还提供手动埋点 API。
以下代码片段展示如何创建入口 span、出口 span 和本地 span:
pythonfrom skywalking import Component from skywalking.trace.context import SpanContext, get_context from skywalking.trace.tags import Tag context: SpanContext = get_context() # 获取追踪上下文 # 创建入口 span,使用 `with` 语句,span 在进入/退出上下文时自动开始/停止 with context.new_entry_span(op='https://github.com/apache') as span: span.component = Component.Flask # 退出 `with` 上下文时 span 自动停止 class TagSinger(Tag): key = 'Singer' with context.new_exit_span(op='https://github.com/apache', peer='localhost:8080', component=Component.Flask) as span: span.tag(TagSinger('Nakajima')) with context.new_local_span(op='https://github.com/apache') as span: span.tag(TagSinger('Nakajima'))
pythonfrom time import sleep from skywalking import Component from skywalking.decorators import trace, runnable from skywalking.trace.context import SpanContext, get_context @trace() # 操作名默认为方法名('some_other_method') def some_other_method(): sleep(1) @trace(op='awesome') # 自定义操作名为 'awesome' def some_method(): some_other_method() @trace(op='async_functions_are_also_supported') async def async_func(): return 'asynchronous' @trace() async def async_func2(): return await async_func() @runnable() # 跨线程传播 def some_method(): some_other_method() from threading import Thread t = Thread(target=some_method) t.start() context: SpanContext = get_context() with context.new_entry_span(op=str('https://github.com/apache/skywalking')) as span: span.component = Component.Flask some_method()
dev-subscribe@skywalking.apache.org,按照回复订阅邮件列表skywalking 频道。如链接无效,可在 Apache INFRA WIKI 查找最新链接提交拉取请求或推送提交前,请阅读我们的 贡献指南 和 开发者指南。
请查看 FAQ 页面 或在其中添加常见问题。
Apache 2.0
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务