應用實時監控服務ARMS能夠對應用進行全方位的監控,幫助您全面掌握應用的運行狀態。您可以在注冊集群中安裝ARMS應用監控組件,將ARMS服務安裝到已注冊的Kubernetes集群中,使用ARMS對集群中的應用進行監控。
前提條件
通過容器服務Kubernetes版接入一個注冊的Kubernetes集群。具體操作,請參見創建注冊集群。
通過kubectl連接注冊集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
步驟一:安裝ARMS應用監控組件
通過onectl安裝
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執行以下命令,為ack-onepilot組件配置RAM權限。
onectl ram-user grant --addon ack-onepilot
預期輸出:
Ram policy ack-one-registered-cluster-policy-ack-onepilot granted to ram user **** successfully.
執行以下命令,安裝ack-onepilot組件。
onectl addon install ack-onepilot
預期輸出:
Addon ack-onepilot, version **** installed.
通過控制臺安裝
配置RAM權限。在注冊集群中安裝組件前,您需要在接入集群中設置AccessKey用來獲取訪問云服務的權限。
創建RAM用戶。具體操作,請參見創建RAM用戶。
創建自定義權限策略。具體操作,請參見創建自定義權限策略。
ack-onepilot
組件需要的權限策略內容如下:{ "Version": "1", "Statement": [ { "Action": "arms:*", "Resource": "*", "Effect": "Allow" } ] }
為RAM用戶授權,將上一步驟創建的自定義權限策略授予RAM用戶。具體操作,請參見為RAM用戶授權。
為RAM用戶創建AccessKey。具體操作,請參見創建AccessKey。
使用AccessKey在注冊集群中創建名為
alibaba-addon-secret
的Secret資源。執行以下命令,創建
ack-onepilot
組件使用的Secret。說明執行命令前,需要將命令中的
access-key-id
和access-key-secret
的參數值替換為您在上一步驟中創建的AccessKey ID和AccessKey Secret。kubectl -n ack-onepilot create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
安裝組件
ack-onepilot
組件。登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在組件管理頁面,單擊日志與監控頁簽,找到ack-onepilot組件,單擊右下角的安裝
在安裝組件 ack-onepilot對話框中,設置相關配置項,然后單擊確定。
步驟二:為Java應用開啟ARMS應用監控
如需在創建新應用的同時開啟ARMS應用監控,請完成以下操作。
在容器服務管理控制臺左側導航欄單擊集群,在集群列表頁面上的目標集群右側操作列單擊應用管理。
在無狀態頁面右上角單擊使用YAML創建資源。
選擇示例模板,并在模板(YAML格式)中將以下
labels
添加到spec.template.metadata層級下。labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" #請將<your-deployment-name>替換為您的應用名稱。 armsSecAutoEnable: "on" #如果需要接入應用安全,則需要配置此參數。
創建一個無狀態(Deployment)應用并開啟ARMS應用監控的完整YAML示例模板如下:
apiVersion: v1 kind: Namespace metadata: name: arms-demo --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-springboot-demo namespace: arms-demo labels: app: arms-springboot-demo spec: replicas: 2 selector: matchLabels: app: arms-springboot-demo template: metadata: labels: app: arms-springboot-demo armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-k8s-demo" spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo env: - name: SELF_INVOKE_SWITCH value: "true" - name: COMPONENT_HOST value: "arms-demo-component" - name: COMPONENT_PORT value: "6666" - name: MYSQL_SERVICE_HOST value: "arms-demo-mysql" - name: MYSQL_SERVICE_PORT value: "3306" --- apiVersion: apps/v1 kind: Deployment metadata: name: arms-springboot-demo-subcomponent namespace: arms-demo labels: app: arms-springboot-demo-subcomponent spec: replicas: 2 selector: matchLabels: app: arms-springboot-demo-subcomponent template: metadata: labels: app: arms-springboot-demo-subcomponent armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-k8s-demo-subcomponent" spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo-subcomponent env: - name: SELF_INVOKE_SWITCH value: "false" - name: MYSQL_SERVICE_HOST value: "arms-demo-mysql" - name: MYSQL_SERVICE_PORT value: "3306" --- apiVersion: v1 kind: Service metadata: labels: name: arms-demo-component name: arms-demo-component namespace: arms-demo spec: ports: # the port that this service should serve on - name: arms-demo-component-svc port: 6666 targetPort: 8888 # label keys and values that must match in order to receive traffic for this service selector: app: arms-springboot-demo-subcomponent --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-demo-mysql namespace: arms-demo labels: app: mysql spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1 name: mysql ports: - containerPort: 3306 name: mysql --- apiVersion: v1 kind: Service metadata: labels: name: mysql name: arms-demo-mysql namespace: arms-demo spec: ports: # the port that this service should serve on - name: arms-mysql-svc port: 3306 targetPort: 3306 # label keys and values that must match in order to receive traffic for this service selector: app: mysql ---
在無狀態頁面的目標應用操作列下方,單擊ARMS控制臺,可跳轉至ARMS控制臺對您的應用進行服務治理。
后續操作
為集群下所有應用卸載探針
通過onectl卸載
執行以下命令,卸載ack-onepilot組件。
onectl addon uninstall ack-onepilot
預期輸出:
Addon ack-onepilot uninstalled.
重啟業務Pod。
通過控制臺卸載
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在組件管理頁面,單擊日志與監控頁簽,找到ack-onepilot組件,單擊右下角的卸載。
在彈出對話框中單擊確定。
重啟業務Pod。
為集群下指定應用卸載探針