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

Container Service for Kubernetes:Javaアプリケーションの監視

最終更新日:Dec 11, 2024

Container Service for Kubernetes (ack) にデプロイされているJavaアプリケーションのApplication Real-Time Monitoring Service (ARMS) のApplication MonitoringコンポーネントACK-onepilotをインストールすると、ARMSは自動的にアプリケーショントポロジの検出、3Dトポロジの生成、インターフェイスの監視、異常および低速トランザクションのキャプチャを開始します。 これにより、オンライン問題診断の効率が大幅に向上します。

背景

ARMSは、アプリケーションパフォーマンス管理 (APM) サービスです。 コードを変更することなく、ACKにデプロイされたJavaアプリケーションの包括的なモニタリングを提供します。 ack-onepilotをインストールして承認することで、失敗したリクエストとスローリクエストを効率的に識別し、リクエストパラメータを再現し、メモリリークを検出し、システムのボトルネックを発見できます。 ARMSアプリケーションモニタリングの詳細については、「アプリケーションモニタリングの概要」をご参照ください。

前提条件

  • 名前空間が作成されます。 詳細については、「名前空間とリソースクォータの管理」をご参照ください。 この例では、arms-demoという名前空間が使用されています。

  • JDKのバージョンは、Application Monitoringでサポートされています。 ARMSは次のJDKバージョンをサポートしています。

    • JDK 1.7.0 +

      重要

      ARMSエージェントV3.0.X以降はJava 7をサポートしなくなります。 まだJava 7を使用している場合は、Javaバージョンをアップグレードすることを推奨します。 詳細については、「アプリケーションモニタリングはJava 7をサポートしていません」をご参照ください。

    • JDK 1.8.0_25 +

      説明
      • Kubernetesクラスターにアプリケーションをデプロイする場合は、JDK V1.8.0_191以降を使用することを推奨します。

      • JDKのバージョンが1.8.0_25または1.8.0_31でないことを確認します。 そうしないと、ARMSエージェントのインストールに失敗する可能性があります。 この場合、JDKを最新の1.8.Xにアップグレードすることを推奨します。

    • JDK 11.0.8 +

    • JDK 17

  • ARMS が有効化されていること。 詳しくは、「ARMS の有効化」をご参照ください。

手順1: ARMS Application Monitoringコンポーネントのインストール

重要

古いアプリケーション監視コンポーネントのアームパイロットは、もはや維持されていません。 新しいコンポーネントack-onepilotをインストールして、アプリケーションを監視できます。 ack-onepilotは武器パイロットと完全に互換性があります。 アプリケーション設定を変更することなく、ack-onepilotをシームレスにインストールできます。 詳細については、「」をご参照ください。ack-onepilotをインストールしてarms-pilotをアンインストールするにはどうすればよいですか?

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. アドオンページで、ack-onepilotを検索します。

  4. ack-onepilotカードで、[インストール] をクリックします。 表示されるダイアログボックスで、必要に応じてパラメーターを設定します。 デフォルト値の使用を推奨します。 そして、[OK] をクリックします。

    説明

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

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

ステップ2: ARMSにリソースへのアクセスを許可する

  • addon.arms.tokenなしでACKクラスターにデプロイされたアプリケーションを監視するには、次の操作を実行してACKクラスターにARMSへのアクセスを許可します。 addon.arms.tokenがすでに存在する場合、それ以上の承認は必要ありません。

    説明

    ACKクラスターでは、addon.arms.tokenにより、ARMSはパスワードなしの認証を自動的に実行できます。 通常、ACK管理クラスターにはデフォルトでaddon.arms.tokenがあります。 ただし、以前に作成されたACK管理クラスターの一部には、addon.arms.tokenが含まれていない場合があります。

    1. クラスターにaddon.arms.tokenがあるかどうかを確認します。

      クラスター内のaddon.arms.tokenシークレットを確認します。

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

      2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[設定] > [秘密] を選択します。

      3. ページの上部で、[名前空間] ドロップダウンリストから [kube-system] を選択し、addon.arms.tokenが存在するかどうかを確認します。

    2. addon.arms.tokenが存在しない場合は、次の手順を実行して、ARMSリソースへのアクセスをクラスターに手動で許可します。

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

      2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。

      3. [基本情報] タブをクリックします。 [クラスターリソース] セクションで、[ワーカーRAMロール] の右側にあるリンクをクリックします。

      4. [権限] タブで、[権限付与] をクリックします。

      5. AliyunARMSFullAccessポリシーを選択し、[OK] をクリックします。

  • エラスティックコンテナインスタンスに接続されているACKマネージドクラスターにデプロイされているアプリケーションをモニタリングするには、[クラウドリソースアクセス権限付与] ページに移動して権限付与を完了します。 次に、ack-onepilot用に作成されたポッドを再起動します。

手順3: ARMSを有効にしてJavaアプリケーションを監視する

新しいアプリケーションを作成するときにアプリケーション監視を有効にするには、次の手順を実行します。

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. On theデプロイメントページをクリックします。YAMLから作成するページの上部にあります。

  4. On the作成ページからテンプレートを選択します。サンプルテンプレートドロップダウンリストを追加し、次のラベルspec.template.metadataフィールドのテンプレートコードエディター。

    labels:
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: "<your-deployment-name>"    # Replace <your-deployment-name> with the actual application name. 
      armsSecAutoEnable: "on"    # If you want to connect the application to Application Security, you must configure this parameter.
    説明

    YAML Example

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

    展開してYAML全体を表示emplate

    apiVersion: v1
    kind: Namespace
    metadata:
      name: arms-demo
    ---
    apiVersion: apps/v1 # For versions earlier than 1.8.0, use 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"
            one-agent.jdk.version: "OpenJDK11"
        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 # For versions earlier than 1.8.0, use apps/v1beta1.
    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"
            one-agent.jdk.version: "OpenJDK11"
        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:
        # The port that this Service listen on.
        - name: arms-demo-component-svc
          port: 6666
          targetPort: 8888
      # Label keys and values must match in order to receive traffic.
      selector:
        app: arms-springboot-demo-subcomponent
    ---
    apiVersion: apps/v1 # For versions earlier than 1.8.0, use 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:
        # The port that this Service listen on.
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      # Label keys and values must match in order to receive traffic.
      selector:
        app: mysql
    ---

結果を確認する

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

ARMS Console Button

次のステップ

上記の手順を完了すると、ACKでデプロイされたアプリケーションに対してARMSアプリケーションモニタリングが有効になります。 ARMSコンソールの [アプリケーション監視] ページにアクセスするには、アプリケーションの [操作] 列で [ARMSコンソール] をクリックします。 詳細については、「アプリケーションの概要」をご参照ください。image.png

よくある質問