apache/skywalking-pythonSkyWalking-Python:Apache SkyWalking 的 Python 代理,为 Python 项目提供原生追踪能力。
SkyWalking:一款应用性能监控(APM)系统,专为微服务、云原生和基于容器(Docker、Kubernetes、Mesos)的架构设计。
,提供自动和手动埋点两种方式,并内置对主流 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 协议端口为 ***,HTTP 协议端口为 ***,请根据使用的协议配置 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>:***,例如 127.0.0.1:***:
pythonfrom skywalking import agent, config config.init(collector_address='127.0.0.1:***', service_name='your awesome service') agent.start()
如需使用 HTTP 协议上报数据,配置 collector_address(或环境变量 SW_AGENT_COLLECTOR_BACKEND_SERVICES)为 <oap-ip-or-host>:***,例如 127.0.0.1:***:
注意:需安装带有
http额外依赖的版本:pip install "apache-skywalking[http]"
pythonfrom skywalking import agent, config config.init(collector_address='127.0.0.1:***', 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='[***] as span: span.component = Component.Flask # 退出 `with` 上下文时 span 自动停止 class TagSinger(Tag): key = 'Singer' with context.new_exit_span(op='[***] peer='localhost:8080', component=Component.Flask) as span: span.tag(TagSinger('Nakajima')) with context.new_local_span(op='[***] 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('[***] as span: span.component = Component.Flask some_method()
***,按照回复订阅邮件列表skywalking 频道。如链接无效,可在 Apache INFRA WIKI 查找最新链接提交拉取请求或推送提交前,请阅读我们的 贡献指南 和 开发者指南。
请查看 FAQ 页面 或在其中添加常见问题。
Apache 2.0

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务