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

Application Real-Time Monitoring Service:オープンソースの Kubernetes クラスターにエージェントを自動的にインストールする

最終更新日:Nov 25, 2025

Application Real-Time Monitoring Service (ARMS) を使用して、オープンソースの Kubernetes クラスター内のアプリケーションを監視できます。ARMS を使用すると、アプリケーションのトポロジー、API 呼び出し、異常なトランザクションと遅いトランザクション、および SQL 分析を監視できます。このトピックでは、オープンソースの Kubernetes クラスター内の Java アプリケーションを ARMS アプリケーション監視に接続する方法について説明します。

説明

このトピックは、Kubernetes クラスターが Container Service for Kubernetes (ACK) によって提供されている場合には適用されません。ACK クラスターを ARMS に接続するには、「ack-onepilot コンポーネントを使用して ACK および Container Compute Service (ACS) 用の Java エージェントをインストールする」をご参照ください。

前提条件

  • Kubernetes クラスターのバージョンが 1.18 以降であること。

  • Kubernetes クラスターが Alibaba Cloud にデプロイされていない場合は、クラスターがインターネットにアクセスできることを確認してください。Cloud Enterprise Network (CEN) インスタンスを使用して、クラスターを Alibaba Cloud Virtual Private Cloud (VPC) に接続することもできます。

  • JDK のバージョンがアプリケーション監視でサポートされていること。詳細については、「ARMS でサポートされている Java コンポーネントとフレームワーク」をご参照ください。

  • プロセスの最大ヒープメモリが 256 MB を超えていること。

(推奨) 方法 1: 登録済み ACK クラスターを介して ARMS に接続する

登録済み ACK クラスターを使用する利点:

  • より効率的な O&M サポート。

  • モニタリング、ロギング、バックアップとリカバリ、セキュリティ、弾性のあるクラウドリソースなど、Container Service for Kubernetes (ACK) クラスターのより多くの拡張機能にアクセスできます。詳細については、「登録済みクラスターの概要」をご参照ください。

  1. Kubernetes クラスターを ACK One に接続します。詳細については、「ACK One 登録済みクラスターの作成」をご参照ください。

  2. 登録済みクラスターに ack-onepilot コンポーネントをインストールします。詳細については、「Application Real-Time Monitoring Service を登録済みクラスターに接続する」をご参照ください。

方法 2: ARMS に直接接続する

重要

この方法では、登録済み ACK クラスターを使用しません。接続後、CPU、メモリ、ディスク、ネットワーク情報などのコンテナー関連情報は関連付けたり表示したりできません。[アプリケーションインスタンス] ページには、ARMS によって収集されたコンテナー環境データのみが表示されます。Prometheus エージェントが Managed Service for Prometheus に接続して取得したコンテナーデータを表示することはできません。詳細については、「Java アプリケーションインスタンスの監視」をご参照ください。

ステップ 1: Helm V3 のインストール

ステップ 2: エージェントのインストール

