このページでは、Java サーバレストレーサの要件、ダウンロード手順、およびインストゥルメンテーションの概要について説明します。 

はじめる前に

セットアップが次の要件を満たしていることを確認します。

  • Java で実装されている既存の AWS Lambda 関数
  • AWS Lambda 向けアクティブサーバレス APM のサブスクリプション
  • AppDynamics SaaS コントローラ 4.5.11 以降

インストゥルメンテーションの概要

AWS Lambda 向けサーバレス APM のインストゥルメンテーションは、次の 3 つのステップで構成されます。

  1. Java サーバレストレーサでの依存関係の宣言
  2. インストゥルメンテーション方式の選択
    1. 自動トレーサ インストゥルメンテーション
    2. 手動トレーサ インストゥルメンテーション
  3. サーバレス トレーサ インストゥルメンテーションの確認

Java サーバレストレーサでの依存関係の宣言

AppDynamics は、トレーサライブラリの形式でサーバレス APM 機能を提供します。 

次のような Apache Maven または Gradle を使用して、Java サーバレストレーサでのプロジェクトの依存関係を表現します。

<dependency>
     <groupId>com.appdynamics</groupId>
     <artifactId>lambda-tracer</artifactId>
     <version>20.03.1391</version>
</dependency>
JAVA
dependencies {
    compile group: 'com.appdynamics', name: 'lambda-tracer', version: '20.03.1391'
}
JAVA


Apache Maven または Gradle を使用しない場合は、AppDynamics に連絡して、サーバレストレーサ JAR ファイルを入手してください。 

インストゥルメンテーション オプション

トレーサをインストゥルメント化します。

  • 自動的に、AppDynamics クラス MonitoredRequestStreamHandler を使用するか

  • 手動で、AppDynamics メソッド AppDynamics.getTracer(context) を使用します。 

自動トレーサ インストゥルメンテーション

関数が RequestStreamHandler インターフェイスを使用している場合は、自動的にトレーサをインストゥルメント化できます。 

自動インストゥルメンテーションで、関数はトレーサの設定を継承します。自動インストゥルメンテーションは、トレーサを次の操作が実行できるように事前に設定します。

  • トランザクションの作成、開始、停止

  • 相関ヘッダーの検索
  • トランザクションエラーの報告

RequestStreamHandler および RequestHandler は、AWS によって提供される事前定義されたハンドラです。AWS のマニュアルを参照してください。

手動トレーサ インストゥルメンテーション

手動トレーサ インストゥルメンテーションでは、メソッド AppDynamics.getTracer(context) は、関数のエントリポイントメソッドの開始時にトレーサをインスタンス化します。次の場合は、手動でトレーサをインストゥルメント化します。

  • AWS Lambda 関数は RequestStreamHandler インターフェイスをインストゥルメント化していません。 

  • MonitoredRequestStreamHandler から構成を継承するように関数を設定する必要がありません。
  • AWS Lambda 関数はマルチスレッド化され、動作が定義されていることを確認します。詳細については、「Synchronize the Tracer 」を参照してください。   

手動トレーサ インストゥルメンテーションを使用するには、次の操作を実行する必要があります。

  • トレーサのインスタンス化
  • トランザクションの作成、開始、停止
  • 相関ヘッダーの検索
  • トランザクションエラーの報告

Java の AWS Lambda コンテキストオブジェクトcontext,は AWS によって提供されます。AWS のマニュアルを参照してください。

トレーサの同期化

両方のインストゥルメンテーション オプションについて、トレーサへのアクセスを同期する必要があります。 

自動インストゥルメンテーションでは、getTransaction() メソッドによって返されるトランザクション オブジェクトを同期する必要があります。  

手動インストゥルメンテーションでは、getTracer() メソッドによって返されるトレーサオブジェクトを同期する必要があります。トレーサのマルチスレッド使用には、手動のトレーサ インストゥルメンテーションが必要です。

これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。