• /
  • ログイン
  • 無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

特定の取引を無視する

New Relic for Rubyでは、RailsやSinatraアプリケーション内の特定のリクエストに対するインスツルメンテーションを選択的に無効にすることができます。

すべてのインストルメントをブロック

newrelic_ignore をRailsコントローラやSinatraアプリケーション内から引数なしで呼び出すと、そのコントローラやアプリケーションが処理するすべてのリクエストの計測を防ぐことができます。

newrelic_ignore

newrelic_ignore を使用すると、エージェントは対象となるトランザクションのパフォーマンスデータ(メトリクス、トランザクションのトレース、イベント、トレースされたエラーなど)を記録することができず、また、そのトランザクションが Apdex 全体のスコアに貢献することもできなくなります。

Railsで特定のアクションを無視する

Railsのコントローラで特定のアクションだけを無視したい場合は、 :only または :except オプションを newrelic_ignore で使用します。

例えば、コントローラ上の indexshow のアクションだけを無視するには、次のようにします。

newrelic_ignore :only => [:index, :show]

コントローラ上のすべてのアクションを無視するには ****index を除く。

newrelic_ignore :except => [:index]

Sinatraで特定のルートを無視する

Sinatra アプリケーション内の特定のルートのみを無視したい場合は、Sinatra スタイルのルート定義を、Sinatra アプリケーション内から newrelic_ignore に渡すことができます。詳しくは、 Sinatra: Ignoring routes をご覧ください。

Apdexのコントリビューションを無視する

コントローラ内のすべてのアクションがApdexスコアに寄与しないようにしたいが、他のパフォーマンスデータは欲しいという場合は、 newrelic_ignore_apdex を使用してください。

newrelic_ignore_apdex

Railsアプリケーションでは、 newrelic_ignore_apdex は、 :only and :except options as newrelic_ignore をサポートしています。Sinatraアプリケーションでは、特定のトランザクションを対象とするために、 同じSinatraスタイルのルート を受け入れます。

ブラウザの不正操作をブロックする

newrelic_ignore_enduser を使用すると、 ブラウザモニタリング のデータをキャプチャするために使用される JavaScript をエージェントが自動的に挿入することを防ぎます。サーバーサイドのインストルメントは影響を受けません。

コントローラ内のすべてのアクションに対してブラウザエージェントインジェクションを防ぐには、コントローラクラスに次のような呼び出しを追加します。

newrelic_ignore_enduser

Railsアプリケーションでは、 newrelic_ignore_enduser は、 :only and :except options as newrelic_ignore をサポートしています。Sinatraアプリケーションでは、特定のトランザクションを対象とするために、 同じSinatraスタイルのルート を受け入れます。

動的にトランザクションを無視する

場合によっては、特定のトランザクションを無視するかどうかの判断を、リクエスト中のランタイムにしかわからない基準に基づいて行いたいこともあるでしょう。このような場合には、上記のような宣言型のメカニズムは適していません。Rubyエージェントのバージョン3.9.2からは、代わりに以下のAPIコール群をトランザクション内の任意の位置から使用することができます。

NewRelic::Agent.ignore_transaction
NewRelic::Agent.ignore_apdex
NewRelic::Agent.ignore_enduser

これらのメソッドは、 newrelic_ignorenewrelic_ignore_apdexnewrelic_ignore_enduser の呼び出しと同様の結果になりますが、クラス定義中ではなく、リクエスト中に呼び出すことができます。

設定によりURLによるトランザクションを無視する

rules.ignore_url_regexes の構成設定を使用して、URLによるトランザクションを無視することができます。

rules:
ignore_url_regexes: ["secret", "^/admin"]

この設定は、設定されたパターンに一致する トランザクションイベント のレポートを防ぐだけです。 newrelic_ignore* ファミリーのメソッドのいずれかを使用して、トレースデータなどのすべてのデータをトランザクションから報告しないようにすることができます。

正規表現は、デフォルトではいかなるタイプのアンカリングも含まないことに注意してください。secret/の正規表現は、'newrelic.com/secret/login'にマッチし、'newrelic.com/users/secretpanda'にもマッチします。anchored admin regexは、'newrelic.com/admin/praetorians'にマッチしますが、'newrelic.com/users/totally-real-admin'にはマッチしません。

必要に応じて、カンマで区切られた文字列で正規表現のリストを提供することもでき、環境変数で無視する正規表現を設定することができます。

NEW_RELIC_RULES_IGNORE_URL_REGEXES="secret,^/admin"

いつものように、環境変数の設定が newrelic.yml の設定よりも優先されます。

トラブルシューティング

newrelic_ignore* メソッドのファミリーは、RailsのコントローラクラスやSinatraアプリケーション( Sinatra::Base のサブクラス)の中でのみ動作します。その他のアプリケーションでは、 NewRelic::Agent.ignore_* 無視したい各リクエスト内での呼び出しファミリーを使用してください。

newrelic_ignore をRailsコントローラやSinatraアプリケーション内で使おうとして NoMethodError が発生した場合は、クラス定義内で newrelic_ignore を呼ぼうとする前に、 newrelic_rpm が要求されていることを確認してください。

問題を作成する
Copyright © 2022 New Relic Inc.