汎用的な Kubernetes 環境の Java アプリケーションを Application Real-Time Monitoring Service (ARMS) アプリケーションモニタリングに接続し、アプリケーションのトポロジー、API コール、低速なトランザクションと異常なトランザクション、および SQL クエリをモニタリングします。
お使いの Kubernetes クラスターが Container Service for Kubernetes (ACK) 上で実行されている場合、このトピックは適用されません。ACK クラスターを ARMS に接続するには、「ack-onepilot コンポーネントを使用した ACK および ACS 向け Java エージェントのインストール」をご参照ください。
前提条件
-
お使いの Kubernetes クラスターのバージョンが 1.18 以降であること。
-
お使いの Kubernetes クラスターが Alibaba Cloud 上にデプロイされていない場合は、クラスターがパブリックインターネットにアクセスできるか、Cloud Enterprise Network (CEN) またはその他の方法で Alibaba Cloud の VPC に接続されていることを確認してください。
ご利用の JDK バージョンが アプリケーションモニタリングでサポートされている こと
JVM の最大ヒープメモリ (
-Xmx) が 256 MB 以上であること
方法 1: ACK One の登録済みクラスターとの接続
ACK One の登録済みクラスターを使用するメリットは次のとおりです:
-
より効率的な O&M サポート。
-
モニタリング、ロギング、バックアップと復元、セキュリティ、エラスティッククラウドコンピューティングリソースなど、ACK のより多くのクラスター拡張機能へのアクセス。詳細については、「登録済みクラスターの概要」をご参照ください。
-
お使いの Kubernetes クラスターを ACK One に登録します。詳細については、「ACK One での登録済みクラスターの作成」をご参照ください。
-
登録済みクラスターに ack-onepilot コンポーネントをインストールします。詳細については、「登録済みクラスターの ARMS アプリケーションモニタリングへの接続」をご参照ください。
方法 2: ARMS への直接接続
この方法では、登録済みクラスターを使用しません。アプリケーションを接続した後、CPU、メモリ、ディスク、ネットワーク使用状況などのコンテナ関連情報は関連付けも表示もできません。その結果、[Application Instances] ページには ARMS が収集したコンテナ環境データのみが表示されます。また、Managed Service for Prometheus に接続して Prometheus エージェントからコンテナデータを表示することもできません。詳細については、「Java アプリケーションインスタンスのモニタリング」をご参照ください。
手順 1: Helm 3 のインストール
手順 2: エージェントのインストール
ARMS アプリケーションモニタリングは、ステートレス (Deployment) とステートフル (StatefulSet) のアプリケーションのみをサポートします。接続方法は両方のタイプで同じです。次の例では、ステートレス (Deployment) アプリケーションを使用します。
-
次の
wgetコマンドを実行して、ack-onepilot インストールパッケージをダウンロードします。wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.2.1.tgz' -
次のコマンドを実行して、ack-onepilot インストールパッケージを抽出します。
tar xvf ack-onepilot-5.2.1.tgz -
必要に応じて 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 ペアの作成」をご参照ください。重要-
Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限があることを確認してください。
-
RAM ユーザーを使用している場合は、RAM ユーザーにも AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限があることを確認してください。手順については、「RAM ユーザーへの権限付与」をご参照ください。
-
セキュリティのため、Secret を使用して AccessKey ペアを管理できます。詳細については、「方法 2: 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" -
-
次のコマンドを実行して ack-onepilot をインストールします。
このコマンドは、ack-onepilot インストールパッケージディレクトリの外部から実行してください。
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
手順 3: アプリケーションの YAML ファイルの変更
-
次のコマンドを実行して、対象のステートレス (Deployment) アプリケーションの YAML ファイルを表示します。
kubectl get deployment {deployment-name} -o yaml説明{deployment-name}がわからない場合は、次のコマンドを実行してすべてのステートレス (Deployment) アプリケーションを表示します。出力から対象のアプリケーションを見つけ、その YAML ファイルを表示します。kubectl get deployments --all-namespaces -
次のコマンドを実行して、対象のステートレス (Deployment) アプリケーションの YAML ファイルを編集します。
kubectl edit deployment {deployment-name} -o yaml -
YAML ファイルの spec.template.metadata セクションに次の内容を追加します。
labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" #をお使いのアプリケーション名に置き換えます。 aliyun.com/app-language: java 説明アプリケーションセキュリティの詳細については、「アプリケーションセキュリティとは」をご参照ください。
アプリケーションセキュリティの課金の詳細については、「課金の概要」をご参照ください。
次のサンプル YAML ファイルは、新しいステートレス (Deployment) アプリケーションを作成して ARMS に接続する例です。
-
設定を保存すると、アプリケーションは自動的に再起動して変更を適用します。
2〜5 分後、ARMS コンソール の ページにアプリケーションが表示され、データのレポートが開始されると、接続は成功しています。