すべてのプロダクト
Search
ドキュメントセンター

Application Real-Time Monitoring Service:ローカルイメージキャッシュモードを使用して ack-onepilot 統合を高速化する

最終更新日:Nov 09, 2025

このドキュメントでは、ローカルイメージキャッシュモードを使用して Java アプリケーションの ack-onepilot 統合を高速化する方法について説明します。

背景

デフォルトでは、ack-onepilot コンポーネントによって挿入された init-container は、ルールに基づいてエージェントパッケージを動的にプルします。このアプローチは、アプリケーション統合の柔軟性を維持します。ただし、一部のシナリオでは、エージェントパッケージをその場で動的にプルすると、問題が発生する可能性があります。

  • ネットワーク品質が低いエッジシナリオでは、エージェントパッケージのプルに必要な時間が大幅に増加する可能性があります。プル操作は、タイムアウトなどの問題により失敗することさえあります。

  • 多くのアプリケーションを同時に統合すると、マシンの 1 秒あたりの入出力操作 (IOPS) が増加する可能性があります。これにより、短期間にマシンの I/O リソースが大量に消費されます。

前提条件

  • ack-onepilot 5.1.0 以降。

  • アプリケーションは Java で記述されています。

  • エージェントのバージョンは 4.2.5 以降です。

手順

次の YAML ファイルの例は、ローカルイメージキャッシュモードを使用して Kubernetes のシンプルな Java アプリケーションの ack-onepilot 統合を高速化する方法を示しています。

アプリケーション YAML の例

apiVersion: v1
kind: Namespace
metadata:
  name: arms-demo
---
apiVersion: apps/v1 # 1.8.0 より前のバージョンの場合は 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"
        # ローカルイメージキャッシュモードを有効にします。これは必須です。
        apsara.apm/enable-cached-agent: 'true'
        # ローカルイメージキャッシュモードでは、エージェントのバージョンを指定します。これを必要なエージェントのバージョンに置き換えます。
        aliyun.com/agent-version: 4.2.5
    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"
        # ローカルイメージキャッシュモードを有効にします。これは必須です。
        apsara.apm/enable-cached-agent: 'true'
        # ローカルイメージキャッシュモードでは、エージェントのバージョンを指定します。これを必要なエージェントのバージョンに置き換えます。
        aliyun.com/agent-version: 4.2.5
    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:
    # このサービスが提供するポート
    - name: arms-demo-component-svc
      port: 6666
      targetPort: 8888
  # このサービスへのトラフィックを受信するために一致する必要があるラベルのキーと値
  selector:
    app: arms-springboot-demo-subcomponent
---
apiVersion: apps/v1 # 1.8.0 より前のバージョンの場合は 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:
    # このサービスが提供するポート
    - name: arms-mysql-svc
      port: 3306
      targetPort: 3306
  # このサービスへのトラフィックを受信するために一致する必要があるラベルのキーと値
  selector:
    app: mysql
---
  1. ack-onepilot をインストールし、必要なリソースアクセス権限を付与します。詳細については、「ARMS エージェントアシスタント (ack-onepilot) をインストールする」をご参照ください。

  2. ACK コンソールにログオンします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  3. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > 展開 を選択します。

  4. [ステートレス] ページで、対象のアプリケーションで image > [YAML の編集] を選択します。

    [YAML から作成] をクリックして、新しいアプリケーションを作成します。

  5. YAML ファイルで、spec.template.metadata レベルに次の labels を追加し、[更新] をクリックします。

    labels:
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
      # ローカルイメージキャッシュモードを有効にします。これは必須です。
      apsara.apm/enable-cached-agent: 'true'
      # ローカルイメージキャッシュモードでは、エージェントのバージョンを指定します。これを必要なエージェントのバージョンに置き換えることができます。リリースされたエージェントのバージョンのリストについては、エージェント管理ドキュメントをご参照ください。
      aliyun.com/agent-version: 4.2.5
  6. [ステートレス]ページで、アプリケーションの[アクション]列にある image > [ARMS Console] をクリックして、そのモニタリング詳細を表示します。

    image