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

:ACK にデプロイされた Java アプリケーションの ARMS エージェントを自動的にインストールする

最終更新日:Dec 30, 2024

ack-onepilot をインストールすると、Application Real-Time Monitoring Service (ARMS) がアプリケーションの監視を開始します。アプリケーショントポロジー、インターフェース呼び出し、異常トランザクションや低速トランザクションなどの監視データを表示できます。このトピックでは、Container Service for Kubernetes (ACK) にデプロイされた Java アプリケーションの ARMS エージェントを自動的にインストールする方法について説明します。

説明
  • アプリケーションモニタリングコンポーネント ack-onepilot は、さまざまな言語の ARMS エージェントをインストールするエージェントインストールアシスタントです。コンテナ環境でエージェントがデータをレポートするための環境を自動的に準備し、ARMS エージェントパッケージを準備します。ack-onepilot の動作原理については、ack-onepilot コンポーネントの動作原理 を参照してください。

  • 古いコンポーネント arms-pilot はメンテナンスされていません。新しいコンポーネント ack-onepilot をインストールしてアプリケーションを監視できます。 ack-onepilot コンポーネントは arms-pilot と完全に互換性があります。アプリケーション構成を変更することなく、ack-onepilot をシームレスにインストールできます。詳細については、ack-onepilot をインストールし、arms-pilot をアンインストールする方法 を参照してください。

前提条件

手順 1: ack-onepilot をインストールする

  1. ACK コンソール にログインします。

  2. ACK コンソールの左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、クラスタの名前をクリックします。

  3. 左側のナビゲーションペインで、操作 > アドオン を選択します。アドオンページの右上隅に ack-onepilot と入力します。

  4. ack-onepilot カードの インストール をクリックします。

    説明

    デフォルトでは、ack-onepilot コンポーネントは 1,000 ポッドをサポートします。クラスタ内の 1,000 ポッドごとに、コンポーネントに 0.5 CPU コアと 512 MB のメモリを追加する必要があります。

  5. 表示されたダイアログボックスで、パラメータを設定し、OK をクリックします。デフォルト値を使用することをお勧めします。

    説明

    ack-onepilot をインストールした後、アドオン ページでアップグレード、設定、またはアンインストールできます。

手順 2: ARMS リソースへのアクセス許可を付与する

  • サーバーレス Kubernetes (ASK) クラスタ内のアプリケーション、または Elastic Container Instance (ECI) に接続された Kubernetes クラスタ内のアプリケーションを監視するには、まず クラウド リソースアクセス承認 ページで、クラスタに ARMS へのアクセスを承認する必要があります。次に、ack-onepilot コンポーネントがデプロイされているすべてのポッドを再起動します。

  • ARMS Addon Token がない ACK クラスタにデプロイされたアプリケーションを監視するには、次の操作を実行して、ACK クラスタに ARMS へのアクセスを承認します。ARMS Addon Token が存在する場合は、手順 3 に進んでください。

    クラスタに ARMS Addon Token が存在するかどうかを確認する

    1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、クラスタの名前をクリックして、クラスタ詳細ページに移動します。

    2. 左側のナビゲーションペインで、構成 > シークレット を選択します。ページの上部にある 名前空間 ドロップダウンリストから kube-system を選択し、シークレット ページに addon.arms.token が表示されているかどうかを確認します。

    説明

    クラスタに ARMS Addon Token がある場合、ARMS はクラスタでパスワードなしの承認を実行します。一部の ACK マネージドクラスタには、ARMS Addon Token が存在しない場合があります。ARMS を使用してクラスタ内のアプリケーションを監視する前に、ACK マネージドクラスタに ARMS Addon Token があるかどうかを確認することをお勧めします。クラスタに ARMS Addon Token がない場合は、クラスタに ARMS へのアクセスを手動で承認する必要があります。

    アクセス許可ポリシーを手動で追加する

    1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、クラスタの名前をクリックします。

    2. 基本情報 タブの クラスタ情報 ページで、クラスタリソース セクションの ワーカー RAM ロール の横にあるリンクをクリックします。

    3. 表示されたページの アクセス許可 タブで、アクセス許可の付与 をクリックします。

    4. アクセス許可の付与 パネルで、次のポリシーを追加し、アクセス許可の付与 をクリックします。

      • AliyunTracingAnalysisFullAccess: Managed Service for OpenTelemetry へのフルアクセス。

      • AliyunARMSFullAccess: ARMS へのフルアクセス。

  • ACK 専用クラスタまたは登録済みクラスタにデプロイされたアプリケーションを監視するには、Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限が付与されていることを確認します。RAM ユーザーに権限を付与する方法の詳細については、RAM ユーザーに権限を付与する を参照してください。

    ack-onepilot コンポーネントをインストールした後、ack-onepilot の構成ファイルに Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットを入力する必要があります。

    1. 左側のナビゲーションペインで、アプリケーション > Helm を選択します。次に、ack-onepilot の横にある 更新 をクリックします。

    2. accessKeyaccessKeySecret を Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットに置き換え、OK をクリックします。

      説明

      AccessKey ペアを取得する方法の詳細については、AccessKey ペアを作成する を参照してください。

      image

    3. デプロイメントを再起動します。

手順 3: アプリケーションのアプリケーションモニタリングを有効にする

アプリケーションの作成中に ARMS を有効にするには、次の手順を実行します。

  1. ACK コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。クラスタ ページで、クラスタを見つけ、アプリケーションアクション 列の をクリックします。

  2. デプロイメント ページで、右上隅にある YAML から作成 をクリックします。

  3. 表示されたページで、サンプルテンプレート ドロップダウンリストからテンプレートを選択し、ラベル仕様 > テンプレート > メタデータテンプレート コードエディタの パラメータに次の を追加します。

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

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

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

    YAML Example

    次の YAML テンプレートは、デプロイメントを作成し、アプリケーションのアプリケーションモニタリングを有効にする方法を示しています。

    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"
        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"
        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
    ---

結果の確認

デプロイメント ページでアプリケーションを見つけ、アクション 列に ARMS コンソール ボタンが表示されているかどうかを確認します。

ARMS Console Button

FAQ