Application Real-Time Monitoring Service (ARMS) を使用して、汎用 Kubernetes 環境におけるアプリケーションのトポロジー、API 呼び出し、異常なトランザクションと低速なトランザクション、および SQL クエリをモニタリングします。このトピックでは、汎用 Kubernetes 環境で Java アプリケーションを ARMS アプリケーションモニタリングに接続する方法について説明します。
ご利用の Kubernetes クラスターが Container Service for Kubernetes (ACK) によって提供されている場合、このトピックは適用されません。ACK クラスターを ARMS に接続する方法については、「ack-onepilot コンポーネントを使用した Container Service for Kubernetes (ACK) および Container Compute Service (ACS) への Java エージェントのインストール」をご参照ください。
前提条件
-
ご利用の Kubernetes クラスターがバージョン 1.18 以降であることを確認します。
-
ご利用の Kubernetes クラスターが Alibaba Cloud にデプロイされていない場合、クラスターがパブリックネットワークに接続できることを確認します。Cloud Enterprise Network (CEN) などのサービスを使用して、クラスターを Alibaba Cloud VPC に接続することもできます。
JDK バージョンを確認します。詳細については、「サポートされている JDK バージョン」をご参照ください。
プロセスの最大ヒープメモリが 256 MB より大きいことを確認します。
(推奨) 方法 1: 登録済み ACK クラスターを介した ARMS への接続
登録済み ACK クラスターを使用するメリットは次のとおりです。
-
より効率的な O&M サポート。
-
モニタリング、ロギング、バックアップと復元、セキュリティ、弾力的なクラウドリソースなど、より多くの ACK クラスターの拡張機能へのアクセス。詳細については、「登録済みクラスターの概要」をご参照ください。
-
Kubernetes クラスターを ACK One に接続します。詳細については、「ACK One の登録済みクラスターの作成」をご参照ください。
-
登録済みクラスターに ack-onepilot コンポーネントをインストールします。詳細については、「Application Real-Time Monitoring Service (ARMS) を登録済みクラスターに接続」をご参照ください。
方法 2: ARMS への直接接続
このメソッドは、登録済みの ACK クラスターを使用しません。ARMS に接続すると、CPU、メモリ、ディスク、ネットワーク使用量などのコンテナ情報は表示されません。[アプリケーションインスタンス] ページでは、ARMS によって収集されたコンテナデータのみが表示されます。Managed Service for Prometheus に接続しても、Prometheus エージェントからのコンテナデータを表示することはできません。詳細については、「Java アプリケーションインスタンスのモニタリング」をご参照ください。
ステップ 1: Helm 3 のインストール
ステップ 2: エージェントのインストール
ARMS アプリケーションモニタリングは、ステートレス (Deployment) アプリケーションと StatefulSet アプリケーションの接続をサポートしています。接続方法はどちらのタイプでも同じです。このセクションでは、Kubernetes 環境におけるステートレス (Deployment) アプリケーションを例として使用します。
-
次の
wgetコマンドを実行して、ack-onepilot インストールパッケージをダウンロードします。wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz' -
次のコマンドを実行して、ack-onepilot インストールパッケージを解凍します。
tar xvf ack-onepilot-5.1.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 ペアの取得方法の詳細については、「AccessKey ペアの作成」をご参照ください。重要-
Alibaba Cloud アカウントに AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限があることを確認します。
-
Resource Access Management (RAM) ユーザーを使用している場合、RAM ユーザーにも AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限があることを確認します。詳細については、「RAM ユーザー権限の管理」をご参照ください。
-
AccessKey ペアのセキュリティを確保するために、Kubernetes Secret を使用して AccessKey ID と AccessKey Secret を非表示にできます。詳細については、「方法 2: Kubernetes Secret を使用した AccessKey ペアのインポート」をご参照ください。
-
-
uid: ご利用の Alibaba Cloud アカウントの ID。ID を取得するには、Alibaba Cloud 管理コンソールの右上隅にあるプロフィール画像にポインターを合わせます。 -
region_id: Alibaba Cloud リージョンの ID。アプリケーションモニタリングがサポートするリージョンの詳細については、「リージョンとゾーン」をご参照ください。
説明宛先クラスターがエッジクラスターの場合、ack-onepilot コンポーネントをクラウドにスケジュールするために nodeSelector アノテーションを追加します。これにより、ack-onepilot が期待どおりに動作することが保証されます。
kind: Deployment apiVersion: apps/v1 metadata: name: xxx namespace: xxx spec: template: spec: nodeSelector: # Replace it with the actual node selector. 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>" # Replace <your-deployment-name> with your application name. aliyun.com/app-language: java説明アプリケーションセキュリティの詳細については、「アプリケーションセキュリティとは」をご参照ください。
アプリケーションセキュリティの課金については、「課金概要」をご参照ください。
Kubernetes 環境で新しいステートレス (Deployment) アプリケーションを作成し、ARMS に接続する場合は、次の完全な YAML ファイルを使用します。
-
設定を保存すると、変更を有効にするためにアプリケーションが自動的に再起動します。
2~5分後、アプリケーションが ページに ARMS コンソールで表示され、データが報告されている場合、接続は成功しています。