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
メタ タグが存在し、 <head>
タグが 50k を超える場合、自動インストルメンテーションは正常に失敗します。
自動インストルメンテーションは、 X-UA-Compatible
メタタグを検索し、その直後に JavaScript を挿入します。自動インスツルメンテーションが X-UA-Compatible
メタ タグを見つけられない場合は、開始 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>
これらが存在しない場合は、テンプレートファイルの自動計測の設定または手動計測の配置を確認してください。
Ruby エージェントの 3.7.0 より前のバージョンでは、<%=::NewRelic::Agent.browser_timing_footer rescue "" %>
も、できるだけドキュメントの最後に近いところで呼び出す必要がありました。3.7.0では、必要なスクリプトはすべて browser_timing_header
に含まれています。browser_timing_footer
互換性のために空の文字列を返します。
オートインストルメントの無効化
auto-instrument
のデフォルト値は true
です (指定されていない場合でも)。自動インスツルメンテーションを無効にするには、このフラグを false
に設定します。
特定のコントローラーまたはコントローラー アクションに対してのみ自動インスツルメンテーションを無効にするには、 newrelic_ignore_enduser
を使用します。サーバー側の計測は、この呼び出しの影響を受けません。