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

:オープンソース Kubernetes クラスターに ARMS エージェントを自動的にインストールする

最終更新日:Dec 30, 2024

Application Real-Time Monitoring Service (ARMS) を使用して、Kubernetes クラスターにデプロイされているアプリケーションを監視できます。ARMS では、トポロジー、API リクエスト、異常トランザクション、低速トランザクション、SQL 分析など、さまざまなパフォーマンスメトリクスに基づいてアプリケーションを監視できます。このトピックでは、Kubernetes クラスターにデプロイされている Java アプリケーションを ARMS で監視できるようにする方法について説明します。

説明

このトピックは、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターには適用されません。ACK クラスターに ARMS エージェントをインストールする方法については、ACK に ARMS エージェントを自動的にインストールするを参照してください。

前提条件

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

  • クラスターがインターネット経由でアクセス可能であるか、Cloud Enterprise Network (CEN) インスタンスを使用して Alibaba Cloud 仮想プライベートクラウド (VPC) とクラスター間にネットワーク接続が確立されていること。

  • JDK のバージョンが Application Monitoring でサポートされていること。詳細については、ARMS でサポートされている Java コンポーネントとフレームワークを参照してください。

  • プロセスの最大ヒープメモリが 256 MB より大きいこと。

(推奨)方法 1:登録済み Kubernetes クラスターを使用して ARMS を有効にする

登録済み Kubernetes クラスターを使用するメリット:

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

  • クラウドでの監視、ロギング、バックアップと復元、セキュリティ、および弾性リソースなどの、より多くのスケーリング機能。詳細については、登録済みクラスターの概要を参照してください。

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

  2. 登録済み Kubernetes クラスターに ack-onepilot コンポーネントをインストールします。詳細については、登録済みクラスターで ARMS を有効にするを参照してください。

方法 2:ARMS を直接有効にする

重要

アプリケーションに対して ARMS を直接有効にした場合、Kubernetes クラスターの CPU、メモリ、ディスク、およびネットワーク情報は ARMS に同期されません。さらに、クラスターに Prometheus エージェントをインストールしても、前述の情報は取得できません。ARMS コンソールのアプリケーションインスタンスの詳細ページには、ARMS によって収集されたクラスターデータのみが表示されます。詳細については、Java アプリケーションインスタンスの監視を参照してください。

ステップ 1:Helm V3 をインストールする

ステップ 2:ARMS エージェントをインストールする

ARMS は、Deployment と StatefulSet の 2 種類のアプリケーションのみを監視できます。Deployment アプリケーションを ARMS で監視できるようにするには、次の手順を実行します。

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

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

    tar xvf ack-onepilot-3.3.3.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。<uid>-<clusterid> 形式でこのパラメーターを指定することをお勧めします。

    • accessKey および accessKeySecret:Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレット。AccessKey ペアを取得する方法については、AccessKey ペアの作成を参照してください。

      重要

      AliyunARMSFullAccess ポリシーと AliyunSTSAssumeRoleAccess ポリシーが Alibaba Cloud アカウントにアタッチされていることを確認してください。これらのポリシーを Resource Access Management (RAM) ユーザーにアタッチする方法については、RAM ユーザーに権限を付与するを参照してください。

    • uid:Alibaba Cloud アカウントの ID。Alibaba Cloud アカウントの ID を取得するには、Alibaba Cloud 管理コンソールの右上隅にあるプロフィール画像にポインターを移動します。

    • region_id:リージョン ID。Application Monitoring をサポートするリージョンの詳細については、サポートされているリージョンを参照してください。

    説明

    エッジクラスターに ARMS エージェントをインストールする場合は、ack-onepilot の正常な動作を確実にするために、nodeSelector アノテーションを追加して 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 {デプロイメントアプリケーションの名前} -o yaml                             
    説明

    デプロイメントアプリケーションの名前がわからない場合は、次のコマンドを実行してすべての Deployment アプリケーションを表示します。結果に必要な Deployment アプリケーションがあります。次に、アプリケーションの YAML ファイルを表示します。

    kubectl get deployments --all-namespace                
  2. 次のコマンドを実行して、Deployment アプリケーションの YAML ファイルを編集します。

    kubectl edit deployment {デプロイメントアプリケーションの名前} -o yaml                        
  3. YAML ファイルで、次のコンテンツを spec.template.metadata パラメーターに追加します。

    labels:
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: "<your-deployment-name>"    # <your-deployment-name> を実際のアプリケーション名に置き換えます。
      armsSecAutoEnable: "on"    # アプリケーションを Application Security に接続する場合は、このパラメーターを設定する必要があります。
    説明
    • 最適なユーザーエクスペリエンスを確保するために、ARMS エージェントをインストールした後、新しいエージェントバージョンがリリースされると、アプリケーションの再起動時に ack-onepilot コンポーネントが自動的にエージェントを最新バージョンに更新します。新しいリリースごとにエージェントを自動的に更新したくない場合は、バージョンを手動で制御できます。詳細については、エージェントバージョンの制御を参照してください。

    • Application Security については、Application Security とはを参照してください。

    • Application Security の課金ルールについては、課金を参照してください。

    次の例は、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 コントロールパネルARMS コンソールの アプリケーションモニタリング > アプリケーションリスト ページに表示され、特定の監視データが報告されている場合、アプリケーションは ARMS によって監視されています。ARMSコンソール