天天看點

[10.14 上海 WorkShop] 通過 ARMS 實作應用監控

應用實時監控服務 ARMS(Application Real-Time Monitoring Service)

是一款阿裡雲應用性能管理(APM)類監控産品。隻要為部署在容器服務 Kubernetes 版中的 Java/PHP 應用安裝 ARMS 應用監控元件,您無需修改任何代碼,就能借助 ARMS 對應用進行全方位監控,實作自動發現應用拓撲、自動發現并監控接口、捕獲異常事務和慢事務等功能,以便您更快速地定位出錯接口和慢接口、重制調用參數、檢測記憶體洩漏、發現系統瓶頸,進而大幅提升線上問題診斷問題的效率。ARMS 應用監控的詳細資訊請參見

應用監控概述

前提條件

操作步驟

步驟一:安裝 ARMS 應用監控元件

首先需要安裝 ARMS 應用監控元件 ack-arms-pilot。

  1. 登入 容器服務 Kubernetes 版控制台
  2. 在左側導航欄選擇市場 > 應用目錄,在右側選中 ack-arms-pilot。
  3. 在應用目錄 - ack-arms-pilot 頁面上,在右側的建立面闆中選擇前提條件中建立的叢集和命名空間,并單擊建立。

步驟二:為容器服務授予通路權限

為容器服務 Kubernetes 版授予 ARMS 資源的通路權限。

  1. 使用主賬号登入
  2. 在左側導航欄選擇叢集 > 叢集,在目标叢集右側操作列單擊管理。
    [10.14 上海 WorkShop] 通過 ARMS 實作應用監控
  3. 在目标叢集的基本資訊頁面上,單擊叢集資源區域的 Worker RAM 角色連結。
    [10.14 上海 WorkShop] 通過 ARMS 實作應用監控
  4. 在 RAM 通路控制控制台的 RAM 角色管理頁面上,單擊權限管理頁簽上的目标權限政策名稱連結。
  5. 在政策内容頁簽上單擊修改政策内容,并在右側的修改政策内容面闆将以下内容添加到政策内容中,最後單擊确認。
    {
                            "Action": "arms:*",
                            "Resource": "*",
                            "Effect": "Allow"
                            }           
    [10.14 上海 WorkShop] 通過 ARMS 實作應用監控

步驟三:為 Java 應用開啟 ARMS 應用監控

以下步驟分别對應建立新應用和已有應用這兩種情況。

如需在建立新應用的同時開啟 ARMS 應用監控,請按以下步驟操作。

  1. 在容器服務管理控制台左側導航欄選擇應用 > 無狀态。
  2. 在無狀态(Deployment)頁面右上角單擊使用模闆建立。
  3. 在使用模闆建立頁面上選擇叢集、命名空間和示例模闆,并在模闆(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 應用監控,請按以下步驟操作。

  1. 在容器服務管理控制台左側導航欄選擇應用 > 無狀态或應用 > 有狀态。
  2. 在無狀态(Deployment)或有狀态(StatefulSet)頁面上,選擇叢集和命名空間,并在目标應用右側操作列中選擇更多 > 檢視 Yaml。
  3. 在編輯 YAML 對話框中将以下

    annotations

    添加到 spec > template > metadata 層級下,并單擊更新。

    <your-deployment-name>

    annotations:
                            armsPilotAutoEnable: "on"
                            armsPilotCreateAppName: "<your-deployment-name>"                                           

後續步驟

完成上述步驟後,您就為部署在容器服務 Kubernetes 版中的應用開啟了 ARMS 應用監控。在目标應用的操作列中單擊 ARMS 控制台,将進入 ARMS 控制台的應用監控頁面。ARMS 應用監控具備以下能力:

  1. 展示應用總體性能關鍵名額,自動發現應用拓撲。
  2. 3D 拓撲圖能立體展示應用、服務和主機的健康狀況,以及應用的上下遊依賴關系,幫助您快速定位誘發故障的服務、被故障影響的應用和關聯的主機等,全方位地診斷故障根源,進而快速排除故障。
  3. 捕獲異常事務和慢事務,擷取接口的慢 SQL、MQ 堆積分析報表或者異常分類報表,對錯、慢等常見問題進行更細緻的分析。
  4. 自動發現和監控應用代碼中常見的 Web 架構和 RPC 架構,并自動統計 Web 接口和 RPC 接口的調用量、響應時間、錯誤數等名額。
下一篇: ecs