このページでは、Java エージェント API とインストゥルメンテーション SDK(iSDK)について説明し、API の一般的な使用例を示します。
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 のユーザーガイドでは、使用方法と一般的な使用例の説明も提供されています。
依存関係のインストール
エージェント API jar に直接アクセスするか、Maven Central または Splunk AppDynamics ポータルからダウンロードできます。ライブラリバージョンは、新しい API リリースごとに変更され、基本エージェントのバージョンには完全に関連付けられていません。
Maven Central を使用する場合は、次のいずれかでビルドファイルに依存関係を追加します。
dependencies {
compile group: 'com.appdynamics.agent', name: 'agent-api', version: '20.6.0.30246'
}
CODE
または
<dependency>
<groupId>com.appdynamics.agent</groupId>
<artifactId>agent-api</artifactId>
<version>20.6.0.30246</version>
</dependency>
CODE