Application Real-Time Monitoring Service (ARMS) を使用して、オープンソースの Kubernetes クラスター内のアプリケーションを監視できます。ARMS を使用すると、アプリケーションのトポロジー、API 呼び出し、異常なトランザクションと遅いトランザクション、および SQL 分析を監視できます。このトピックでは、オープンソースの Kubernetes クラスター内の Java アプリケーションを ARMS アプリケーション監視に接続する方法について説明します。
このトピックは、Kubernetes クラスターが Container Service for Kubernetes (ACK) によって提供されている場合には適用されません。ACK クラスターを ARMS に接続するには、「ack-onepilot コンポーネントを使用して ACK および Container Compute Service (ACS) 用の Java エージェントをインストールする」をご参照ください。
前提条件
Kubernetes クラスターのバージョンが 1.18 以降であること。
Kubernetes クラスターが Alibaba Cloud にデプロイされていない場合は、クラスターがインターネットにアクセスできることを確認してください。Cloud Enterprise Network (CEN) インスタンスを使用して、クラスターを Alibaba Cloud Virtual Private Cloud (VPC) に接続することもできます。
JDK のバージョンがアプリケーション監視でサポートされていること。詳細については、「ARMS でサポートされている Java コンポーネントとフレームワーク」をご参照ください。
プロセスの最大ヒープメモリが 256 MB を超えていること。
(推奨) 方法 1: 登録済み ACK クラスターを介して ARMS に接続する
登録済み ACK クラスターを使用する利点:
より効率的な O&M サポート。
モニタリング、ロギング、バックアップとリカバリ、セキュリティ、弾性のあるクラウドリソースなど、Container Service for Kubernetes (ACK) クラスターのより多くの拡張機能にアクセスできます。詳細については、「登録済みクラスターの概要」をご参照ください。
Kubernetes クラスターを ACK One に接続します。詳細については、「ACK One 登録済みクラスターの作成」をご参照ください。
登録済みクラスターに ack-onepilot コンポーネントをインストールします。詳細については、「Application Real-Time Monitoring Service を登録済みクラスターに接続する」をご参照ください。
方法 2: ARMS に直接接続する
この方法では、登録済み ACK クラスターを使用しません。接続後、CPU、メモリ、ディスク、ネットワーク情報などのコンテナー関連情報は関連付けたり表示したりできません。[アプリケーションインスタンス] ページには、ARMS によって収集されたコンテナー環境データのみが表示されます。Prometheus エージェントが Managed Service for Prometheus に接続して取得したコンテナーデータを表示することはできません。詳細については、「Java アプリケーションインスタンスの監視」をご参照ください。
ステップ 1: Helm V3 のインストール
ステップ 2: エージェントのインストール
アプリケーション監視は、ステートレス (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 権限が付与されていることを確認してください。
RAM ユーザーの場合は、AliyunARMSFullAccess および AliyunSTSAssumeRoleAccess 権限が RAM ユーザーにも付与されていることを確認してください。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
セキュリティのため、Kubernetes Secret を使用して AccessKey ID と AccessKey Secret を保護できます。詳細については、「方法 2: Kubernetes 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-namespaceターゲットのステートレスアプリケーション (Deployment) の YAML ファイルを編集できます。
kubectl edit deployment {Deployment-name} -o yamlYAML ファイルで、spec.template.metadata パスの下に次の内容を追加します。
labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # <your-deployment-name> を実際のアプリケーション名に置き換えます。 armsSecAutoEnable: "on" # アプリケーションをアプリケーションセキュリティに接続する場合は、このパラメーターを設定する必要があります。説明アプリケーションセキュリティの詳細については、「アプリケーションセキュリティとは」をご参照ください。
アプリケーションセキュリティの課金ルールの詳細については、「課金」をご参照ください。
Kubernetes 環境で新しいステートレス (Deployment) アプリケーションを作成して ARMS に接続するには、次の完全な YAML ファイルをリファレンスとして使用します。
構成を保存すると、アプリケーションは自動的に再起動して変更を適用します。
2〜5 分後、ARMS コンソールの ページにアプリケーションが表示され、データがレポートされている場合、アプリケーションは正常に接続されています。