通过SkyWalking为应用埋点并上报链路数据至可观测链路 OpenTelemetry 版后,可观测链路 OpenTelemetry 版即可开始监控应用,您可以查看应用拓扑、调用链路、异常事务、慢事务和SQL分析等一系列监控数据。本文介绍如何使用SkyWalking Python Agent进行自动埋点并上报应用数据。
前提条件
下载Apache-skywalking的Python Agent(建议下载最新版本)。
在Python项目中引入Skywalking-python Agent。
背景信息
SkyWalking是一款广受欢迎的国产APM(Application Performance Monitoring,应用性能监控)产品,主要针对微服务、Cloud Native和容器化(Docker、Kubernetes、Mesos)架构的应用。SkyWalking的核心是一个分布式追踪系统。
Skywalking-python是SkyWalking的Python Agent官方库,可以通过接入Skywalking-python实现对Python应用的监控,Skywalking-python支持Kafka、HTTP、AIOHTTP、Redis、WebSockets等多种第三方库的自动埋点。
示例Demo
示例Demo仓库地址:SkyWalking Demo
该Demo是一个简单的基于Flask框架的请求路由转发和操作MySQL数据库的示例,SkyWalking Agent对其监控并上报数据。
用SkyWalking为Python应用自动埋点
您可以在Python项目文件代码里直接配置SkyWalking Python Agent参数或在环境变量中配置SkyWalking Python Agent参数。
在代码中配置参数
在Python项目文件中修改config.init
参数,示例Demo中对应为proxy/TestProxy.py和controller/TestController.py文件。
from skywalking import config
config.init(ConfigurationName = ConfigurationValue)
将参数配置到环境变量
在环境变量文件中添加以下内容,并刷新使其生效。
export SW_AGENT_ConfigurationName=ConfigurationValue
如果是Docker容器环境,可以在docker-compose.yaml文件的environment选项下面配置环境变量。
配置接入点和令牌。
在Python文件中引入Skywalking。
from skywalking import agent, config
配置接入点和鉴权令牌。
请将
<endpoint>
和<auth-token>
分别替换成前提条件中获取的接入点信息和鉴权令牌。config.init(agent_collector_backend_services='<endpoint>', agent_authentication='<auth-token>')
配置Service Name作为应用标识。
config.init(agent_name='<service name>')
选择数据上报协议,SkyWalking支持gRPC上报。
### 可选择的上报协议有'grpc'。 config.init(agent_protocol='<protocol>')
根据需求配置其他可选参数。参数详情请参见Apache SkyWalking官方文档。
重新启动应用。
常见问题
gRPC上报数据出现
Method not found: skywalking.v3.LogReportService/collect
错误。在
config.init
中设置agent_log_reporter_active
为False
。config.init(agent_log_reporter_active=False)
gRPC上报数据出现
Method not found: skywalking.v3.MeterReportService/collect
错误。控制台暂不支持metric
数据上报,您可以在config.init
中设置agent_meter_reporter_active
为False
。config.init(agent_meter_reporter_active=False)