独自のコードで処理しているエラー データをNew Relicに送信するには、エラー ハンドラー内で Ruby エージェントAPI NewRelic::Agent.notice_error
呼び出しを使用します。
New Relicに通知する Ruby
このAPIコールは、例外と任意のオプションハッシュを取ります。次のフォーマットを使用してください:
NewRelic::Agent.notice_error(exception, options = { }) ⇒ Object
この関数は、所与のエラーを記録して、仮に定義した場合は設定ベースのエラー無視とグローバルな#ignore_error_filter
手法を含む、通常のエラーフィルタリングプロセスに渡します。
exception
は、記録される例外もしくはエラーメッセージになります。必要であれば、options = { }
を含めることもできます。以下のパラメーターは特別な扱いを受けます。また、他の用意するその他のパラメーターもカスタムパラメーターとして扱われます。
options = { } | Comments |
---|---|
| エラートレースのみを記録。これは、エラー率またはApdexステータスに作用しません。UIで予期されるエラーの詳細に関しては、予期されるエラーを表示を参照してください。 Rubyエージェントのバージョン4.3.xで非推奨となった |
| カスタムパラメーター |
| リクエストパスから、リクエストパラメーターまたはクエリ文字列を差し引いたもの。 通常は必要ありません。トランザクション外で |
| トランザクションと関連したメトリック名。 通常は必要ありません。トランザクション外で |
| 以前のバージョンのRubyエージェントでは |
エラーフィンガープリント: 検出されたエラーごとにエラーグループを動的に適用する
エラー発生が適切にグループ化されていませんか?コールバック関数を使用して、独自のエラーフィンガープリントを設定します。
Proc
ベースのコールバックをエージェントに提供して、通知された各エラーに目的のエラーグループを動的に適用できます。RubyエージェントAPI NewRelic::Agent.set_error_group_callback
を使用して、エージェントにコールバックを提供します。
このAPI呼び出しは、コールバックメソッド(Proc
型である必要があります)を唯一の引数として扱います。引数は必須です。API呼び出しは、New Relic Rubyエージェントの起動ごとに1回のみ行う必要があるため、Railsの初期化子などに呼び出しを配置できます。APIへの後続の呼び出しが行われると、コールバックメソッドは指定された最新のものに更新されます。以下は、コールバックが定義され、NewRelic::Agent.set_error_group_callback
APIメソッドに渡される例です。
proc = proc { |hash| "Access" if hash[:'http.statusCode'] == 401 }NewRelic::Agent.set_error_group_callback(proc)
示されている例では、ハッシュを唯一の引数として受け入れ、ハッシュに値401のHTTPステータスコードキーが含まれる場合、目的のエラーグループ名に対して文字列の「Access」を返すコールバックprocが作成されます。
コールバックprocは、正確に1つの入力引数(ハッシュ)を受け取ることが想定されます。ハッシュには以下が含まれます。
Key | Value |
---|---|
| Rubyエラークラスのインスタンス。 |
| 現在のトランザクションのカスタムアトリビュート |
| 利用可能な場合、現在のリクエストURI |
| 利用可能な場合、HTTPステータスコード(200、404など) |
| 利用可能な場合、HTTPメソッド(GET、PUTなど) |
| 予期されていたエラー(true)かどうか(false) |
| オプションのハッシュが渡されました |
コールバックprocは、目的のエラーグループ名を決定できる場合、その名前を表す文字列を返すことが想定されます。procがnil
または空の文字列(''
)を返すと、エラーはサーバー側のグループ化ロジックを受け取ります。
ユーザー追跡: 各トランザクションとエラーにユーザーIDを関連付ける
これで、エラーグループの影響を受けるユーザー数を確認できます。
New Relic RubyエージェントがユーザーIDを認識している場合、トランザクションとエラーをユーザーIDに関連付けることができます。RubyエージェントAPI NewRelic::Agent.set_user_id
を使用して、エージェントにユーザーIDを指定します。
このAPI呼び出しには、エンドユーザーの一意の識別子を表す文字列の単一の引数が必要です。この文字列は、UUID、データベースIDなどです。API呼び出しは、トランザクションごとに少なくとも1回実行し、トランザクションを関連付けるユーザーIDをNew Relic Rubyエージェントに通知する必要があります。次に、トランザクションの有効期間中にエージェントがエラーに気付く場合、エラーにはユーザーID値を保持するenduser.id
エージェント属性が含まれます。
新規ユーザーIDがスコープに入るたびに、API呼び出しを想定しているため、理想的には、ユーザーセッションの作成を認識するミドルウェア経由で呼び出されます。New Relic Rubyエージェントは、ユーザーIDを認識すると、現在のトランザクションと、現在のトランザクションの有効期間中に通知されたエラーにenduser.id
エージェント属性を指定します。
バージョン追跡: メタデータを使用して、どのバージョンでエラーが発生したかを確認します。
エラー受信トレイは、ソフトウェアのどのバージョンでエラーが発生しているかを自動的に追跡します。 バージョンデータもCodeStreamに表示されます。
エラーが発生するソフトウェアのバージョンを特定するために、次のいずれかの環境変数を設定します。
NEW_RELIC_METADATA_SERVICE_VERSION
デプロイされたコードのバージョンを含むエラー イベント データに属性tags.service.version
を追加します。多くの場合、1.2.3
などのセマンティック バージョンですが、常にそうであるとは限りません。NEW_RELIC_METADATA_RELEASE_TAG
リリース タグ (v0.1.209
やrelease-209
など) を含むイベント データに属性tags.releaseTag
を追加します。NEW_RELIC_METADATA_COMMIT
コミット sha を含むイベント データに属性tags.commit
を追加します。 sha 全体を使用することも、最初の 7 文字だけを使用することもできます (例:734713b
)。