JavaScript API を使用すると、仮想ページのさまざまな部分をロードする時間を測定し、それらのページのロードと Ajax コールを関連付けることができるように、イベントをエージェントに手動で報告できます。また、この API を使用してエラーをキャプチャし、報告することもできます。

イベントのエージェントへの通知

イベントは、ADRUM.report メソッドを呼び出してイベント トラッカー オブジェクトで渡すことで、JavaScript エージェント(ADRUM)に報告されます。

API
説明
ADRUM.report(tracker: eventTracker);イベントのエージェントに通知します。

仮想ページのレポート

SPA1 モニタリング

SPA1 モニタリングでは、イベントトラッカー「VPageView」を使用して、手動で仮想ページをレポートします。 

SPA2 モニタリング

以下の API を使用して SPA の仮想ページを手動でレポートするには、SPA2 モニタリングを有効にする必要があります。SPA2 モニタリングを有効にしている場合は、これらの API が SPA 以外でも機能します。

仮想ページを報告するには、以下のメソッドを使用して仮想ページの始まりと終わりをマークします。両方のメソッドが ADRUM オブジェクトから呼び出されます。カスタム仮想ページ名の設定 も参照してください。

APIパラメータデフォルト値内容

markVirtualPageBegin(VPName: string, manuallyMarkVPEnd?: boolean)

VPName
N/A

仮想ページのラベルを設定します。このラベルは、コントローラ UI に表示されます。

仮想ページ名は、760 文字以下の英数字で構成する必要があります。

文字列の長さが 760 文字を超えると、ページ名は設定されません。

manuallyMarkVPEnd
true

ユーザまたは JavaScript エージェントが仮想ページの終わりをマークするかどうかを示すフラグ。

true に設定すると仮想ページを報告markVirtualPageEndするために呼び出す必要があります。

false に設定すると、JavaScript エージェントは仮想ページの終わりを自動的にマークします。

markVirtualPageEnd()
なしなしこのメソッドを呼び出すと、仮想ページの終わりがマークされ、仮想ページ情報でビーコンを送信するように JavaScript エージェントがトリガーされます。

API の動作

次の手順では、API を使用して仮想ページを手動で報告するプロセスについて説明します。

  1. ADRUM.markVirtualPageBegin(VPName, manuallyMarkVPEnd) を使用して仮想ページの始まりを手動でマークすることによって、仮想ページのモニタリングを開始します。 

  2. セット仮想ページ名を持つビーコンが EUM サーバに送信されます。manuallyMarkVPEnd が true に設定されている場合、JavaScript エージェントは、ADRUM.markVirtualPageEnd を呼び出して仮想ページをレポートするまで待機します。manuallyMarkVPEndfalse に設定されている場合、JavaScript エージェントは仮想ページの終わりを自動的にマークします。
  3. ADRUM.markVirtualPageEnd() を呼び出して仮想ページの終わりをマークするか、JavaScript エージェントで仮想ページの終わりを自動的にマークします。
  4. JavaScript エージェントは、EUM サーバに仮想ページのメトリックを報告します。

仮想ページのレポート例

以下の Angular の例は、仮想ページの始まりをマークする 2 つの方法を示しています。関数 manualMarkVPEnd は、仮想ページの終わりを手動でマークする必要があるデフォルトを使用する ADRUM.markVirtualPageBegin を呼び出します。関数 allowJSAgentMarkVPEnd は、値 false を 2 番目のパラメータとして渡します。これにより、JavaScript エージェントが仮想ページの終わりを自動的にマークします。

angular.module('myApp.controllers', [])
    .controller('VPCtrl', ['$scope', '$http', function ($scope, $http) {
            $scope.manualMarkVPEnd = function () {
                console.log("Mark the beginning of the virtual page and wait for markVirtualPageEnd() to be called.");
                ADRUM.markVirtualPageBegin("VPExample-ManuallyMarkEnd");
            }
            $scope.allowJSAgentMarkVPEnd = function () {
                console.log("Mark the beginning of the virtual page and allow the JS Agent to mark the virtual page end.");
                ADRUM.markVirtualPageBegin("virtualPageExample-JSAgentMarksEnd", false);
            }
            $scope.endVirtualPage = function () {
                console.log("Mark the end of the virtual page.");
                ADRUM.markVirtualPageEnd();
            }
            ...
        }
    ]
);
JS

イベントの報告

イベントは、イベントトラッカーを使用してエージェントに報告されます。イベントトラッカーには、次の 3 つの種類があります。

