ページと Ajax リクエストをビジネストランザクションと関連付けることができます。実際には、ページと Ajax リクエストのインスタンス(ブラウザスナップショット)とビジネストランザクションのインスタンス(トランザクション スナップショット)の間で相関が行われます。
ブラウザアプリケーションのネットワークリクエストが関連付けられる仕組み
エンドユーザがブラウザアプリケーションからページをリクエストした場合は、次のようになります。
- アプリケーション エージェント:
- ビジネストランザクションを識別する HTTP ヘッダーと、JavaScript エージェントが挿入された HTML をエンドユーザのブラウザに送信します。
- バックエンドメトリックを集約し、それらをビジネストランザクション識別子とともにコントローラに送信します。これは、トランザクション スナップショットのコンテンツとして機能します。
- JavaScript エージェントは、ブラウザのメトリックと(HTTP ヘッダーの)ビジネストランザクション ID を EUM サーバに送信します。これは、ブラウザスナップショットのコンテンツとして機能します。
コントローラは、EUM サーバからメトリックとビジネストランザクション ID を取得します。これらのビジネストランザクション ID は、ブラウザスナップショットとトランザクション スナップショットを関連付けるために使用されます。
ブラウザアプリケーションに関連付けられたビジネストランザクションの表示
ブラウザスナップショットから関連付けられたビジネストランザクションに移動する方法は複数あります。次の手順は、可能な 1 つの方法を示しています。
- [Browser App Dashboard] で、[Browser Snapshots] をクリックします。
- [Filters] をクリックして、[Server Snapshot Exists] チェックボックスをオンにします。
- トランザクション スナップショットがあるブラウザスナップショットのみが表示されるようになりました。
- いずれかのブラウザスナップショットをダブルクリックすると、[Browser Snapshot Details] ダイアログが開き、トランザクション スナップショットが表示されます。
- その後、トランザクション スナップショットのリンクまたはトランザクション スナップショット自体をクリックすると、APM 内の対応するページを表示できます。
相関ビジネストランザクションの完全なタイミングデータの取得
この機能は、現在 .NET Core ではサポートされていません。
相関ビジネストランザクションの実際の完全な実行時間を取得するには、インジェクション方式で、JS_FOOTER
変数をページに書き込む必要があります。手動インジェクションを使用すると、サーバ側エージェントは、Web アプリケーションが生成しているかのように、ページのヘッダーのみにデータを書き込むことができます。
完全なビジネストランザクション タイミング情報は、ヘッダーデータが書き込まれる時点では使用できない可能性があります。フッターを使用すると、サーバ側エージェントは、ページのフッターにタイミングデータを書き込むことができます。その時点までに、ビジネス トランザクション タイミングの全体像を把握できる可能性があります。
次の手法を使用して、Web ページのフッターに JS_FOOTER
データ変数を書き込むことができます。
head
要素への挿入に自動インジェクションを使用すると、自動的にフッターにも挿入されます。head
要素に手動インジェクションを使用する場合、Java プラットフォームでビルドしたアプリケーションについては、補助インジェクションを使用してフッターに挿入できます。Java Servlet または ASP.NET プラットフォームで構築されたアプリケーションの場合は、属性インジェクションを使用して補助インジェクションを使用できます。
ページに JS_FOOTER
変数を追加できない場合、相関ビジネストランザクションに表示されるタイミングは、その特定のページの実際の実行時間ではなく、そのトランザクションの平均応答時間になることがあります。
HttpOnly フラグを使用した Cookie のタグ付けの回避
サーバは、cookie の内容が JavaScript によってアクセスされないようにするために、cookie に HttpOnly
フラグを設定します。多くの場合、セキュリティ対策としてセッション ID を非表示にする場合にセッション cookie で設定されます。ただし、JavaScript エージェントは、相関情報を収集するために、AppDynamics のサーバ側エージェントによって設定された特殊な cookie(すべてに ADRUM
というプレフィックスが付いている)を読み取ることができる必要があります。HttpOnly
がこれらの cookie で設定されている場合は、サーバ側の相関情報を送信できません。そのため、サーバで ADRUM
で始まるすべての cookie に HttpOnly
フラグを設定しないようにします。
クッキーを安全に送信するには、HTTPS を使用します。アプリケーション エージェントは、発生元の基本ページが HTTPS を介してロードされた場合に、secure
フラグを設定します。
これらはオフにすることができますが、その場合、お客様がフッターインジェクションを使用するようにページのソースコードを変更しない限り、基本ページで相関が機能しなくなります。