一部の Ajax リクエストが予期したとおりにモニタされていないことがあります。このページの説明は、ページがモニタされていない理由を判断する際に役立つ場合があります。
除外ルールの確認
エージェントが挿入されている場合、Ajax イベントがカスタム除外ルールによってモニタリングから除外されている可能性があります。これらのルールを確認して変更できます。
ページのカスタム除外ルールにアクセスするには、次のようにします。
[Configuration > Instrumentation] をクリックします。
[Ajax] タブで、[Exclude Rules] セクションの下にあるカスタムルールを確認します。

- カスタム除外ルールの調査や変更を行うには、リストでそれを選択し、
アイコンをクリックします。

- カスタム除外ルールを削除する場合は、選択して [Delete] をクリックします。
XHR オブジェクトが正しく再利用されたことを確認する
ブラウザ RUM は再利用された XMLHttpRequest
オブジェクトから行われた複数の Ajax コールをモニターできますが、最後のリクエストが完了する前に XMLHttpRequest
オブジェクトを再利用する(開く)と、JavaScript エージェントはすべての Ajax リクエストのすべてのメトリックは収集できません。
XMLHttpRequest オブジェクトを再利用するメソッドが正しくない
次の例では、xhr
オブジェクトは /xhr/uptime
へのリクエストが完了する前に /multi-bt
へのリクエストを行うため、JavaScript エージェントは /multi-bt
への 2 番目の Ajax リクエストのみを報告します。
function reuseXHRBeforeReady() {
var xhr = newXhr();
xhr.open("GET", "/xhr/uptime");
xhr.onreadystatechange = safe(function() {
if (xhr.readyState == 4) {
if (typeof(console) !== "undefined" && console !== null && console.log)
console.log("onreadystatechange for xh1: " + xhr.responseText);
document.getElementById("result").innerHTML = xhr.responseText;
}
});
xhr.send(null);
xhr.open("GET", "/multi-bt");
xhr.onreadystatechange = safe(function() {
if (xhr.readyState == 4) {
if (typeof(console) !== "undefined" && console !== null && console.log)
console.log("onreadystatechange for xhr2: " + xhr.responseText);
document.getElementById("result").innerHTML = xhr.responseText;
}
});
xhr.send(null);
}
JS
最後のリクエストが完了する前に XMLHttpRequest
オブジェクトを再利用した(開いた)ために Ajax リクエストを報告できない場合、JavaScript エージェントは、次のようなメッセージで Ajax リクエストが報告されなかったことをログに記録します。前のリクエストが完了した後にのみ新しい Ajax リクエストが行われるように、JavaScript を変更する必要があります。
EXT~ The reused XHR object calls open() before finishes last job. No event of XHR to '" + this._adrumAjaxT.url() + "' is reported.
JS
XMLHttpRequest オブジェクトを正しく再利用するメソッド
XMLHttpRequest
オブジェクトを再利用して複数のリクエストを正しく行うには、前のコールが完了したときのみ新しいコールが行われるように、コールをネストします。次の例では、/multi-bt
へのコールが完了したときにのみ /xhr/multi-bt2
へのコールが発信されるため、両方のコールが Ajax リクエストとして報告されます。
function reuseXHR() {
var xhr = newXhr();
xhr.open("GET", "/xhr/uptime");
xhr.onreadystatechange = safe(function() {
if (xhr.readyState == 4) {
document.getElementById("result").innerHTML = xhr.responseText;
xhr.open("GET", "/multi-bt");
xhr.onreadystatechange = safe(function() {
if (xhr.readyState == 4) {
if (typeof(console) !== "undefined" && console !== null && console.log)
console.log("onreadystatechange for xhr2: " + xhr.responseText);
document.getElementById("result").innerHTML = xhr.responseText;
// Reuse xhr again
xhr.open("GET", "/xhr/multi-bt2");
xhr.onreadystatechange = safe(function() {
console.log("/xhr/multi-bt2 responded.");
});
xhr.send(null);
}
});
xhr.send(null);
}
});
xhr.send(null);
}
JS
インジェクション構成の確認
また、特定の Ajax リクエストはインジェクション構成によってフィルタリングされている可能性があります。これは、インジェクションが XHR フィルタを使用して、モニタ対象の Ajax リクエストを制限している場合に発生します。インジェクション構成をチェックして、フィルタリングによってそのコールのモニタが妨げられていないか確認します。