• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

SPAエージェントでルート変更ができない

問題

Pro + SPA エージェントを使用していますが、期待する route change ブラウザー インタラクションのすべてが表示されていません。

これがご迷惑をおかけする可能性があることは承知しております。私たちの継続的な目標は、ルート変更の検出とキャプチャに使用する方法から始めて、SPA 機能の機能を改善し、よりシンプルかつ信頼性の高いものにすることです。

解決

短期的なソリューション

すべてのルート変更が確実にキャプチャされるようにするには、 SPA interactive() APIを使用できます。インタラクション API を使用すると、ルート変更が実際に検出されない場合、( category 属性の) BrowserInteraction イベントが route 変更ではなく custom として分類されます。

フレームワークがルーターのアクティビティを表すイベントを公開している場合、これらのイベントでカスタムインスツルメンテーションを使用することができます。ここでは、Angularのルーターで当社のAPIを使用する例を示します。

router.events.subscribe((event: Event) => {
if (event instanceof NavigationStart) {
let i = newrelic.interaction();
i.setName(event.url);
i.save();
}
});

この例では、 router オブジェクトは ( @angular/router モジュールからの) Angular ルーターのインスタンスです。 setName 呼び出しは、 BrowserInteraction イベントの name 属性を新しい URL に設定し、 save 呼び出しは対話が確実にキャプチャーされるようにします。独自のアプリケーションのフレームワークのニーズに合わせてこれを調整する必要があります。

フレームワークがルーティング イベントを提供しない場合は、 clickなどの元の対話イベントのイベント ハンドラーにこのコードを追加できます。

myButton.addEventListener('click', function() {
let i = newrelic.interaction();
i.setName('new URL');
i.save();
});

推奨事項: ルーター イベントにもインタラクション イベント ハンドラーにもアクセスできない場合は、ユーザー インタラクションの結果であることがわかっているコードにこれをできるだけ早く実装してください。

SPA API を使用する代わりに、ルートを PageAction イベントとしてキャプチャすることもできます。PageAction イベントを 使用して、任意のカスタム データをキャプチャできます。このオプションは、SPA インタラクション API の使用が期待どおりに機能しない場合のフォールバックとして、または組み込みの BrowserInteraction イベントからカスタム インストルメンテーションを完全に分離するためにお勧めします。

これらのソリューションはどちらも、これらのイベントを BrowserInteraction イベントまたは PageAction イベントとして確実にキャプチャできます。ただし、正しい継続時間と関連する AJAX 呼び出しの記録には対処しません。

サポート

この方法で問題が解決しない場合は、サポートチケットを提出していただき、以下の情報をご用意ください。

  • ほとんどのルートの変更が表示され、期待していた特定のルートの変更が表示されない場合は、その特定のルートのコードの実装の違いを評価してみてください。そのルートについて、サポートチームに提供できるような非標準的な、あるいはユニークなものはありますか?
  • フレームワークや興味のありそうなライブラリを文書化してください。これが新しい問題である場合、これらのインタラクションが突然トラッキングされなくなるような環境の変化はありましたか?
  • 使用しているブラウザエージェントのバージョンに注意してください。数リリース以上遅れている場合は、同様の問題が既に解決されている可能性があるため、最新のリリースに更新することをお勧めします。
  • これらの問題の診断は複雑なため、チームはテストや研究のために問題を実証する環境やコードへのアクセスを必要とする可能性が高いことに注意してください。

原因

ブラウザエージェントは、フレームワークにとらわれず、コーディングのベストプラクティスをサポートしようとしています。しかし、期待したルート変更を収集できないようなエッジケースを見逃すこともしばしばあります。この実装は、最も一般的な非同期ブラウザAPIのインストゥルメントに基づいています。ウェブアプリケーションが非同期APIを使用していたり、カスタムコードやサードパーティコードを使用していても、インストルメント化されていない場合があり、その結果、不正確な経路変更や見逃しが発生することがあります。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.