このページでは、さまざまなインジェクションタイプを含めて、JavaScript エージェントのインジェクションの仕組みについて説明します。 

ブラウザ RUM のアプリケーションをインストゥルメント化するには、JavaScript エージェントを構成し、その後の通常のプロセスの一部としてエンドユーザに返されるページに挿入する必要があります。エージェントを挿入する操作は、インジェクションと呼ばれます。ブラウザ RUM の JavaScript エージェントを Web ブラウザに挿入する方法はいくつかあります。また、これらの方法から選択する JavaScript ホスティングオプションも複数あり、これらのオプションは、コントロール、シンプルさ、および信頼性が異なります。

JavaScript エージェントを構成するには、「JavaScript エージェントの構成」を参照してください。

JavaScript エージェントの動作

JavaScript エージェントは、次の 2 つのファイルで構成されます。adrum.js and adrum-ext.js.

  1. ファイル adrum.js は、インストゥルメント化された各ページに挿入されます。ページが処理されるときに、できるだけ先頭に近い位置に挿入されます。このファイルは、90 KB(圧縮時は 30 KB)あり、同期的にロードされます。
  2. この最初の JavaScript ファイルは、タイマーを開始し、簡単な構成とセットアップを行います。
  3. onload イベント時に、adrum-ext.js  が非同期に取得されるので、ページのロードがブロックされることはありません。負荷が大きい処理のほとんどは、このコードが行います。取得されると、ブラウザで 24 時間キャッシュされます。 
  4. クロスドメインセッション相関が有効になっている場合、ユーザが最初にドメインにアクセスしたときに、ブラウザは追加でファイル adrum-xd.html をロードし、クロスドメインセッションを有効にする共通情報の一部を生成するか、ロードします。以降のアクセスでは、adrum-xd.html を再びロードすることはありません。
  5. ページのロードが完了すると、adrum-ext.js は収集されたデータをビーコンにバンドルし、EUM サーバに送信します。 
  6. データは、EUM サーバによって処理され、コントローラがピックアップできるようになります。

すべてのタイプのインジェクションがすべてのフレームワークとプラットフォームでサポートされているわけではありません。アプリケーションでサポートされているタイプを確認するには、ブラウザモニタリングでサポートされているプラットフォームのマトリックスのスクリプトインジェクション列を参照してください。

インジェクション方法

JavaScript エージェントを挿入する方法は 3 つあります。各挿入方法については、次を参照してください。

JavaScript エージェント ホスティング オプション

adrum.js ファイルが Web アプリケーションからダウンロードされると、ページに挿入されます。adrum.js ファイルが非同期で adrum-ext.js(クロスドメインセッション相関のときは adrum-xd.html も)ファイルをロードします。デフォルトでは、adrum-ext.jsadrum-xd.html は Amazon CloudFront CDN 高可用性インフラストラクチャによって取得されます。

JavaScript エージェントには、次の 3 つのホスティングオプションがあります。

  • AppDynamics CDN:すべての JavaScript エージェントファイルはホスト cdn.appdynamics.com から取得されます。これは最も単純なホスティングオプションであり、テストに最適です。
  • Self-Hosting:すべての JavaScript エージェントファイルを自分でホストします。このオプションを使用すると、ほとんどの制御が可能になり、実稼働環境で推奨されています。 

  • Shared Hosting:メインファイル adrum.js は自分でホストしますが、非同期的にロードされる他のファイルは AppDynamics CDN から取得されます。この選択は、JavaScript エージェントの最も重要なファイルの制御は可能で、JavaScript エージェント全体をホストするリソースがない、またはそうしないことが推奨される、小規模から中規模ビジネス用に最適です。

詳しい手順については、「JavaScriptエージェントの手動組み込み」を参照してください。 

クロスドメインセッション相関

デフォルトでは、ブラウザ RUM セッションは 1 つのドメインに制限されます。したがって、エンドユーザが別のドメインやサブドメイン内のページに移動すると、そのユーザのセッションは終了します。ただし、ブラウザ RUM を構成すると、サブドメイン間でセッションを続行できるようになります。したがって、エンドユーザが http://example1.com/ から http://example2.com/ に移動すると、構成されているセッションの非アクティブ時間が期限切れになっていない限り、セッションは続行されます。

複数ドメイン間でのセッションの相関方法

ドメイン間でセッションを相互に関連付けするには、各ページで HTTPS を使用して同じ URL からファイル adrum-xd.html をロードする必要があります。ページが AppDynamics CDN からファイル adrum-ext.jsadrum-xd.html ファイルを取得する場合(共有ホスティングを使用する場合も同様)、ページは AppDynamics CDN からファイル adrum-xd.html を取得するので、セッションは自動的にドメイン間で関連付けられます。

JavaScript エージェントファイルを自己ホスティングするには、HTTPS を使用して同じ URL から adrum-ext.js ファイルをロードするように JavaScript エージェントを構成する必要があります。adrum-xd.html ファイルは、adrum-ext.js ファイルの場所から処理されます。2 つの使用例の構成手順については、以下のセクションを参照してください。

複数ドメインでのセッション相関の構成

AppDynamics CDN/共有ホスティング

AppDynamics CDN または共有ホスティングを使用する場合は、JavaScript エージェント構成でクロスドメインセッション相関を有効にし、HTTPS を使用して adrum-ext.js ファイルを呼び出す必要があります。したがって、JavaScript エージェント構成で、次の行があることを確認してください。

...
config.adrumExtUrlHttps = 'https://cdn.appdynamics.com';;
config.xd = {enable : true};
...
JS

自己ホスティング

自己ホスティングを使用する場合は、JavaScript エージェント構成でクロスドメインセッション相関を有効にし、HTTPS を使用して同じ URL から adrum-ext.js ファイルを呼び出す必要があります。したがって、JavaScript エージェント構成に、次の行があり、adrumExtUrlHttps の値がクロスドメインセッション相関が必要なすべてのページで同じになっていることを確認します。

...
// HTTPS is needed to fetch adrum-xd.html.
config.adrumExtUrlHttps = 'https://<your-adrum.ext-host>';
// This config enables cross-domain session correlation.
 config.xd = {enable : true};
...
JS

Geo サーバ URL の設定

デフォルトでは、エンドユーザの位置はパブリック地理データベースを使用して解決されます。AppDynamicsがホストしているデフォルトのGeoサーバーの代わりに、ユーザーの国、地域、都市用の別のGeoサーバーをホストすることもできます。「ブラウザRUM用カスタムGeoサーバーのインストールおよびホスト」を参照してください。

カスタム構成

adrum.js の構成を追加して、JavaScript エージェントの機能のカスタマイズと拡張ができます。カスタム構成を追加する手順と例については、「JavaScript エージェントの構成」を参照してください。

JavaScript エージェントの制限事項

JavaScript エージェントは、サービスワーカーまたは Web ワーカーのアクティビティをモニタして報告することはできません。たとえば、サービスワーカーを使用して XHR リクエストを行う場合、JavaScript エージェントはそれを報告できません。