對於部署在ACK叢集中的Python應用(例如使用Django、Flask、FastAPI架構構建的Web應用或基於LlamaIndex、Langchain等開發的AI、LLM應用),通過安裝ack-onepilot組件並調整Dockerfile,即可利用Application Real-Time Monitoring Service (ARMS)實現應用效能監控,包括應用拓撲、鏈路追蹤、介面調用分析、異常檢測等功能以及針對大型模型互動過程中的細緻追蹤記錄。
前提條件
已建立命名空間。具體操作,請參見管理命名空間與配額。本文樣本中的命名空間為
arms-demo。已確保使用的Python運行時為3.8及以上。
ARMS相容的Python版本為3.8及以上,低於此版本時可能會出現接入問題。
已開通ARMS。
ARMS是一款阿里雲應用效能管理(APM)類監控產品,如需瞭解ARMS應用監控的詳細資料,請參見什麼是應用即時監控服務ARMS?、什麼是應用監控。
步驟一:安裝ARMS應用監控接入組件ack-onepilot
舊版應用監控組件arms-pilot已不再維護,您可以安裝升級後的ack-onepilot組件用於監控您的應用,ack-onepilot完全相容arms-pilot,您無需修改應用配置即可無縫接入ack-onepilot。更多資訊,請參見如何卸載arms-pilot和安裝ack-onepilot。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
在日誌與監控地區,定位ack-onepilot組件,單擊組件卡片的安裝,按照頁面指引在對話方塊配置相關的參數(建議使用預設值),單擊確認完成組件的安裝。
說明請確保ack-onepilot的版本為3.2.4及以上。ack-onepilot組件預設支援1000個Pod規模,叢集Pod每超過1000個,ack-onepilot資源對應的CPU請增加0.5核、記憶體請增加512MB。
安裝完成後,您可以在組件管理頁面升級、配置或卸載ack-onepilot組件。
步驟二:授予ARMS資源的存取權限
如需監控ACK叢集應用,但ACK叢集中不存在
addon.arms.token,請執行以下操作手動為叢集授予ARMS資源的存取權限。如果已經存在addon.arms.token,則無需執行授權操作。說明當ACK叢集中存在
addon.arms.token時,ARMS能夠自動完成免密授權過程。通常情況下,ACK託管叢集預設配備了addon.arms.token。然而,對於一些較早建立的ACK託管叢集來說,可能存在缺少addon.arms.token的情形。檢查
addon.arms.token是否存在。如果
addon.arms.token存在,無需執行後續授權操作。否則,請執行以下操作手動為叢集授予ARMS資源的存取權限。登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在基本資料頁簽下,單擊叢集資源地區內的Worker RAM角色右側的連結。
在角色頁面的許可權管理頁簽上,單擊新增授權。
選擇許可權為AliyunARMSFullAccess,然後單擊確定。
如需監控對接了ECI的ACK託管叢集應用,請在存取控制快速授權頁面完成授權,然後重啟ack-onepilot組件下的所有Pod。
步驟三:整合ARMS Python探針至Dockerfile
修改Dockerfile,在Python應用程式中整合ARMS Python探針,以啟動Python應用。
從PyPI倉庫下載探針安裝器。
pip3 install aliyun-bootstrap使用aliyun-bootstrap安裝探針。
# 對應的阿里雲帳號的RegionID ARMS_REGION_ID=xxx aliyun-bootstrap -a install說明如需要指定安裝的Python探針版本,可通過以下命令安裝指定版本的探針:
# ${version}替換為實際的版本號碼 aliyun-bootstrap -a install -v ${version}請參考探針(Python Agent)版本說明查看所有發行的Python探針版本。
通過ARMS Python探針啟動應用。
aliyun-instrument python app.py構建鏡像。
完整的Dockerfile樣本如下:
步驟四:啟用Python應用的ARMS應用監控
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在無狀態頁面,單擊目標應用右側。
在YAML檔案中將以下
labels添加到spec.template.metadata層級下。labels: aliyun.com/app-language: python # Python應用必填,標明此應用是Python應用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # 應用在ARMS中的展示名稱重要如您安裝的ack-onepilot組件版本高於5.0.0,在執行本步驟時ack-onepilot組件將會自動為您執行Python探針包的下載與注入動作,您無需手動修改Dockerfile的啟動命令即可獲得完全無侵入的Python應用監控接入體驗。如果您不希望使用該能力,或者您的容器中已經通過手動安裝的方式安裝了Python探針,建議您通過以下label來關閉Python的完全無侵入注入能力:
labels: aliyun.com/app-language: python # Python應用必填,標明此應用是Python應用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # 應用在ARMS中的展示名稱 armsAutoInstrumentationEnable: "off" # 關閉Python應用的完全無侵入注入能力
建立無狀態(Deployment)應用並開啟ARMS應用監控的完整YAML樣本模板如下:
步驟五:查看監控詳情
(可選)步驟六:釋放資源
您不再需要使用ARMS監控您的Python應用時,可以通過卸載ARMS Python探針停止監控。具體操作,請參見卸載Python探針。
> YAML編輯