全部產品
Search
文件中心

Application Real-Time Monitoring Service:通用Kubernetes環境接入應用監控 eBPF 版

更新時間:Jul 06, 2024

藉助ARMS應用監控 eBPF 版,您可以對通用Kubernetes環境的應用實現無侵入的監控,提供如應用拓撲、介面調用、應用概覽和警示等監控。本文介紹如何將通用Kubernetes環境中的應用接入ARMS應用監控 eBPF 版

說明

如果您使用的Kubernetes叢集由Container ServiceACK提供,本文不適用,ACK叢集接入ARMS的操作請參見手動接入應用至應用監控 eBPF 版

前提條件

  • 請確保您的Kubernetes叢集版本在1.20及以上版本。

  • 如果您的Kubernetes叢集沒有部署在阿里雲,請確保叢集連通公網,或者通過雲企業網等方式打通阿里雲VPC和叢集之間的串連。

  • 目前只支援x86架構,且機器核心版本需為4.19或以上版本,同時。更多環境要求,請參見應用監控 eBPF 版運行環境要求和限制

步驟1:安裝Helm3

安裝Helm3的操作,請參見Helm官方文檔

步驟2:安裝應用監控 eBPF 版組件

ARMS應用監控 eBPF 版目前僅支援無狀態(Deployment)和有狀態(StatefulSet)兩種類型的應用接入,兩種類型的應用接入方法相同。此處以將Kubernetes環境中的無狀態(Deployment)類型的應用接入ARMS應用監控 eBPF 版為例。

  1. 執行以下wget命令下載ack-arms-cmonitor安裝包。

    wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-arms-cmonitor-4.1.2.tgz'
  2. 執行以下命令解壓ack-arms-cmonitor安裝包。

    tar xvf ack-arms-cmonitor-4.1.2.tgz
  3. 將otel-collector-deployment.yaml中的環境變數IS_PUBLIC修改為public

  4. 編輯安裝包下的values.yaml檔案,根據實際情況修改以下參數,然後儲存。

    registry: registry-__ACK_REGION_ID__-vpc.ack.aliyuncs.com
    cluster_id: __ACK_CLUSTER_ID__
    accessKey: __ACCESSKEY__
    accessKeySecret: __ACCESSKEY_SECRET__
    uid: "__ACK_UID__"
    region_id: __ACK_REGION_ID__
    • registry:鏡像地址,修改__ACK_REGION_ID__為對應的RegionID。

      說明

      以上樣本為VPC環境鏡像地址,公網環境鏡像地址為:

      registry-__ACK_REGION_ID__.ack.aliyuncs.com
    • __ACK_REGION_ID__:阿里雲地區ID,應用監控 eBPF 版支援的地區,請參見開服地區

    • __ACK_CLUSTER_ID__:自訂Kubernetes叢集ID,叢集的唯一標識。建議格式為<uid>-<clusterid>

    • __ACCESSKEY____ACCESSKEY_SECRET__:阿里雲帳號的AccessKey ID和AccessKey Secret。擷取方法,請參見擷取AccessKey

      重要

      請確認對應的阿里雲帳號已包含AliyunARMSFullAccessAliyunSTSAssumeRoleAccess許可權。

    • __ACK_UID__:阿里雲帳號(主帳號)ID。將滑鼠懸浮於阿里雲控制台右上方的頭像上可以擷取。

  5. 執行以下命令安裝ack-arms-cmonitor。

    請在ack-arms-cmonitor安裝包外執行此命令。

    helm3 upgrade --install ack-arms-cmonitor ack-arms-cmonitor --namespace arms-prom --create-namespace

步驟3:修改應用的YAML檔案

  1. 執行以下命令查看目標無狀態(Deployment)應用的YAML檔案。

    kubectl get deployment {deployment名稱} -o yaml
    說明

    若您不清楚{deployment名稱},請先執行以下命令查看所有無狀態(Deployment)應用,在執行結果中找到目標無狀態(Deployment)應用,再查看目標無狀態(Deployment)應用的YAML檔案。

    kubectl get deployments --all-namespace
  2. 啟動編輯目標無狀態(Deployment)應用的YAML檔案。

    kubectl edit deployment {Deployment名稱} -o yaml
  3. 在YAML檔案中的spec.template.metadata層級下添加以下內容。

    labels:
      armseBPFAutoEnable: "on"
      armseBPFCreateAppName: "<your-deployment-name>"    #請將<your-deployment-name>替換為您的應用程式名稱。

    如果您需要在K8s環境中建立一個新的無狀態(Deployment)應用並接入ARMS,則應用的完整YAML檔案如下:

    展開查看完整樣本YAML檔案

    apiVersion: apps/v1beta1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-springboot-demo
      labels:
        app: arms-springboot-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo
      template:
        metadata:
          labels:
            app: arms-springboot-demo
            armseBPFAutoEnable: "on"
            armseBPFCreateAppName: "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: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-demo-mysql
      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
    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
    ---
  4. 儲存配置後,應用將自動重啟,以上配置生效。

    2~5分鐘後,若您的應用出現在ARMS控制台應用監控 eBPF 版 > 應用列表頁面中且有資料上報,則說明接入成功。

相關文檔

接入應用監控 eBPF 版後,即可查看K8s叢集應用的關鍵計量、上下遊相依元件、拓撲圖等,更多資訊,請參見應用詳情