是一款阿裡雲應用性能管理(APM)類監控産品。隻要為部署在容器服務 Kubernetes 版中的 Java/PHP 應用安裝 ARMS 應用監控元件,您無需修改任何代碼,就能借助 ARMS 對應用進行全方位監控,實作自動發現應用拓撲、自動發現并監控接口、捕獲異常事務和慢事務等功能,以便您更快速地定位出錯接口和慢接口、重制調用參數、檢測記憶體洩漏、發現系統瓶頸,進而大幅提升線上問題診斷問題的效率。ARMS 應用監控的詳細資訊請參見
應用監控概述。
前提條件
操作步驟
步驟一:安裝 ARMS 應用監控元件
首先需要安裝 ARMS 應用監控元件 ack-arms-pilot。
- 登入 容器服務 Kubernetes 版控制台
- 在左側導航欄選擇市場 > 應用目錄,在右側選中 ack-arms-pilot。
- 在應用目錄 - ack-arms-pilot 頁面上,在右側的建立面闆中選擇前提條件中建立的叢集和命名空間,并單擊建立。
步驟二:為容器服務授予通路權限
為容器服務 Kubernetes 版授予 ARMS 資源的通路權限。
- 使用主賬号登入
- 在左側導航欄選擇叢集 > 叢集,在目标叢集右側操作列單擊管理。
[10.14 上海 WorkShop] 通過 ARMS 實作應用監控 - 在目标叢集的基本資訊頁面上,單擊叢集資源區域的 Worker RAM 角色連結。
[10.14 上海 WorkShop] 通過 ARMS 實作應用監控 - 在 RAM 通路控制控制台的 RAM 角色管理頁面上,單擊權限管理頁簽上的目标權限政策名稱連結。
- 在政策内容頁簽上單擊修改政策内容,并在右側的修改政策内容面闆将以下内容添加到政策内容中,最後單擊确認。
{ "Action": "arms:*", "Resource": "*", "Effect": "Allow" }
[10.14 上海 WorkShop] 通過 ARMS 實作應用監控
步驟三:為 Java 應用開啟 ARMS 應用監控
以下步驟分别對應建立新應用和已有應用這兩種情況。
如需在建立新應用的同時開啟 ARMS 應用監控,請按以下步驟操作。
- 在容器服務管理控制台左側導航欄選擇應用 > 無狀态。
- 在無狀态(Deployment)頁面右上角單擊使用模闆建立。
- 在使用模闆建立頁面上選擇叢集、命名空間和示例模闆,并在模闆(YAML 格式)中将以下
annotations
添加到 spec > template > metadata 層級下。
說明: 請将
替換為您的應用名稱。<your-deployment-name>
annotations: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>"
[10.14 上海 WorkShop] 通過 ARMS 實作應用監控
建立一個無狀态(Deployment)應用并開啟 ARMS 應用監控的完整 YAML 示例模闆如下:
注意:如果您的環境無法通路公網,請将鏡像位址替換為 vpc 位址,如:
将
registry.cn-hangzhou.aliyuncs.com/containerdemo/arms-springboot-demo:v0.1
修改:
registry-vpc.cn-hangzhou.aliyuncs.com/containerdemo/arms-springboot-demo:v0.1
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:
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo"
labels:
app: arms-springboot-demo
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/containerdemo/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 # for versions before 1.8.0 use apps/v1beta1
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:
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
labels:
app: arms-springboot-demo-subcomponent
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/containerdemo/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/containerdemo/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 應用監控,請按以下步驟操作。
- 在容器服務管理控制台左側導航欄選擇應用 > 無狀态或應用 > 有狀态。
- 在無狀态(Deployment)或有狀态(StatefulSet)頁面上,選擇叢集和命名空間,并在目标應用右側操作列中選擇更多 > 檢視 Yaml。
- 在編輯 YAML 對話框中将以下
添加到 spec > template > metadata 層級下,并單擊更新。annotations
<your-deployment-name>
annotations: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>"
後續步驟
完成上述步驟後,您就為部署在容器服務 Kubernetes 版中的應用開啟了 ARMS 應用監控。在目标應用的操作列中單擊 ARMS 控制台,将進入 ARMS 控制台的應用監控頁面。ARMS 應用監控具備以下能力:
- 展示應用總體性能關鍵名額,自動發現應用拓撲。
- 3D 拓撲圖能立體展示應用、服務和主機的健康狀況,以及應用的上下遊依賴關系,幫助您快速定位誘發故障的服務、被故障影響的應用和關聯的主機等,全方位地診斷故障根源,進而快速排除故障。
- 捕獲異常事務和慢事務,擷取接口的慢 SQL、MQ 堆積分析報表或者異常分類報表,對錯、慢等常見問題進行更細緻的分析。
- 自動發現和監控應用代碼中常見的 Web 架構和 RPC 架構,并自動統計 Web 接口和 RPC 接口的調用量、響應時間、錯誤數等名額。