イベントトラッカーSPA2 モニタリングでの有効/無効説明(Description)
VPageViewなし仮想ページビューのステージを追跡します。
AjaxありAjax リクエストを追跡します。
Errorありエラーを追跡します。

[Common Properties]

また、すべてのトラッカータイプに共通するプロパティが 2 つあります。

  • URL の取得または設定

    API説明
    url(url?: string)URL を取得または設定します。
  • 親イベント識別子の取得または設定

    API説明
    parent(parent?: object)親イベント識別子を取得または設定します。

VPageView

次に、SPA1 モニタリングでのページビューのロードフローを示します。以下の SPA1 モニタリング API を使用して、独自の単一ページ アプリケーション フレームワークで可能な限り下記のワークフローに一致するタイミングマークを設定します。SPA2 モニタリングについては、仮想ページの報告:SPA2 モニタリング」を参照し、SPA2 API で仮想ページを手動で報告する方法について学習してください。

SPA1 Monitoring Page View

AppDynamics では、設定したマークに基づいて、次の主要なタイミングメトリックを導出します。マークは、フロー内で発生した順序で呼び出す必要があります。次の表では、各メトリックの計算に使用されるマークについて説明します。

完全なメトリック名メトリック名の省略形計算方法
エンドユーザの応答時間
(ウォーターフォール UI には使用されません)
PLTvirtualPageStartvirtualPageEnd
HTMLダウンロード時間DDTviewChangeStartviewChangeEnd
HTML ダウンロードおよび DOM 構築時間回収viewChangeStartviewDOMLoaded
DOM構築時間DPTviewChangeEndviewDOMLoaded
DOM 待受時間
(ウォーターフォール UI の場合は PLT の代わりに使用されます) 
Dominican Republic(DOM; ドミニカ共和国)viewChangeStartviewDOMLoaded

次を使用してインスタンス化します。ADRUM.events.VPageView(). 

API説明

start()


仮想ページが開始された時点を示します。次を自動的に呼び出します。

  • startCorrelatingXhrs()
  • markVirtualPageStart()

end()


仮想ページが終了した時点を示します。次を自動的に呼び出します。

  • stopCorrelatingXhrs()
  • markVirtualPageEnd()
startCorrelatingXhrs()

このコールの後に送信された Ajax リクエストを仮想ページビューイベントと関連付けます。このメソッドを呼び出す最後のトラッカーが優先されます。

このメソッドは、VPageView コンストラクタで自動的に呼び出されます。VPageView が作成されると、そのコールの後に行われた AJAX リクエストは、その VPageView に自動的に関連付けられます。この個別のコールは、手動相関を設定する場合にのみ使用してください。

stopCorrelatingXhrs()

仮想ページビューイベントへの Ajax リクエストの関連付けを停止します。

この個別のコールは、手動相関を設定する場合にのみ使用してください。

Settersこれらのデフォルト値は、API が呼び出された時刻です。
markViewChangeStart()ビューの変更開始時刻を設定します。
markViewChangeEnd()ビューの変更終了時刻を設定します。
markViewDOMLoaded()ビューの DOM がロードされた時刻を設定します。

markXhrRequestsCompleted()

XHR リクエストの完了時刻を設定します。

markViewResourcesLoaded() 

ビューのリソースがロードされた時刻を設定します。これには、画像、CSS ファイル、およびスクリプトが含まれます。

markVirtualPageStart()

仮想ページの開始時刻を設定します。

markVirtualPageEnd()

仮想ページの終了時刻を設定します。
Getters
getViewChangeStart()ビューの変更開始時刻を取得します。
getViewChangeEnd()ビューの変更終了時刻を取得します。
getViewDOMLoaded()ビューの DOM がロードされた時刻を取得します。
getXhrRequestsCompleted()XHR リクエストが完了した時刻を取得します。
getViewResourcesLoaded()ビューのリソースがロードされた時刻を取得します。
getVirtualPageStart()仮想ページの開始時刻を取得します。
getVirtualPageEnd()

仮想ページの終了時刻を取得します。


Ajax

次を使用してインスタンス化します。ADRUM.events.Ajax(). 

API

