通過SkyWalking為應用埋點並上報鏈路資料至Managed Service for OpenTelemetry後,Managed Service for 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)