藉助ARMS應用監控,您可以對通用Kubernetes環境的應用進行應用拓撲、介面調用、異常事務和慢事務監控、SQL分析等監控。本文將協助您將通用Kubernetes環境中的應用接入ARMS應用監控。
如果您使用的Kubernetes叢集由Container ServiceACK提供,本文不適用,ACK叢集接入ARMS的操作請參見Container ServiceACK環境自動安裝探針。
前提條件
請確保您的Kubernetes叢集版本為1.18或以上。
如果您的Kubernetes叢集沒有部署在阿里雲,請確保叢集能夠連通公網,或者通過雲企業網等方式打通阿里雲VPC和叢集之間的串連。
檢查您的JDK版本。具體要求,請參見支援的JDK版本。
進程最大堆記憶體需大於256 MB。
(推薦)方式一:通過ACK註冊叢集接入ARMS
使用ACK註冊叢集的優勢:
更高效的營運支援。
獲得更多Container ServiceACK叢集擴充能力,包括:監控、日誌、備份恢複、安全、雲上彈性資源等。更多資訊,請參見註冊叢集概述。
將Kubernetes叢集接入ACK One。具體操作,請參見建立註冊叢集。
為註冊叢集安裝ack-onepilot組件。具體操作,請參見將應用即時監控服務ARMS接入註冊叢集。
方式二:直接接入ARMS
該方式未使用ACK註冊叢集,接入後,容器相關的資訊(CPU、記憶體、Disk、網路)無法關聯展示。即在應用執行個體頁面僅展示ARMS自採集版的容器環境資料,且後續無法通過接入可觀測監控 Prometheus 版查看Prometheus探針擷取的容器資料,更多資訊,請參見Java應用執行個體監控。
步驟1:安裝Helm3
步驟2:安裝探針
ARMS應用監控目前僅支援無狀態(Deployment)和有狀態(StatefulSet)兩種類型的應用接入,兩種類型的應用接入方法相同。此處以將Kubernetes環境中的無狀態(Deployment)類型的應用接入ARMS應用監控為例。
執行以下
wget
命令下載ack-onepilot安裝包。wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-3.3.2.tgz'
執行以下命令解壓ack-onepilot安裝包。
tar xvf ack-onepilot-3.3.2.tgz
編輯安裝包下的values.yaml檔案,根據實際情況修改以下參數,然後儲存。
registry: registry-__ACK_REGION_ID__.ack.aliyuncs.com/acs/ cluster_id: __ACK_CLUSTER_ID__ accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ uid: "__ACK_UID__" region_id: __ACK_REGION_ID__
registry
:ack-onepilot鏡像地址。cluster_id
:自訂Kubernetes叢集ID,叢集的唯一標識。建議格式為<uid>-<clusterid>
。accessKey
和accessKeySecret
:阿里雲帳號(主帳號)的AccessKey ID和AccessKey Secret。擷取方法,請參見建立AccessKey。重要請確認對應的阿里雲帳號(主帳號)已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess許可權。
uid
:阿里雲帳號(主帳號)ID。將滑鼠懸浮於阿里雲控制台右上方的頭像上可以擷取。region_id
:阿里雲地區ID,應用監控支援的地區,請參見開服地區。
執行以下命令安裝ack-onepilot。
請在ack-onepilot安裝包外執行此命令。
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
步驟3:修改應用的YAML檔案
執行以下命令查看目標無狀態(Deployment)應用的YAML檔案。
kubectl get deployment {deployment名稱} -o yaml
說明若您不清楚
{deployment名稱}
,請先執行以下命令查看所有無狀態(Deployment)應用,在執行結果中找到目標無狀態(Deployment)應用,再查看目標無狀態(Deployment)應用的YAML檔案。kubectl get deployments --all-namespace
啟動編輯目標無狀態(Deployment)應用的YAML檔案。
kubectl edit deployment {Deployment名稱} -o yaml
在YAML檔案中的spec.template.metadata層級下添加以下內容。
labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" #請將<your-deployment-name>替換為您的應用程式名稱。 armsSecAutoEnable: "on" #如果需要接入應用安全,則需要配置此參數。
如果您需要在K8s環境中建立一個新的無狀態(Deployment)應用並接入ARMS,則應用的完整YAML檔案如下:
儲存配置後,應用將自動重啟,以上配置生效。
2~5分鐘後,若您的應用出現在ARMS控制台的 頁面中且有資料上報,則說明接入成功。