Download PDF
Download page Java サーバレストレーサとエンドユーザモニタリングの統合.
Java サーバレストレーサとエンドユーザモニタリングの統合
このページには、AWS のマニュアルへのリンクが含まれています。Amazon で自身のマニュアルを管理しているため、Splunk AppDynamics では Amazon のマニュアルの精度については一切保証しません。
AWS Lambda 向けサーバレス APM は、既存のエンドユーザモニタリング(EUM)設定と統合できるように設計されています。EUM 統合は、Web およびモバイルアプリケーションのパフォーマンスに対する完全なエンドツーエンドの可視性を確保し、エンドユーザデバイスからサーバレス機能を介してエンドユーザデバイスのコールを関連付け、ビジネストランザクションを続行します。
AWS Lambda 関数は、EUM と AWS Lambda によって発信されたビジネストランザクションを、次の EUM エージェントとともに関連付けることができます。
- ブラウザリアルユーザーモニタリング (ブラウザ RUM)
- モバイルリアルユーザーモニタリング (モバイル RUM)
- IoTモニタリング
エンドユーザモニタリングとの Java サーバレストレーサの統合は、次の手順で構成されます。
このドキュメントでは、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();
応答ヘッダーマッピングの設定
応答ヘッダーマッピングを設定して、ADRUM_n ヘッダーをブラウザに戻します。AWS API ゲートウェイを使用して応答ヘッダーマッピングを設定するか、または AWS Lambda プロキシ統合を使用して直接渡すことができます。
Amazon API ゲートウェイでの応答ヘッダーマッピング
Amazon API ゲートウェイの各 ADRUM_n ヘッダーのヘッダーマッピングを追加します。Amazon API ゲートウェイで応答ヘッダーマッピングを設定するには、Amazon ドキュメントを参照してください。
次のスクリーンショットは、AWS API ゲートウェイでこれらのヘッダーをマッピングする方法を示しています。
これらのマニュアルで使用されている 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));
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 を有効にする方法を示しています。
これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。
CORS を有効にした後、応答ヘッダーマッピングを定義する必要があります。Amazon API ゲートウェイで応答ヘッダーマッピングを設定するには、Amazon ドキュメントを参照してください。
このスクリーンショットは、CORS 設定後の応答ヘッダーマッピングを示しています。
これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。
EUM 統合のトラブルシューティング
EUM データとビジネストランザクションの間に相関関係が表示されない場合は、ブラウザでアクティビティをキャプチャする HTTP アーカイブ(HAR)ファイルを収集します。HAR ファイルを使用して、必要なすべての CORS ヘッダーが設定され、予想されるデータが ARUM_n ヘッダーに設定されていることを確認します。
EUM のドキュメントには、トラブルシューティングの追加アドバイスが記載されています。