すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:MSE Java エージェントと他のエージェント間の互換性の問題を解決する

最終更新日:May 09, 2025

マイクロサービスモデルでは、アプリケーションパフォーマンス管理 (APM) ツール、トレース分析ツール、セキュリティスキャンツールなど、さまざまなパフォーマンス監視ツールまたはガバナンストゥールがほとんどの場合に使用されます。各ツールには、独自の Java エージェントが必要になる場合があります。ただし、複数のエージェントが共存する場合、互換性の問題は主にバイトコードインジェクションの競合とリソースの競合から発生します。このトピックでは、MSE Java エージェントと他の主要なエージェント間の互換性の問題について説明し、これらの問題に対する解決策を提供します。

概要

他の主要なエージェントと同様に、MSE Java エージェントは、Service Mesh (ASM) などのフレームワークを使用して、コードを変更せずにバイトコードをインストルメント化します。アプリケーションに 2 つのエージェントをインストールすると、コードは 2 回インストルメント化されます。コードのインストルメント化方法はベンダーによって異なり、コードの競合が発生する可能性があります。その結果、アプリケーションの起動が遅くなったり、機能が失敗したりするなど、さまざまな問題が発生する可能性があります。したがって、アプリケーションには複数のエージェントをインストールしないことをお勧めします。場合によっては、特別な要件または移行のトランジション期間中に、アプリケーションに 2 つのエージェントをインストールする必要があります。これらのシナリオに適応するために、Alibaba Cloud は MSE で多数のエージェント互換性テストを実施して、エージェントの互換性を向上させています。ただし、複数のエージェントが共存する場合、エージェントがプラグインでバイトコード拡張を実行すると、競合またはパフォーマンスの低下が発生する可能性があります。したがって、複数のエージェントの長期共存は推奨されません。

説明

Application Real-Time Monitoring Service (ARMS) と共に MSE を使用する場合は、「ARMS エージェントは、SkyWalking などの他の APM サービスのエージェントと互換性がありますか?」の手順に従うことをお勧めします。

OpenTelemetry

バージョン 4.x 以降の MSE Java エージェントは、OpenTelemetry 上に構築されています。したがって、オープンソースの OpenTelemetry を MSE Java エージェントと共に使用する場合、最初にインストールされたエージェントが有効になり、もう一方のエージェントはロードされなくなります。MSE Java エージェントが最初にインストールされていることを確認する必要があります。

SkyWalking

SkyWalking のキャッシュメカニズムが原因で、エージェントの互換性の問題が発生する可能性があります。その結果、MSE Java エージェントによって提供される一部の機能が使用できなくなります。SkyWalking キャッシュメカニズムを無効にするには、次のパラメーターを Java 起動コマンドに追加することをお勧めします。詳細については、「SkyWalking 公式ドキュメント」をご参照ください。

-Dskywalking.agent.is_cache_enhanced_class=true -Dskywalking.agent.class_cache_mode=MEMORY  

上記のパラメーターを追加した後に、アプリケーションの起動時または実行時に起動エラーやビジネスリクエストエラーなどの問題が発生した場合は、エージェントのインストール順序を調整してから、アプリケーションを再起動できます。エージェントのインストール順序を調整するための推奨される方法については、「その他の APM エージェント (TTL エージェントと Pinpoint を含む)」をご参照ください。

その他の APM エージェント (TTL エージェントと Pinpoint を含む)

MSE Java エージェントを TTL エージェントや Pinpoint などの別のオープンソース APM エージェントと共にインストールするときに、アプリケーションの起動時または実行時に問題が発生した場合は、エージェントのインストール順序を調整することで問題を解決できる場合があります。たとえば、MSE Java エージェントを TransmittableThreadLocal エージェントと共に使用する場合は、次のいずれかの方法を使用してエージェントのインストール順序を調整できます。

  • エージェントを手動でインストールするための起動パラメーターを調整する: エージェントを手動でインストールする場合は、アクセススクリプトでオープンソース TTL エージェントと MSE Java エージェントのインストール順序を調整して、MSE Java エージェントが TTL エージェントの後にインストールされるようにすることができます。

    Spring Boot アプリケーションのサンプルパラメーター:

    -javaagent:/home/admin/transmittable-thread-local-2.14.2.jar -javaagent:/{user.workspace}/AliyunJavaAgent/aliyun-java-agent.jar
  • エージェントを自動的にインストールするための Java 仮想マシン (JVM) パラメーターを追加する: エージェントが Container Service for Kubernetes (ACK) クラスタに自動的にインストールされる場合は、スクリプトを変更する代わりに、ACK コンソールで JVM パラメーターを追加できます。

    1. ACK コンソール にログインします。

    2. 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。次に、管理するクラスタの名前をクリックします。

    3. 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。

    4. [デプロイメント] ページで、アプリケーションの [アクション] 列にある [編集] をクリックします。

    5. [環境変数] に TTL エージェントパラメーターを追加し、[更新] をクリックします。

      image

暗号化エージェント

バイトコード暗号化ツールを使用してバイトコードを暗号化する場合は、次のエージェント要件を満たす必要があります。そうでない場合、アプリケーションに MSE Java エージェントをインストールした後に、アプリケーションの起動に失敗する可能性があります。