アプリケーション監視は、ステートレス (Deployment) アプリケーションとステートフル (StatefulSet) アプリケーションの両方の接続をサポートしています。接続方法は両方のタイプで同じです。このセクションでは、Kubernetes 環境のステートレス (Deployment) アプリケーションを例として使用します。

  1. 次の wget コマンドを実行して、ack-onepilot インストールパッケージをダウンロードします。

     wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz'
  2. 次のコマンドを実行して、ack-onepilot インストールパッケージを解凍します。

    tar xvf ack-onepilot-5.1.1.tgz                 
  3. インストールパッケージ内の values.yaml ファイルを編集します。必要に応じて次のパラメーターを変更し、ファイルを保存します。

    registry: registry-__ACK_REGION_ID__.ack.aliyuncs.com/acs/
    cluster_id: __ACK_CLUSTER_ID__
    accessKey: __ACCESSKEY__
    accessKeySecret: __ACCESSKEY_SECRET__
    uid: "__ACK_UID__"
    region_id: __ACK_REGION_ID__
    • registry: ack-onepilot コンポーネントのレジストリのアドレス。

    • cluster_id: Kubernetes クラスターのカスタム ID。この ID は一意である必要があります。推奨されるフォーマットは <uid>-<clusterid> です。

    • accessKey および accessKeySecret: Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret。AccessKey ペアを取得するには、「AccessKey の作成」をご参照ください。

      重要
      • Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限が付与されていることを確認してください。

      • RAM ユーザーの場合は、AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限が RAM ユーザーにも付与されていることを確認してください。詳細については、「RAM ユーザーへの権限付与」をご参照ください。

      • セキュリティのため、Kubernetes Secret を使用して AccessKey ID と AccessKey Secret を保護できます。詳細については、「方法 2: Kubernetes Secret を使用して AccessKey ペアをインポートする」をご参照ください。

    • uid: Alibaba Cloud アカウントの ID。ID を取得するには、Alibaba Cloud 管理コンソールの右上隅にあるプロフィール写真にポインターを合わせます。

    • region_id: Alibaba Cloud リージョンの ID。アプリケーション監視をサポートするリージョンの詳細については、「リージョン」をご参照ください。

    説明

    ターゲットクラスターがエッジクラスターである場合は、nodeSelector アノテーションを追加して、ack-onepilot コンポーネントをクラウドにスケジュールします。これにより、ack-onepilot が期待どおりに動作することが保証されます。

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: xxx
      namespace: xxx
    spec:
      template:
        spec:
          nodeSelector:
            # 実際のノードセレクターに置き換えます。
            alibabacloud.com/is-edge-worker: "false"
  4. 次のコマンドを実行して ack-onepilot をインストールします。

    このコマンドは、ack-onepilot インストールパッケージの親ディレクトリから実行します。

    helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace

ステップ 3: アプリケーションの YAML ファイルの変更

  1. 次のコマンドを実行して、ターゲットのステートレス (Deployment) アプリケーションの YAML ファイルを表示します。

    kubectl get deployment {deployment-name} -o yaml                            
    説明

    {deployment-name} がわからない場合は、次のコマンドを実行してすべてのステートレス (Deployment) アプリケーションを表示します。結果からターゲットアプリケーションを見つけ、その YAML ファイルを表示します。

    kubectl get deployments --all-namespace                
  2. ターゲットのステートレスアプリケーション (Deployment) の YAML ファイルを編集できます。

    kubectl edit deployment {Deployment-name} -o yaml                        
  3. YAML ファイルで、spec.template.metadata パスの下に次の内容を追加します。

    labels:
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: "<your-deployment-name>"    # <your-deployment-name> を実際のアプリケーション名に置き換えます。
      armsSecAutoEnable: "on"    # アプリケーションをアプリケーションセキュリティに接続する場合は、このパラメーターを設定する必要があります。
    説明
    • アプリケーションセキュリティの詳細については、「アプリケーションセキュリティとは」をご参照ください。

    • アプリケーションセキュリティの課金ルールの詳細については、「課金」をご参照ください。

    Kubernetes 環境で新しいステートレス (Deployment) アプリケーションを作成して ARMS に接続するには、次の完全な YAML ファイルをリファレンスとして使用します。

    完全なサンプル YAML ファイルを表示するには展開します

    apiVersion: apps/v1beta1 # 1.8.0 より前のバージョンの場合は 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
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "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:
        # このサービスが提供するポート
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      # このサービスへのトラフィックを受信するために一致する必要があるラベルのキーと値
      selector:
        app: mysql
    ---
  4. 構成を保存すると、アプリケーションは自動的に再起動して変更を適用します。

    2〜5 分後、ARMS コンソール[アプリケーション監視] > [アプリケーションリスト] ページにアプリケーションが表示され、データがレポートされている場合、アプリケーションは正常に接続されています。