他の主要なアプリケーションパフォーマンス管理 (APM) サービスと同様に、Application Real-Time Monitoring Service (ARMS) エージェントは、ASM フレームワークに基づくバイトコードインストルメンテーションを使用して、自動監視データ収集を実装します。異なるベンダーによって開発された APM エージェントは、異なるコードを使用してバイトコードインストルメンテーションを実装します。 2 つの APM エージェントをインストールすると、コードに対してバイトコードインストルメンテーションが 2 回実行されます。コードの競合により、アプリケーションの起動が遅くなったり、データが失われたりするなど、さまざまな問題が発生する可能性があります。そのため、複数の APM エージェントをインストールしないことをお勧めします。
サードパーティの APM サービスから ARMS アプリケーションモニタリングに監視ソリューションを移行する場合、移行期間中に 2 つの APM エージェントが共存する可能性があります。エージェント間の互換性を高めるために、ARMS は多数の互換性テストを実施しています。ただし、APM エージェントがアプリケーションのプラグインを同期的に拡張する場合、ローカルの競合が発生する可能性があります。競合を防ぐには、アプリケーションのカスタム設定でプラグインを無効にすることができます。
ローカルの競合がない場合でも、複数の APM エージェントをインストールすると、アプリケーションのパフォーマンスに影響します。移行が完了したら、ARMS エージェントのみがインストールされていることを確認してください。
また、SkyWalking のキャッシュメカニズムは互換性に影響します。その結果、Arthas などの ARMS 機能が使用できなくなります。SkyWalking から ARMS アプリケーションモニタリングに監視ソリューションを移行する場合は、移行期間中に Java 起動コマンドに次のパラメータを追加して、キャッシュメカニズムを無効にすることをお勧めします。詳細については、SkyWalking のドキュメントを参照してください。
-Dskywalking.agent.is_cache_enhanced_class=true -Dskywalking.agent.class_cache_mode=MEMORY
ARMS エージェントと SkyWalking エージェントをインストールしていて、アプリケーションの起動エラーまたはランタイムのビジネスリクエストエラーが発生した場合は、エージェントのマウントシーケンスを調整して再起動できます。次のいずれかの方法を使用します。
起動パラメータの変更
スクリプトを変更し、スクリプトで ARMS エージェントの前に SkyWalking エージェントをマウントする必要があります。ARMS エージェントが Container Service for Kubernetes (ACK) クラスタに自動的にインストールされた場合は、エージェントをアンインストールし、ARMS エージェントを手動で再インストールしてから、スクリプトを変更できます。
Spring Boot を例にとります。
-javaagent:/home/admin/apache-skywalking-apm-bin/agent/skywalking-agent.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar
JVM パラメータの追加
ACK クラスタに自動的にインストールされた ARMS エージェントの場合、ACK クラスタに JVM パラメータを追加して、変更を簡素化することもできます。
ACK コンソールにログインします。クラスタのデプロイメントページに移動し、アプリケーションを見つけて、アクション列の編集をクリックします。
環境変数セクションで、SkyWalking エージェントの JVM パラメータを追加し、更新をクリックします。
ARMS エージェントと、transmittableThreadLocal (TTL)、Pinpoint、または OTel エージェントなどの別の APM エージェントをインストールしていて、アプリケーションの起動エラーまたはランタイムのビジネスリクエストエラーが発生した場合は、前述の手順を参照して、エージェントのマウントシーケンスを調整して再起動できます。ただし、ビジネス要件に基づいて、エージェントパッケージ名とマウントパスを変更する必要があります。たとえば、TTL エージェントの場合は、次のいずれかの方法を使用します。
起動パラメータの変更
スクリプトを変更し、スクリプトで ARMS エージェントの前に TTL エージェントをマウントする必要があります。ARMS エージェントが ACK クラスタに自動的にインストールされた場合は、エージェントをアンインストールし、ARMS エージェントを手動で再インストールしてから、スクリプトを変更できます。
Spring Boot を例にとります。
-javaagent:/home/admin/transmittable-thread-local-2.14.2.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar
JVM パラメータの追加
ACK クラスタに自動的にインストールされた ARMS エージェントの場合、ACK クラスタに JVM パラメータを追加して、変更を簡素化することもできます。
ACK コンソールにログインします。クラスタのデプロイメントページに移動し、アプリケーションを見つけて、アクション列の編集をクリックします。
環境変数セクションで、TTL エージェントの JVM パラメータを追加し、更新をクリックします。
暗号化ツールを使用してバイトコードを暗号化する場合は、起動エラーを回避するために、エージェントが次の要件を満たしていることを確認してください。
カスタムエージェントは、ARMS エージェントの前に実行されます。
ARMS エージェントのバージョンは 4.x 以降です。詳細については、Java 用 ARMS エージェントのリリースノートを参照してください。