通過SkyWalking上報Python應用數(shù)據(jù)
通過SkyWalking為應用埋點并上報鏈路數(shù)據(jù)至可觀測鏈路 OpenTelemetry 版后,可觀測鏈路 OpenTelemetry 版即可開始監(jiān)控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監(jiān)控數(shù)據(jù)。本文介紹如何使用SkyWalking Python Agent進行自動埋點并上報應用數(shù)據(jù)。
前提條件
下載Apache-skywalking的Python Agent(建議下載最新版本)。
在Python項目中引入Skywalking-python Agent。
新版控制臺
登錄可觀測鏈路 OpenTelemetry 版控制臺,在左側導航欄單擊接入中心。
在開源框架區(qū)域單擊SkyWalking卡片。
在彈出的SkyWalking面板中選擇數(shù)據(jù)需要上報的地域。
說明初次接入的地域將會自動進行資源初始化。
選擇連接方式,然后復制接入點信息。
若您的服務部署在阿里云上,且所屬地域與選擇的接入地域一致,推薦使用阿里云內網(wǎng)方式,否則選擇公網(wǎng)方式。
舊版控制臺
在左側導航欄單擊集群配置,然后在右側頁面單擊接入點信息頁簽。
在頁面頂部選擇需要接入的地域,然后在集群信息區(qū)域打開顯示Token開關。
在客戶端采集工具區(qū)域單擊SkyWalking。
在相關信息列中,獲取接入點信息。
說明如果應用部署于阿里云生產(chǎn)環(huán)境,則選擇阿里云VPC網(wǎng)絡接入點,否則選擇公網(wǎng)接入點。
背景信息
SkyWalking是一款廣受歡迎的國產(chǎn)APM(Application Performance Monitoring,應用性能監(jiān)控)產(chǎn)品,主要針對微服務、Cloud Native和容器化(Docker、Kubernetes、Mesos)架構的應用。SkyWalking的核心是一個分布式追蹤系統(tǒng)。
Skywalking-python是SkyWalking的Python Agent官方庫,可以通過接入Skywalking-python實現(xiàn)對Python應用的監(jiān)控,Skywalking-python支持Kafka、HTTP、AIOHTTP、Redis、WebSockets等多種第三方庫的自動埋點。
庫 | Python版本 - 庫版本 | 插件名 |
Python≥3.7 - 3.7.* | sw_aiohttp | |
Python≥3.7 - 2.0.* | sw_aioredis | |
Python≥3.7 - 6.3、6.4 | sw_aiormq | |
Python≥3.7 - 2.6.1 | sw_amqp | |
Python≥3.7 - 0.25.0 | sw_asyncpg | |
Python≥3.7 - 0.12.23 | sw_bottle | |
Python≥3.7 - 5.1 | sw_celery | |
Python≥3.7 - 1.5.0、1.7.0、1.8.2 | sw_confluent_kafka | |
Python≥3.7 - 3.2 | sw_django | |
Python ≥3.7 - 7.13、7.14、7.15 | sw_elasticsearch | |
Python ≥3.11 - 暫不支持 Python ≥3.10 - 2.5、2.6 Python ≥3.7 - 2.4.1、2.5、2.6 | sw_falcon | |
Python ≥3.7 - 0.89.*、0.88.* | sw_fastapi | |
Python ≥3.7 - 2.0 | sw_flask | |
Python ≥3.7 - 1.2.0 | sw_happybase | |
Python ≥3.7 - * | sw_http_server | |
Python ≥3.7 - 1.0.1、2.0 | sw_http_server | |
Python ≥3.7 - 0.23.*、0.22.* | sw_httpx | |
Python ≥3.7 - 2.0 | sw_kafka | |
Python ≥3.7 - 0.6.0、0.7.0 | sw_loguru | |
Python ≥3.7 - 2.1.* | sw_mysqlclient | |
neo4j | Python ≥3.7 - 5.* | sw_neo4j |
Python ≥3.11 - 3.1.* Python ≥3.7 - 3.0.18、3.1.* | sw_psycopg | |
Python ≥3.10 - 暫不支持 Python ≥3.7 - 2.9 | sw_psycopg2 | |
Python ≥3.7 - 3.11.* | sw_pymongo | |
Python ≥3.7 - 1.0 | sw_pymysql | |
Python ≥3.7 - 1.10、2.0 | sw_pyramid | |
Python ≥3.7 - 1.2 | sw_rabbitmq | |
Python ≥3.7 - 3.5.*、4.5.1 | sw_redis | |
Python ≥3.7 - 2.26、2.25 | sw_requests | |
Python ≥3.10 - 暫不支持 Python ≥3.7 - 20.12 | sw_sanic | |
Python ≥3.7 - 6.0、6.1 | sw_tornado | |
Python ≥3.7 - 1.26、1.25 | sw_urllib3 | |
Python ≥3.7 - * | sw_urllib_request | |
Python ≥3.7 - 10.3、10.4 | sw_websockets |
示例Demo
示例Demo倉庫地址:SkyWalking Demo
該Demo是一個簡單的基于Flask框架的請求路由轉發(fā)和操作MySQL數(shù)據(jù)庫的示例,SkyWalking Agent對其監(jiān)控并上報數(shù)據(jù)。
用SkyWalking為Python應用自動埋點
您可以在Python項目文件代碼里直接配置SkyWalking Python Agent參數(shù)或在環(huán)境變量中配置SkyWalking Python Agent參數(shù)。
在代碼中配置參數(shù)
在Python項目文件中修改config.init
參數(shù),示例Demo中對應為proxy/TestProxy.py和controller/TestController.py文件。
from skywalking import config
config.init(ConfigurationName = ConfigurationValue)
將參數(shù)配置到環(huán)境變量
在環(huán)境變量文件中添加以下內容,并刷新使其生效。
export SW_AGENT_ConfigurationName=ConfigurationValue
如果是Docker容器環(huán)境,可以在docker-compose.yaml文件的environment選項下面配置環(huán)境變量。
配置接入點和令牌。
在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>')
選擇數(shù)據(jù)上報協(xié)議,SkyWalking支持gRPC上報。
### 可選擇的上報協(xié)議有'grpc'。 config.init(agent_protocol='<protocol>')
根據(jù)需求配置其他可選參數(shù)。參數(shù)詳情請參見Apache SkyWalking官方文檔。
重新啟動應用。
常見問題
gRPC上報數(shù)據(jù)出現(xiàn)
Method not found: skywalking.v3.LogReportService/collect
錯誤。在
config.init
中設置agent_log_reporter_active
為False
。config.init(agent_log_reporter_active=False)
gRPC上報數(shù)據(jù)出現(xiàn)
Method not found: skywalking.v3.MeterReportService/collect
錯誤。控制臺暫不支持metric
數(shù)據(jù)上報,您可以在config.init
中設置agent_meter_reporter_active
為False
。config.init(agent_meter_reporter_active=False)