説明
Property Setters/Getters値を取得するパラメータではなく、値を設定するパラメータを指定して呼び出します。
method(method?: string)Ajax のメソッド(「GET」または「POST」)を取得または設定します。
Timing Settersこれらのデフォルト値は、API が呼び出された時刻です。
markSendTime(sendTime?: number)要求が送信される時刻を設定します。
markFirstByteTime(firstByteTime?: number)最初のバイト時間を設定します。
markRespAvailTime(respAvailTime?: number)応答可能時間を設定します。
markRespProcTime(RespProcTime?: number)応答が完全に処理された時刻を設定します。
Timing Getters
getSendTime()要求が送信された時刻を取得します。
getFirstByteTime()最初のバイト時間を取得します。
getRespAvailTime()応答可能時間を取得します。
getRespProcTime()応答が完全に処理された時刻を取得します。

エラー

次を使用してインスタンス化します。ADRUM.events.Error(). 
API
説明
Property Setters/Getters値を取得するパラメータではなく、値を設定するパラメータを指定して呼び出します。

msg(msg?: string)

エラーメッセージを取得または設定します。
line(line?: number)エラーが発生したソースコードの行番号を取得または設定します。

Ajax リクエストの関連付け

Ajax リクエストは、仮想ページビューに自動または手動で関連付けることができます。VPageView トラッカーを作成すると、startCorrelatingXhrs()  が自動的にコンストラクタで呼び出され、後続の Ajax コールとその VPageView イベントを関連付けます。手動相関を設定するには、stopCorrelatingXhrs() を呼び出して自動プロセスを停止してから、相関を再開始する startCorrelatingXhrs() を呼び出します。

コードの例

Report a custom Error event by passing properties via setters

var errorT = new ADRUM.events.Error();
errorT.msg('I am a custom error at line 100');
errorT.line(100);
ADRUM.report(errorT);
JS

Report a custom Error event by passing properties via the constructor

var errorT = new ADRUM.events.Error({
msg: 'I am a custom error at line 100',
line: 100
});
ADRUM.report(errorT);
JS

Report a custom Ajax event passing properties via setters

var ajaxT = new ADRUM.events.Ajax();
  
// set url
ajaxT.url('your xhr Url');
  
// mark timings
ajaxT.markSendTime(100);
ajaxT.markFirstByteTime(200);
ajaxT.markRespAvailTime(300);
ajaxT.markRespProcTime(400);
ADRUM.report(ajaxT);
JS

Set up backbone SPA monitoring

var AppRouter = Backbone.Router.extend({
    routes: {
        "wines/:id": "wineDetails"
    },
    wineDetails: function (id) {
        var vpView = new ADRUM.events.VPageView();
        vpView.markVirtualPageStart();
        // vpView.markViewChangeStart();
        var wine = new Wine({id: id});
        wine.fetch({success: function(){
            vpView.markXhrRequestsCompleted();
            $("#content").html(new WineView({model: wine}).el);
            vpView.markViewDOMLoaded();
            vpView.markVirtualPageEnd();
            ADRUM.report(vpView);
        }});
        this.headerView.selectMenuItem();
    }
});
JS

Correlate Ajax requests wih VPageView Events

var vPageView = new ADRUM.events.VPageView({
    url: 'http://localhost/#virtualpage1',
});
 
vPageView.start();
 
// SPA view routing and HTML partials fetching
vPageView.markViewChangeStart()
// AJAX requests for the HTML partials are automatically correlated with the VPageView
...
vPageView.markViewChangeEnd();
 
// HTML partials inserted into Browser DOM tree
...
vPageView.markViewDOMLoaded();
 
// SPA HTML AJAX data fetching
// Data AJAX requests are automatically correlated with the VPageView
...
 
vPageView.markXhrRequestsCompleted();
 
// call this when ending a new virtual page
vPageView.end();
 
ADRUM.report(vPageView);
JS

ページ上部の adrum.js スクリプトを呼び出す前に、ADRUM 自体を設定して、特定の Ajax コールをモニタ対象から除外することができます。次のような行を追加します。

Exclude Ajax from VPageView using ADRUM configuration

window['adrum-config'] = {
  "spa": {
    "angular": {
      "vp": {
        "xhr": {
          "exclude": {
            "urls": [{
              "pattern": 'heartBeatAjax'
            }]
          }
        }
      }
    }
  }
}
JS

または、vPageView.stopCorrelatingXhrs() コールを使用して特定の Ajax コールを除外してから、次のように  vPageView.startCorrelatingXhrs() を使用して関連付けを戻すこともできます。

Exclude Ajax from VPageView event manually

var vPageView = new ADRUM.events.VPageView();
vPageView.stopCorrelatingXhrs();
  
var xhr = new XMLHttpRequest();
xhr.open('GET', '/heartBeatAjax');
xhr.send();
  
vPageView.startCorrelatingXhrs();
JS