このページには、AWS のマニュアルへのリンクが含まれています。Amazon で自身のマニュアルを管理しているため、Splunk AppDynamics では Amazon のマニュアルの精度については一切保証しません。

AWS Lambda 向けサーバレス APM は、既存のエンドユーザモニタリング(EUM)設定と統合できるように設計されています。EUM 統合は、Web およびモバイルアプリケーションのパフォーマンスに対する完全なエンドツーエンドの可視性を確保し、エンドユーザデバイスからサーバレス機能を介してエンドユーザデバイスのコールを関連付け、ビジネストランザクションを続行します。

AWS Lambda 関数は、EUM と AWS Lambda によって発信されたビジネストランザクションを、次の EUM エージェントとともに関連付けることができます。

エンドユーザモニタリングとの Java サーバレストレーサの統合は、次の手順で構成されます。

  1. EUM メタデータの追加と返却
  2. 応答ヘッダーマッピングの設定
    1. Amazon API ゲートウェイの使用
    2. AWS Lambda プロキシ統合の使用
  3. フロントエンド アプリケーションの更新
  4. CORS 設定の有効化(該当する場合)
  5. EUM 統合のトラブルシューティング

このドキュメントでは、Splunk AppDynamics エンドユーザーモニタリングに精通していることを前提としています。詳細については、「エンドユーザモニタリング」を参照してください。

はじめに

展開に次のものを使用していることを確認します。

  • Java サーバレストレーサとともにインストゥルメント化された AWS Lambda 関数
  • アクティブな EUM ライセンスと JavaScript エージェント


EUM メタデータの追加と返却

EUM をトレーサと統合するには、transaction オブジェクトをクエリし、EUM メタデータを返す必要があります。 

トランザクションの停止後、次のメソッドを呼び出します。ダウンストリーム JavaScript エージェントによって消費されるヘッダー ADRUM_0、ADRUM_1、ADRUM_2、および ADRUM_3 に各文字列を指定された順序で個別に割り当てます。

public void stopTransactionAndRecordEUM(OutputStream output) throws IOException {
        Transaction transaction = getTransaction();
 
// Your AWS Lambda function code
 
//You must call transaction.stop(); before calling transaction.getEumMetadata();
 transaction.stop();
// call transaction.getEumMetadata(); function to query transaction object for EUM metadata  
List<String> eumMetadata = transaction.getEumMetadata();
JAVA


応答ヘッダーマッピングの設定

応答ヘッダーマッピングを設定して、ADRUM_n ヘッダーをブラウザに戻します。AWS API ゲートウェイを使用して応答ヘッダーマッピングを設定するか、または AWS Lambda プロキシ統合を使用して直接渡すことができます。

Amazon API ゲートウェイでの応答ヘッダーマッピング

Amazon API ゲートウェイの各 ADRUM_n ヘッダーのヘッダーマッピングを追加します。Amazon API ゲートウェイで応答ヘッダーマッピングを設定するには、Amazon ドキュメントを参照してください。

次のスクリーンショットは、AWS API ゲートウェイでこれらのヘッダーをマッピングする方法を示しています。

Header Mappings (AWS API Gateway)

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

次に、AWS Lambda 関数の出力の一部として ADRUM_n ヘッダーを返します。関数コードが応答ヘッダーマッピングと一致している限り、別のフィールド名を使用できます。 

次のコードスニペットは、ヘッダーフィールドを出力オブジェクトクラスに追加する方法を示しています

// add the field eumMetadata to your output object class
// return the EUM ADRUM_n headers in the output object
String outputString = "success";
Output outputObj = new Output(outputString);
OutputObj.eumMetadata = eumMetadata;
output.write(new Gson().toJson(outputObj).getBytes(StandardCharsets.UTF_8)); 
JAVA


AWS Lambda プロキシ統合での応答ヘッダーマッピング

カスタム統合の代わりに、AWS Lambda プロキシ統合により、クライアントはバックエンドの各機能を呼び出し、JSON 形式の出力を返すことができます。このような応答をマッピングするには、出力オブジェクトクラスのヘッダーフィールドに各シングル値 ADRUM_n ヘッダーを直接追加します。詳細については、Amazon ドキュメントを参照してください。

フロントエンド アプリケーションの更新

EUM と AWS Lambda で発信されたビジネストランザクション間の相関関係を表示するには、EUM ドキュメントで説明されているように、JavaScript エージェントをブラウザの HTML に挿入する必要があります。

CORS 設定の有効化

ブラウザには、ブラウザ要求からドメイン(基本ページのドメイン以外)の応答にアクセスする関数の Cross-Origin Resource Sharing(CORS)が必要です。クロスドメインのアクセス権を該当するすべての ADRUM_n ヘッダーに明示的に付与する必要があります。 

CORS 設定を有効にするには、Amazon API ゲートウェイで必要な AWS 応答ヘッダーを定義します。

  • Access-Control-Expose-Headers :カスタム ADRUM ヘッダーをマッピングします。これらのヘッダーには、JavaScript エージェントと互換性を確保できるように ADRUM_0 ~ ADRUM_3 という名前を使用する必要があります。
  • Access-Control-Allow-Methods :適切なメソッドを使用してヘッダーを確認します
  • Access-Control-Allow-Origin スキーマ、ホスト名、ポートなど、要求を発信した web ページの完全な URL に設定します

詳細なヘッダーおよび追加情報については、AWS のドキュメントを参照してください。  

次のスクリーンショットは、Amazon API ゲートウェイで CORS を有効にする方法を示しています。

Enable Cross-Origin Resource Sharing

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

CORS を有効にした後、応答ヘッダーマッピングを定義する必要があります。Amazon API ゲートウェイで応答ヘッダーマッピングを設定するには、Amazon ドキュメントを参照してください。 

このスクリーンショットは、CORS 設定後の応答ヘッダーマッピングを示しています。

Post-CORS Configuration Header Mappings

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

EUM 統合のトラブルシューティング

EUM データとビジネストランザクションの間に相関関係が表示されない場合は、ブラウザでアクティビティをキャプチャする HTTP アーカイブ(HAR)ファイルを収集します。HAR ファイルを使用して、必要なすべての CORS ヘッダーが設定され、予想されるデータが ARUM_n ヘッダーに設定されていることを確認します。 

EUM のドキュメントには、トラブルシューティングの追加アドバイスが記載されています。