Download PDF
Download page JavaScript API を使用したイベントのレポート.
JavaScript API を使用したイベントのレポート
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 | パラメータ | デフォルト値 | 内容 |
---|---|---|---|
| VPName | N/A | 仮想ページのラベルを設定します。このラベルは、コントローラ UI に表示されます。 仮想ページ名は、760 文字以下の英数字で構成する必要があります。 文字列の長さが 760 文字を超えると、ページ名は設定されません。 |
manuallyMarkVPEnd | true | ユーザまたは JavaScript エージェントが仮想ページの終わりをマークするかどうかを示すフラグ。 true に設定すると仮想ページを報告
| |
markVirtualPageEnd() | なし | なし | このメソッドを呼び出すと、仮想ページの終わりがマークされ、仮想ページ情報でビーコンを送信するように JavaScript エージェントがトリガーされます。 |
API の動作
次の手順では、API を使用して仮想ページを手動で報告するプロセスについて説明します。
ADRUM.markVirtualPageBegin(VPName, manuallyMarkVPEnd)
を使用して仮想ページの始まりを手動でマークすることによって、仮想ページのモニタリングを開始します。- セット仮想ページ名を持つビーコンが EUM サーバに送信されます。
manuallyMarkVPEnd
がtrue
に設定されている場合、JavaScript エージェントは、ADRUM.markVirtualPageEnd
を呼び出して仮想ページをレポートするまで待機します。manuallyMarkVPEnd
がfalse
に設定されている場合、JavaScript エージェントは仮想ページの終わりを自動的にマークします。 ADRUM.markVirtualPageEnd()
を呼び出して仮想ページの終わりをマークするか、JavaScript エージェントで仮想ページの終わりを自動的にマークします。- 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();
}
...
}
]
);
イベントの報告
イベントは、イベントトラッカーを使用してエージェントに報告されます。イベントトラッカーには、次の 3 つの種類があります。
イベントトラッカー | SPA2 モニタリングでの有効/無効 | 説明 |
---|---|---|
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 で仮想ページを手動で報告する方法について学習してください。
Splunk AppDynamics では、設定したマークに基づいて、次の主要なタイミングメトリックを導出します。マークは、フロー内で発生した順序で呼び出す必要があります。次の表では、各メトリックの計算に使用されるマークについて説明します。
完全なメトリック名 | メトリック名の省略形 | 計算方法 |
---|---|---|
エンドユーザの応答時間 (ウォーターフォール UI には使用されません) | PLT | virtualPageStart ~ virtualPageEnd |
HTMLダウンロード時間 | DDT | viewChangeStart ~ viewChangeEnd |
HTML ダウンロードおよび DOM 構築時間 | 回収 | viewChangeStart ~ viewDOMLoaded |
DOM構築時間 | DPT | viewChangeEnd ~ viewDOMLoaded |
DOM 待受時間 (ウォーターフォール UI の場合は PLT の代わりに使用されます) | Dominican Republic(DOM; ドミニカ共和国) | viewChangeStart ~ viewDOMLoaded |
次を使用してインスタンス化します。ADRUM.events.VPageView().
API | 説明 |
---|---|
| 仮想ページが開始された時点を示します。次を自動的に呼び出します。
|
| 仮想ページが終了した時点を示します。次を自動的に呼び出します。
|
startCorrelatingXhrs() | このコールの後に送信された Ajax リクエストを仮想ページビューイベントと関連付けます。このメソッドを呼び出す最後のトラッカーが優先されます。 このメソッドは、VPageView コンストラクタで自動的に呼び出されます。VPageView が作成されると、そのコールの後に行われた AJAX リクエストは、その VPageView に自動的に関連付けられます。この個別のコールは、手動相関を設定する場合にのみ使用してください。 |
stopCorrelatingXhrs() | 仮想ページビューイベントへの Ajax リクエストの関連付けを停止します。 この個別のコールは、手動相関を設定する場合にのみ使用してください。 |
Setters | これらのデフォルト値は、API が呼び出された時刻です。 |
markViewChangeStart() | ビューの変更開始時刻を設定します。 |
markViewChangeEnd() | ビューの変更終了時刻を設定します。 |
markViewDOMLoaded() | ビューの DOM がロードされた時刻を設定します。 |
| XHR リクエストの完了時刻を設定します。 |
| ビューのリソースがロードされた時刻を設定します。これには、画像、CSS ファイル、およびスクリプトが含まれます。 |
| 仮想ページの開始時刻を設定します。 |
| 仮想ページの終了時刻を設定します。 |
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 | 値を取得するパラメータではなく、値を設定するパラメータを指定して呼び出します。 |
| エラーメッセージを取得または設定します。 |
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);
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);
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);
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();
}
});
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);
ページ上部の adrum.js
スクリプトを呼び出す前に、ADRUM 自体を設定して、特定の Ajax コールをモニタ対象から除外することができます。次のような行を追加します。
Exclude Ajax from VPageView using ADRUM configuration
window['adrum-config'] = {
"spa": {
"angular": {
"vp": {
"xhr": {
"exclude": {
"urls": [{
"pattern": 'heartBeatAjax'
}]
}
}
}
}
}
}
または、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();