當您需要對部署在Container Service for Kubernetes (ACK)中的Python應用進行監控時,通過安裝ARMS應用監控組件ack-onepilot並修改對應的Dockerfile,即可在應用即時監控服務ARMS中查看對應應用的應用拓撲、介面調用、調用鏈分析等相關監控資料。本文將介紹如何為部署在Container Service for Kubernetes (ACK)中的Python應用安裝探針。
如果您在使用Python探針過程中有任何問題,歡迎通過DingTalk答疑群(群號:35568145)與我們聯絡。
前提條件
建立Kubernetes叢集。您可按需選擇建立ACK專有叢集、建立ACK託管叢集或建立ACK Serverless叢集。
建立命名空間,具體操作,請參見管理命名空間與配額。本文樣本中的命名空間名稱為arms-demo。
檢查您的Python版本和架構版本。具體要求,請參見Python探針相容性要求。
注意事項
如果應用使用Unicorn啟動,需要替換為Gunicorn。
例如:
unicorn -w 4 -b 0.0.0.0:8000 app:app
修改為:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app:app
如果有使用gevent協程,則需要設定環境變數
GEVENT_ENABLE=true
。例如程式中有使用:
from gevent import monkey monkey.patch_all()
需要設定環境變數如下:
GEVENT_ENABLE=true
步驟一:安裝ARMS應用監控組件
登入Container Service管理主控台,在叢集列表頁面,單擊目的地組群名稱進入叢集詳情頁。
在左側導覽列選擇
,然後在右上方通過關鍵字搜尋ack-onepilot。重要請確保ack-onepilot的版本在3.2.4或以上。
在ack-onepilot卡片上單擊安裝。
說明ack-onepilot組件預設支援1000個pod規模,叢集pod每超過1000個,ack-onepilot資源對應的CPU請增加0.5核、記憶體請增加512 MB。
在彈出的頁面中可以配置相關的參數,建議使用預設值,單擊確定。
說明安裝完成後,您可以在組件管理頁面升級、配置或卸載ack-onepilot組件。
步驟二:修改Dockerfile
從PyPI倉庫下載探針安裝器。
pip3 install aliyun-bootstrap
使用aliyun-bootstrap安裝探針。
aliyun-bootstrap -a install
通過ARMS Python探針啟動應用。
aliyun-instrument python app.py
構建鏡像。
完整的Dockerfile樣本如下:
步驟三:授予ARMS資源的存取權限
如果需監控ASK(Container ServiceServerless版)或對接了ECI的叢集應用,請在雲資源訪問授權頁面完成授權,然後重啟ack-onepilot組件下的所有Pod。
如果需監控ACK叢集應用,但ACK叢集中不存在ARMS Addon Token,請執行以下操作手動為叢集授予ARMS資源的存取權限。如果已經存在ARMS Addon Token,請跳轉至步驟四。
說明叢集存在ARMS Addon Token時,ARMS會進行免密授權。Kubernetes託管版叢集預設存在ARMS Addon Token,但對於部分早期建立的Kubernetes託管版叢集,可能會存在沒有ARMS Addon Token的情況,因此,對於Kubernetes託管版叢集,建議首先檢查ARMS Addon Token是否存在。若不存在,需進行手動授權。
如果需要監控專有版叢集和註冊叢集應用,請確認對應的阿里雲帳號已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess許可權。添加許可權的操作,請參見為RAM使用者授權。
安裝ack-onepilot組件後,還需要在ack-onepilot中填寫有ARMS許可權的阿里雲帳號AK/SK。
在左側導覽列選擇
頁面,單擊ack-onepilot組件右側的更新。將
accessKey
和accessKeySecret
替換為當前帳號的AccessKey,然後單擊確定。說明擷取AccessKey的操作,請參見建立AccessKey。
重啟應用Deployment。
步驟四:為Python應用開啟ARMS應用監控
在Container Service管理主控台左側導覽列單擊叢集,在叢集列表頁面上的目的地組群右側操作列單擊應用管理。
在無狀態頁面的目標應用右側選擇
。如需建立一個新應用,單擊使用YAML建立資源。
在YAML檔案中將以下
labels
添加到spec.template.metadata層級下。labels: aliyun.com/app-language: python # Python應用必填,標明此應用是Python應用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<your-deployment-name>" #應用在ARMS中的展示名稱
建立無狀態(Deployment)應用並開啟ARMS應用監控的完整YAML樣本模板如下:
執行結果
約一分鐘後,若Python應用出現在ARMS控制台的 頁面中且有資料上報,則說明接入成功。