Download PDF
Download page Node.js サーバレストレーサとエンドユーザモニタリングの統合.
Node.js サーバレストレーサとエンドユーザモニタリングの統合
このページには、AWS のマニュアルへのリンクが含まれています。Amazon で自身のマニュアルを管理しているため、Splunk AppDynamics では Amazon のマニュアルの精度については一切保証しません。
AWS Lambda 向けサーバレス APM は、既存のエンドユーザモニタリング(EUM)設定と統合できるように設計されています。EUM 統合は、web およびモバイルアプリケーションのパフォーマンスに対する完全なエンドツーエンドの可視性を確保し、エンドユーザデバイスからサーバレス機能を介してエンドユーザデバイスのコールを関連付け、ビジネストランザクションを続行します。
AWS Lambda 関数は、EUM と AWS Lambda によって発信されたビジネストランザクションを、次の EUM エージェントとともに関連付けることができます。
- ブラウザリアルユーザーモニタリング(ブラウザ RUM)
- モバイルリアルユーザーモニタリング(モバイル RUM)
- IoTモニタリング
このドキュメントでは、Splunk AppDynamics エンドユーザーモニタリングに精通していることを前提としています。詳細については、EUM のドキュメントを参照してください。
はじめに
展開に次のものを使用していることを確認します。
- Node.js サーバレストレーサとともにインストゥルメント化された AWS Lambda 関数
- アクティブな EUM ライセンスと JavaScript エージェント
EUM 環境変数の追加
デフォルトでは、Node.js サーバレストレーサの EUM 統合がオフになっています。
EUM 統合を有効にするには、APPDYNAMICS_ENABLE_EUM
環境変数を true
に設定します。詳細については、サーバレス APM 環境のセットアップを参照してください。
応答ヘッダーマッピングの設定
応答ヘッダーマッピングを設定して、ADRUM_n
ヘッダーをブラウザに戻します。応答ヘッダーマッピングを次のように設定できます。
- AWS API ゲートウェイの使用
- AWS Lambda プロキシ統合を介して直接渡す
- 関数コードで EUM メタデータを返す
Amazon API ゲートウェイでの応答ヘッダーマッピング
Amazon API ゲートウェイの各 ADRUM_n
ヘッダーのヘッダーマッピングを追加します。「Amazon API Gateway API request and response data mapping reference」を参照してください。
次の表に、必要な応答ヘッダーとそのマッピング値を示します。
応答ヘッダー | マッピング値 |
---|---|
ADRUM_3 | integration.response.body.headers.ADRUM_3 |
ADRUM_2 | integration.response.body.headers.ADRUM_2 |
ADRUM_1 | integration.response.body.headers.ADRUM_1 |
ADRUM_0 | integration.response.body.headers.ADRUM_0 |
AWS Lambda プロキシ統合での応答ヘッダーマッピング
カスタム統合の代わりに、AWS Lambda プロキシ統合により、クライアントはバックエンドの各機能を呼び出し、JSON 形式の出力を返すことができます。このような応答をマッピングするには、出力オブジェクトクラスのヘッダーフィールドに各シングル値 ADRUM_n ヘッダーを直接追加します。詳細については、Amazon ドキュメントを参照してください。
すべての他の呼び出しの応答ヘッダーマッピング
EUM メタデータを収集するには、応答ヘッダーマッピングを設定する必要があります。次のコード例では、トレーサで appDEumHeaders
メソッドを呼び出します。このメソッドは、ADRUM_n ヘッダーを含むオブジェクトを返します。ダウンストリームの JavaScript エージェントによって、消費用のダウンストリームサービスにこのオブジェクトを渡します。
次のコードスニペットは、EUM メタデータを返す方法を示しています。
module.exports.myLambdaHandler = function (event, context, callback) {
setTimeout(function () {
////Call a transaction object
let appDBusinessTxn = tracer.getCurrentTransaction();
//Stop the transaction
tracer.stopTransaction();
//Return EUM Metadata
let appDEumHeaders = tracer.getEumMetadata(appDBusinessTxn);
callback(null, {
eumMetadata: appDEumHeaders,
data: 'Call to Lambda is a success'
});
}, 300);
}
フロントエンド アプリケーションの更新
EUM と AWS Lambda で発信されたビジネストランザクション間の相関関係を表示するには、「JavaScript エージェントの挿入」で説明されているように、JavaScript エージェントをブラウザの HTML に挿入する必要があります。
CORS 設定の有効化
ブラウザには、ブラウザ要求からドメイン(基本ページのドメイン以外)の応答にアクセスする関数の Cross-Origin Resource Sharing(CORS)が必要です。クロスドメインのアクセス権を該当するすべての ADRUM_n
ヘッダーに明示的に付与する必要があります。
CORS 設定を有効にするには、次の手順を実行します。
- Amazon API ゲートウェイで必要な AWS 応答ヘッダーを定義します。詳細なヘッダーおよび追加情報については、AWS のドキュメントを参照してください。
- Access-Control-Expose-Headers :カスタム ADRUM ヘッダーをマッピングします。これらのヘッダーには、JavaScript エージェントと互換性を確保できるように
ADRUM_0
~ADRUM_3
という名前を使用する必要があります。たとえば、ADRUM_0
、ADRUM_1
、ADRUM_2
、ADRUM_3
です。 Access-Control-Allow-Methods :適切なメソッドを使用してヘッダーを選択します。たとえば、
POST
、OPTIONS
です。- Access-Control-Allow-Origin :スキーマ、ホスト名、ポートなど、リクエストを発信した Web ページの完全な URL に設定します。単一引用符で URL を囲みます。たとえば、
'http://my-saas-service.com:8000'
のようになります。
- Access-Control-Expose-Headers :カスタム ADRUM ヘッダーをマッピングします。これらのヘッダーには、JavaScript エージェントと互換性を確保できるように
- CORS を有効にした後、応答ヘッダーマッピングを定義する必要があります。Amazon API ゲートウェイで応答ヘッダーマッピングを設定するには、Amazon ドキュメントを参照してください。
以下のリストに、応答ヘッダーと CORS 設定のマッピング値の例を示します。Access-Control-Expose-Headers: `ADRUM_0,ADRUM_1,ADRUM_2,ADRUM_3`
Access-Control-Allow-Credentials: `true`
Access-Control-Allow-Methods: `POST,OPTIONS`
Access-Control-Allow-Origin: `http://my-saas-service.com:8000`
(オプション)プロキシ統合を介して Amazon API ゲートウェイに関数を接続する場合は、関数コード内の CORS 応答ヘッダーマッピングを定義します。
//Return EUM Metadata let appDEumHeaders = tracer.getEumMetadata(appDBusinessTxn); let returnHeaders = { 'Access-Control-Allow-Origin': 'http://my-saas-service.com:8000', 'Access-Control-Allow-Credentials': true, 'Access-Control-Expose-Headers': 'ADRUM_0,ADRUM_1,ADRUM_2,ADRUM_3' };
JS
EUM 統合のトラブルシューティング
EUM データとビジネストランザクションの間に相関関係が表示されない場合は、ブラウザでアクティビティをキャプチャする HTTP アーカイブ(HAR)ファイルを収集します。HAR ファイルを使用して、必要なすべての CORS ヘッダーが設定され、予想されるデータが ARUM_n ヘッダーに設定されていることを確認します。
EUM のドキュメントには、トラブルシューティングの追加アドバイスが記載されています。
これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。