New Relic Browser: リソース単位の処理時間、JS エラー、Ajax パフォーマンス。有料機能ならここまでできる。

Advent Calendar 23日目です。昨日に引き続き、New Relic Browser を紹介します。今日は、有料機能である "セッショントレース"、"AJAX リクエスト"、"JavaScript エラー" を紹介します。

# セッショントレース

セッショントレースは、前回の[New Relic Browser : ユーザーのパフォーマンス(RUM)も計測できるよ](http://qiita.com/kumatronik/items/35f82746d5072001f566)で書いたブラウザトレースの上位機能です。ブラウザトレースでは、特定のリクエストに対する大まかな処理の内訳だけでした。セッショントレースでは、ブラウザの開発者ツールが提供するような各リソースごとの読み込み時間がタイムラインで確認できます。

セッショントレースの詳細画面は以下のような感じです。（動画）

![test11.gif](https://qiita-image-store.s3.amazonaws.com/0/46003/e210665e-ddf0-6540-c9d6-1d6e8f4b18aa.gif)

左メニューから "Session traces" を選択します。
セッショントレースの一覧が表示されます。このリストは、指定している時間帯から近い順に並んでいます。直近のトレースから最大20個までリストされるようです。

![browser_ss_01.png](https://qiita-image-store.s3.amazonaws.com/0/46003/d5706913-e13b-ee8d-6a82-af3ef5634d18.png)

そこから、特定のパスをクリックすると、詳細画面に遷移します。

![browser_st_01.png](https://qiita-image-store.s3.amazonaws.com/0/46003/9692d68d-4804-0caa-7213-698df22ebbd1.png)

各リソースをクリックするとそのリソースを"読み込み開始時間"、"読み込み終了時間"、"読み込みに掛かった時間"が表示されます。

![browser_st_02.png](https://qiita-image-store.s3.amazonaws.com/0/46003/e0da27fe-1e09-c1a2-e85b-5f8cfae44dd9.png)

また、画面右上の処理の種類(Backend, Dom Processing 等)をクリックすると、その処理の最後の処理に下のタイムラインの位置が自動で移動します。（上のスクリーンショット参考）

![browser_st_03.png](https://qiita-image-store.s3.amazonaws.com/0/46003/6496bc0a-f90d-0277-3456-5273298f2e96.png)



# Ajax リクエスト

アプリ内の Ajax リクエストのパフォーマンスをチェックできます。Ajax リクエストは通常の Page view では表示（データの収集）できないので、ここでチェックします。

左メニューから "AJAX" を選択します。
指定している時間帯に発生した Ajax リクエストの情報を表示します。

![browser_ajax_1.png](https://qiita-image-store.s3.amazonaws.com/0/46003/cbb4cfe8-ea9c-c5a7-012c-ffaf907d2d64.png)

Ajax リクエストは、"合計処理時間の割合"、"スループット"、"レスポンスタイム"、"平均データ量"、"平均コールバック時間"で並び替えが可能です。

リストから気になるリクエストをクリックすると、そのリクエストだけのパフォーマンスが見れます。

![browser_ajax_2.png](https://qiita-image-store.s3.amazonaws.com/0/46003/4e1ab301-74d0-9274-0590-e695f24c4657.png)

また、"By pageview" タブをクリックすると、その Ajax リクエストが使われている全パスとその割合が見れます。これにより、その Ajax がどこで使われているのか簡単に確認できます。

![browser_ajax_3.png](https://qiita-image-store.s3.amazonaws.com/0/46003/b2f39bd0-6c1e-9ce2-3341-582e64668bfb.png)

また、この機能は、IE 7/IE 8/Chrome for iOS は対象がだそうです。


# JavaScript エラー

サイト内で起きた JS のエラーをチェックできます。ここでは、ブラウザ内で発生したエラーの発生状況や個々のエラーの内容、環境、スタックトレースまで見ることができます。これは結構便利だと思います。

左メニューから "JS errors" を選択します。
指定している時間帯に発生した JS エラーの情報を表示します。

![browser_jserror_01.png](https://qiita-image-store.s3.amazonaws.com/0/46003/e9eb50b4-5c4b-6a60-78e7-a3d51a1c1c02.png)

エラーメッセージとその発生回数？が多い順にリストになります。右の "JavaScript error instances" で時系列で発生状況を確認できます。

リストから任意のエラーをクリックすると、そのエラーにフォーカスしたデータが見れます。

![browser_jserror_2.png](https://qiita-image-store.s3.amazonaws.com/0/46003/29110d9a-cff1-dc42-7ea1-cc7096efab74.png)

また、"Error instance details" をクリックすると、そのエラーが発生した個別の状況のデータがみれます。"1/1" と書いているあるところは、複数回エラーが発生していれば、"1/3"とかになるので、矢印をクリックして、個別のデータをみることができます。

![browser_jserror_3.png](https://qiita-image-store.s3.amazonaws.com/0/46003/8a6f6240-188c-6811-6394-0f29d741d264.png)

## 利用できないエラー

New Relic では、以下のようにいくつか補足できないものがあります。

- スクリプトの読み込み中に発生した シンタックスエラー、スクリプトエラー (スタックトレースに積まれないから）
- インラインの JS、イベントハンドラー内のエラー （ラップできないから）
- 別ドメインにある外部のスクリプトで発生したエラー
- スタックトレースを利用できない古いブラウザ

また、New Relic は JSの `function` をラップして、エラーをキャッチしてエラーとして報告しているので、そもそもエラーとして、スローされないものはここではエラーとみなされないようです。


# まとめ

２日に渡り New Relic Browser の機能をざっと紹介してみました。JS エラーや Ajax リクエストはかなりデバッグなんかに便利なんじゃないかと思います。是非、活用してみてください。

ここではかなり説明を端折っている部分がありますので、詳細が気になる方は、是非、[公式ドキュメント](https://docs.newrelic.com/docs/browser/new-relic-browser)をご覧ください。