Java エージェント API と iSDK

Splunk AppDynamics は、すぐにアプリケーション アクティビティを自動的に検出します。サポートされているアプリケーション フレームワークについては、エージェントにはすぐに利用可能な設定が付属しています。これにより、以下を識別するアプリケーションにインストルメンテーションが適用されます。

  • ビジネス トランザクション アクティビティの開始場所
  • スレッドハンドオフの発生場所
  • ダウンストリームシステムへのコールが行われる場所、および発信メッセージに相関ヘッダーを挿入し、着信メッセージからそれらを取得する方法。これにより、Splunk AppDynamics がアプリケーション アーキテクチャを通じてエンドツーエンドのトランザクションフローを確立できるようになります。

設定済みのサポートに対応していないフレームワークの場合、エージェントがエージェント API のセットを提供することにより、アプリケーション開発者はコードを変更してエージェントにコールを追加できるようになります。これにより、エージェントが実行時にビジネストランザクションを識別して追跡できるようになり、アプリケーションのエンドツーエンドの可視性が提供されます。

アプリケーションコードを変更できないシナリオ(たとえば、サードパーティ製品やフレームワークにインストルメンテーションを追加する場合など)では、これらの API の使用をサポートする「インストルメンテーション SDK」が提供されています。iSDK を使用すると、開発者は「インターセプタ」を作成できます。これは、エージェントによって起動時に指定されたポイントでアプリケーション バイトコードに挿入されます。これらのインターセプタには、何らかの Java コード(エージェント API へのコールを含む)を含めることができます。これは、傍受されたメソッド自体が実行される前または後に、インターセプタで提供されたコードが実行されるときに実行されます。

任意のエージェント API と設定済みのインストルメンテーションをシームレスに組み合わせて、サポート対象およびサポート対象外のフレームワークが混在している状況をサポートできます(たとえば、独自の API を使用して外部コールを行う標準のサーブレットなど)。

Java エージェント API を使用すると、次のプログラムを実行することができます。

  • ビジネストランザクションの定義
  • イグジットコールの定義
  • アプリケーションがスレッド間のトランザクション処理をハンドオフする場合のエージェントへの通知
  • スナップショットまたはトランザクション分析へのアプリケーションデータの追加
  • カスタムメトリックの報告

アプリケーションをインストゥルメント化する場合、エージェント API 設計は、インストルメンテーションを介したアプリケーション トランザクションの成功に優先順位を付けます。このため、エージェント API コールのいずれかが失敗した場合は、トランザクションフローを中断する例外はスローされませんが、診断用にメッセージがログに記録されます。これは、アプリケーションと、JVM 内の Java エージェントの有無との間に強い依存関係がないことを示しています。

エージェント API の Javadoc については、https://sdkdocs.appdynamics.com/java-agent-api/v20.6/ を参照してください。エージェント API およびインストルメンテーション SDK のユーザーガイドでは、使用方法と一般的な使用例の説明も提供されています。