Rubyエージェントを使用すると、 ブラウザ監視エージェント 計装をウェブページに自動または手動で追加することができます。UIでブラウザ・モニタリングを有効にするには、 ブラウザ・エージェント をインストールする手順に従ってください。次に、このセクションの手順に従ってRubyエージェントを設定します。
要件
ブラウザの自動計測は、Railsのほとんどの最新バージョンでサポートされています。
- New Relic Ruby エージェント (バージョン 3.0.1 以上)
- 自動計測のためRails 2.3以上
- 手動での計測のためにRails 2.0~2.2
オートインストルメントの使用
自動計測機能はRackで動作し、Rails 2.3以上が必要です。
newrelic.yml
に以下のフラグを追加または編集することで、エンドユーザの監視スクリプトをページに自動的に組み込むようにエージェントを設定します。
browser_monitoring: auto_instrument: true
これは、エンドユーザーを監視する最もシンプルな方法です。Rubyエージェントは、あなたのアプリケーションからの各ページを検査し、ブラウザのJavaScriptをヘッダーに自動的に注入します。自動注入は Rack をサポートしている環境で動作します。パフォーマンス上の理由から、エージェントはアプリケーションのレスポンスの最初の50kのみをスキャンして、ヘッダの計測ポイントを探します。 X-UA-Compatible
metaタグが存在し、 < head>
タグが50kよりも長い場合、自動計測は潔く失敗します。
自動計測器は、 X-UA-Compatible
meta タグを探し、その直後に JavaScript を挿入します。自動計測器は、 X-UA-Compatible
meta タグを見つけられない場合、冒頭の head タグの後に挿入し、失敗した場合は冒頭の body タグの後に挿入します。これらのタグが条件分岐やコメントで囲まれていると、自動計測は失敗する可能性があります。
自動インストルメントがアプリケーションのページを正しくインストルメントできない場合は、 エージェントAPI経由で を手動でインストルメントする必要があります。
エージェントAPIを介した手動での計測
Rails 2.1~2.2を使用している場合や、自動計測機能を使用できない場合でも、適切なスクリプトをページに挿入することで、エンドユーザーのモニタリングを手動で設定することができます。New Relic Ruby エージェントの API を使用して、ページに挿入するスクリプトを生成します。
例えば、アプリケーションのテンプレートを変更してエージェントを呼び出すには、次のようにします。
<head> <%= ::NewRelic::Agent.browser_timing_header rescue "" %> ... existing template code ... </head>
CSP Nonceのサポート
ブラウザ・インスツルメンテーションでのCSP Nonceの使用は、Rubyエージェントのバージョン7.1.0以降でサポートされています。ブラウザ・インスツルメンテーションでNonceを使用するには、ブラウザ・モニタリングの自動インスツルメンテーションを無効にして、エージェントAPIによる手動インスツルメンテーションを使用する必要があります。
APIメソッドの引数にnonceを渡すことで、エージェントがブラウザのインスツルメンテーションにnonceを挿入できるようになりました。例えば、 NewRelic::Agent.browser_timing_header(nonce)
.
トラブルシューティング
ブラウザのデータが報告されていない場合は、HTMLソースを表示し、HTMLヘッド内にこれと同様のスクリプトブロックが2つあることを確認してください。
<script type="text/javascript">window.NREUM||(NREUM={});...</script>
これらが存在しない場合は、テンプレートファイルの自動計測の設定または手動計測の配置を確認してください。
3.7.0 より前の Ruby エージェントのバージョンでは、 < %=::NewRelic::Agent.browser_timing_footer rescue"" %>
も、ドキュメントのできるだけ下の方で呼び出す必要がありました。3.7.0では、必要なスクリプトはすべて browser_timing_header
によって含まれています。 browser_timing_footer
は、互換性のために空の文字列を返します。
オートインストルメントの無効化
auto-instrument
のデフォルト値は true
です(指定されていない場合も同様です)。オートインストルメントを無効にするには、このフラグを false
に設定します。
特定のコントローラやコントローラアクションに対してのみ自動計測を無効にするには、 newrelic_ignore_enduser
を使用してください。サーバーサイドのインストルメンテーションは、この呼び出しの影響を受けません。