全部產品
Search
文件中心

Application Real-Time Monitoring Service:開始監控單 Pod 多容器應用

更新時間:Jun 11, 2025

在Sidecar情境下,一個pod中可能會有多個容器,並且這些容器中啟動並執行應用所使用的程式設計語言可能不同,本文將提供在Sidecar情境下通過ack-onepilot組件接入多語言應用的最佳實務。

前提條件

ack-onepilot版本不低於4.2.0。

操作步驟

  1. 參考以下文檔安裝ack-onepilot並為其授予正確的資源存取權限。

  2. 為工作負載添加相關標籤。

    應用樣本YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: multicontainer          
      name: multicontainer
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: multicontainer
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: multicontainer
            apsara.apm/container.test-java.app-language: java
            apsara.apm/container.test-java.armsPilotAutoEnable: 'on'
            apsara.apm/container.test-java.armsPilotCreateAppName: multilanguage-java
            apsara.apm/container.test-go.app-language: golang
            apsara.apm/container.test-go.armsPilotAutoEnable: 'on'
            apsara.apm/container.test-go.armsPilotCreateAppName: multilanguage-go
            apsara.apm/container.test-python.app-language: python
            apsara.apm/container.test-python.armsPilotAutoEnable: 'on'
            apsara.apm/container.test-python.armsPilotCreateAppName: multilanguage-python
        spec:
          containers:
            - command:
                - sleep
                - '360000'
              image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
                # 替換為你實際的Java應用鏡像
              imagePullPolicy: Always
              name: test-java
              resources:
                requests:
                  cpu: 250m
                  memory: 512Mi
            - command:
                - sleep
                - '3600000'
              image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
                # 替換為實際的Go應用鏡像
              imagePullPolicy: Always
              name: test-go
              resources:
                requests:
                  cpu: 500m
                  memory: 512Mi
            - command:
                - sleep
                - '3600000'
              image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
                # 替換為實際的Python應用鏡像
              imagePullPolicy: Always
              name: test-python
              resources:
                requests:
                  cpu: 500m
                  memory: 512Mi

    以上YAML是一個同時使用Java,Golang以及Python三種程式設計語言的複雜應用,應用中有三個不同程式設計語言的容器,容器名分別為test-java、test-go、test-python。

    將該應用中的三個容器分別接入到三個不同的ARMS應用中以達到資料隔離,具體操作如下:

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

    3. 無狀態頁面的目標應用右側選擇image > YAML 編輯

      如需建立一個新應用,單擊使用YAML建立資源

    4. 在YAML檔案中將以下labels添加到spec.template.metadata層級下,然後單擊更新

      labels:
        # 請將${containerName}替換為實際的容器名稱
        apsara.apm/container.${containerName}.app-language: java # 替換為該容器實際的程式設計語言
        apsara.apm/container.${containerName}.armsPilotAutoEnable: 'on'
        apsara.apm/container.${containerName}.armsPilotCreateAppName: "<your-deployment-name>"    # 請將<your-deployment-name>替換為您的應用程式名稱。
  3. 若應用出現在ARMS控制台應用監控 > 應用列表頁面中且有資料上報,則說明接入成功。

    image