このトピックでは、Application Real-Time Monitoring Service (ARMS) を使用して、Alibaba Cloud Container Service for Kubernetes で実行されているアプリケーションをモニターする方法について説明します。

ARMS の概要

ARMS は、Alibaba Cloud によって開発された Java アプリケーションパフォーマンス管理 (APM) モニタリングプロダクトです。

ARMS を使用して Java アプリケーションをモニターする場合、コードを変更することなく、アプリケーションの起動スクリプトにプローブをマウントするだけです。 アプリケーションを包括的にモニターすることで、障害のある低速のインターフェイスをすばやく見つけ、パラメーターの呼び出しを再現し、メモリリークの検出や、システムのボトルネックの発見など、オンラインで問題をより効率的に診断します。 詳細は、「ARMS」をご参照ください。

ARMS は、次のようにアプリケーションをモニターします。
  • アプリケーショントポロジを自動的に検出。
  • インターフェイスを自動的に検出してモニター。
  • 例外トランザクションと遅いトランザクションをキャプチャし、SQL 分析を提供。
  • Java 例外レポートを提供。
  • トレースベースのトランザクションスナップショットクエリを提供。
  • 多次元トレース検索や例外トレース検索など、多次元アドホックトラブルシューティングを提供。
  • PaaS プラットフォームを統合。

前提条件

ARMS コンポーネントをインストールする

  1. Container Service コンソール にログインします。
  2. 左側のナビゲーションウィンドウから、[ストア] > [アプリのカタログ] をクリックします。 [アプリのカタログ] ページで、 ack-arms-pilot を選択します。
  3. [アプリカタログ -ack-arms-pilot] ページで、 [デプロイ] をクリックします。
左側のナビゲーションウィンドウで、[アプリケーション] > [デプロイメント] を選択し、対象となるクラスターと名前空間を選択します。 ack-arms-pilot-default-ack-arms-pilot という名前のアプリケーションがページに表示されます。

ARMS を使用するための権限付与

  1. Container Service-Kubernetes の左側のナビゲーションウインドウで 、[クラスター] > [クラスター] を選択します。
    このセクションで必要な操作を実行するには、プライマリアカウントを使用して、Container Service コンソールにログインする必要があります。
  2. 対象となるクラスター名をクリックして、クラスターの詳細を表示します。
  3. [クラスターリソース] エリアで、 [Worker RAM ロール] をクリックします。

    このトピックでは、RAM コンソールの最新バージョンを使用しています。

    RAM コンソールの以前のバージョンを使用している場合は、次のいずれかの方法を使用して、対象となるポリシードキュメントを変更できます。

    方法 1

    1. 左側のナビゲーションウィンドウで、[ロール] をクリックし、[ロール名] ボックスで、 [Worker RAM ロール] 名を入力します。 対象となる [ロール名] をクリックします。
    2. [基本情報] エリアで、右上隅の [基本情報の編集] をクリックします。

    方法 2

    RAM ダッシュボードページの右下隅にある [新バージョン] をクリックして、RAM コンソールの最新バージョンに切り替えます。 Container Service コンソールで、 [Worker RAM ロール] をクリックして、RAMコンソールにログインします。
  4. [RAM ロール] ページで、 [権限] タブページのポリシー名をクリックします。
  5. [ポリシー] ページで、 [ポリシードキュメント] タブページの [ポリシードキュメントの編集] をクリックします。
  6. [ポリシードキュメント] エリアで、次のフィールドを追加し、 [OK] をクリックします。
    {
        "Action": "rds:*",
        "Resource": "*",
        "Effect": "Allow"
    }

アプリケーションの ARMS モニタリングをデプロイする

ターゲットデプロイメントの作成に使用される YAML ファイルに、次の annotations を追加して、ARMS アプリケーションモニタリングをデプロイします。
annotations:
  armsPilotAutoEnable: "on"
  armsPilotCreateAppName: "<your-deployment-name>"
  • spec フィールドの templatemetadata にある annotations を YAML ファイルに追加する必要があります。
  • armsPilotCreateAppName の値は、ARMS によってモニターされるアプリケーションの名前です。
  1. Container Service コンソールの左側のナビゲーションウィンドウで、[アプリケーション] > [デプロイメント] をクリックします。
  2. 右上隅で、[テンプレートによる作成] をクリックします。
  3. 対象となるクラスターと名前空間を選択し、デプロイメントを作成します。
    apiVersion: apps/v1beta1 # for versions before 1.8.0 use 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:
          annotations:
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-k8s-demo"
          labels:
            app: arms-springboot-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 # for versions before 1.8.0 use 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:
        # the port that this service should serve on
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      # label keys and values that must match in order to receive traffic for this service
      selector:
        app: mysql
    ---
結果の検証
  1. Container Service コンソールの左側のナビゲーションウィンドウから [アプリケーション] > [デプロイ] を選択し、対象となるクラスターおよび名前空間を選択して、作成されたデプロイメントを表示します。
  2. 対象となるデプロイメントの [操作] 列で、[ARMS コンソール] をクリックして、アプリケーション概要インターフェイス呼び出し 、およびその他の情報など、アプリケーションの詳細を表示するために、ARMS コンソールにログインします。
    ARMS コンソール[操作] 列に表示されない場合、ARMS を使用するための権限を Container Service に付与しているかどうかを確認してください。 詳細は、「ARMS を使用するための権限付与」をご参照ください。