他の主要な APM エージェントと同様に、ARMS エージェントは ASM などのフレームワークに基づくバイトコードインストルメンテーションを使用して、監視データを自動的に収集します。2 つの APM エージェントを同時に実行すると、コードが 2 回インストルメント化されます。ベンダーによってインストルメンテーションの実装方法が異なるため、コードの競合により、アプリケーションの起動の遅延や監視データの損失などの問題が発生する可能性があります。複数の APM エージェントを同時にインストールしないことを推奨します。
サードパーティの APM 製品から ARMS Application Monitoring へ移行する場合など、移行期間中は、2 つの APM エージェントを同時に実行する必要がある場合があります。ARMS は、このような移行期間中の互換性について広範なテストを実施しています。ただし、両方のエージェントが同じプラグインを拡張する場合、ローカルでの競合が発生する可能性があります。この場合は、ARMS のアプリケーションにある カスタム設定 で、競合するプラグインを無効にしてください。
ローカルでの競合が発生しない場合でも、複数のエージェントを実行すると、アプリケーションのパフォーマンスが低下する可能性があります。移行が完了したら、ARMS エージェントのみがインストールされていることを確認してください。
SkyWalking のキャッシュメカニズムにより、Arthas などの ARMS 機能が正しく動作しない互換性の問題が発生する可能性があります。SkyWalking から ARMS Application Monitoring に移行する場合は、移行期間中に SkyWalking のキャッシュメカニズムに起因する互換性の問題を解決するため、Java 起動コマンドに次のパラメータを追加してください。詳細については、「SkyWalking の公式ドキュメント」をご参照ください。
-Dskywalking.agent.is_cache_enhanced_class=true -Dskywalking.agent.class_cache_mode=MEMORY
2 つの APM エージェントを実行していて、起動エラーやリクエストの失敗が発生した場合は、エージェントのロード順序を調整してアプリケーションを再起動してください。次の方法を推奨します。
-
手動インストールの起動パラメータの調整
Container Service for Kubernetes (ACK) 環境で自動インストールを使用した場合は、手動インストールに切り替えてみてください。すでに手動インストールを使用している場合は、起動スクリプト内のオープンソース SkyWalking エージェントと ARMS エージェントのロード順序を調整してください。ARMS エージェントが最後にロードされるようにしてください。
Spring Boot の例:
-javaagent:/home/admin/apache-skywalking-apm-bin/agent/skywalking-agent.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar -
自動インストールの JVM パラメータの追加
Container Service for Kubernetes (ACK) 環境で自動インストールを使用した場合、手動インストール用に起動スクリプトを変更するには、かなりの労力が必要になる可能性があります。代替手段として、コンテナ環境に JVM パラメータを追加できます。
-
ACK コンソールにログインします。対象クラスターの デプロイメント ページで、ARMS で監視されているアプリケーションを見つけ、[操作] 列の [編集] をクリックします。
-
環境変数 セクションで、SkyWalking エージェントのパラメータを追加し、[更新] をクリックします。
[タイプ] で [カスタム] を選択します。[変数名] に
JAVA_TOOL_OPTIONSを入力します。[値] に-javaagent:/home/admin/apache-skywalking-apm-bin/agent/skywalking-agent.jarを入力します。
-
TTL-Agent、Pinpoint、OTel Agent などの他のオープンソース APM エージェントの場合、同じ方法でエージェントのロード順序を調整することで、起動時または実行時の問題を解決できます。エージェントパッケージ名とパスを、使用しているものに置き換えてください。たとえば、TransmittableThreadLocal エージェントのロード順序を調整するには、次のいずれかの方法を使用してください。
-
手動インストールの起動パラメータの調整
Container Service for Kubernetes (ACK) 環境で自動インストールを使用した場合は、手動インストールに切り替えてみてください。すでに手動インストールを使用している場合は、起動スクリプト内のオープンソース TTL エージェントと ARMS エージェントのロード順序を調整してください。ARMS エージェントが最後にロードされるようにしてください。
Spring Boot の例:
-javaagent:/home/admin/transmittable-thread-local-2.14.2.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar -
自動インストールの JVM パラメータの追加
Container Service for Kubernetes (ACK) 環境で自動インストールを使用した場合、手動インストール用に起動スクリプトを変更するには、かなりの労力が必要になる可能性があります。代替手段として、コンテナ環境に JVM パラメータを追加できます。
-
ACK コンソールにログインします。対象クラスターの デプロイメント ページで、ARMS で監視されているアプリケーションを見つけ、[操作] 列の [編集] をクリックします。
-
環境変数 セクションで、TTL エージェントのパラメータを追加し、[更新] をクリックします。
[タイプ] で [カスタム] を選択します。[変数名] に
JAVA_TOOL_OPTIONSを入力します。[値] に-javaagent:/home/admin/transmittable-thread-local-2.14.2.jarを入力します。
-
バイトコード暗号化ツールを使用する場合は、ARMS エージェントをインストールした後のアプリケーション起動の失敗を防ぐために、次の要件を満たしてください。
-
カスタムエージェントが最初に実行され、ARMS エージェントが最後に実行されるようにしてください。
-
アプリケーションが正常に統合されるように、バージョン 4.x 以降の ARMS エージェントを使用してください。