APMのJavaエージェントは、アプリケーション内で発生したエラーの詳細情報をレポートします。これにより、アプリケーションのパフォーマンスやエンドユーザーの体験に影響を与えている可能性のある問題領域を把握することができます。
Java エージェント バージョン 3.40.0 以降 では、エラーの報告方法を制御するための設定オプションがいくつかあります。
予想されるエラーがエラーレートやApdexに影響を与えないように設定する エラーの無視 自動的に報告されないエラーを報告する エラーデータの表示については、 Error analytics を参照してください。すべてのエージェントのエラーデータの概要については、 Manage errors in APM を参照してください。
一般的に報告されているエラー例 次のような場合に、Javaエージェントでエラーが発生することがありました。
エラー報告
Comments
ハンドリングされないエラー(スタックトレースを含む)
Javaエージェントがトレースしていたトランザクション内で処理されないエラーが発生した場合、そのエラーはフルスタックトレースとともに報告されます。
HTTPステータスコード(スタックトレースなし)
アプリケーション内の トレース が HTTP ステータス コード (クライアント エラーの場合は400
など) を生成すると、スタック トレースなしでエラーが報告されます。 その理由は次のとおりです。
アプリケーション サーバーはエラー状態を検出し、ステータス コードを明示的に設定しました。
また
プログラム ロジックによってエラー状態が検出されたため、例外オブジェクトまたはスタックはありませんでした。
これらのタイプのトランザクションにスタック トレースを含めるには、 noticeError(...)
API 呼び出しを使用する必要があります。
noticeError(...)
APIコール
Java エージェントがnoticeError(...)
API 呼び出しを使用して明示的な呼び出しを行った場合、トランザクション内で発生したかどうかに関係なく、エラーが報告されます。報告される情報は、 Javadocs で説明されているように、 noticeError(...)
API 呼び出しで使用されるパラメーターによって異なります。
100%以上の未処理エラー報告
Javaagent は、スコープ外エラー (どのトランザクションにも関連付けられていないエラー) を報告できます。 このため、タイムスライス内に 1 つのトランザクションがあり、同じタイムスライス内に複数のエラーが発生する可能性があります。 この状況では、New Relic はエラー率over 100% を表示します。
エラーレポートの設定 Javaエージェントには、エラーの報告方法を制御するための柔軟な設定オプションがいくつか用意されています。
Config options
Details
UIによるエラーの設定
サーバーサイドコンフィグ によって、エラーを無視したり、期待通りのマークを付けたりすることができます。
予想されるエラーとして設定するには newrelic.yml
これらのバージョンのnoticeError
によって報告されるエラーは、 newrelic.yml
で予想されるエラー として構成できます。エラーがnewrelic.yml
で無視さ れるように構成されている場合、この API の呼び出しはオーバーライドされます。詳細については、 エラー構成の優先順位 を参照してください。
これらのnoticeError()
API 呼び出しを使用して、自動的に報告されないエラーを報告し、それらをnewrelic.yml
で予想されるエラー として構成します:
予想されるエラーを上書きする newrelic.yml
noticeError
のこれらのバージョンによって報告されたエラーは、 newrelic.yml
の予想されるエラー 構成をオーバーライドします。エラーが yml で無視さ れるように構成されている場合、この API の呼び出しはオーバーライドされます。詳細については、 エラー構成の優先順位 を参照してください。
これらのnoticeError(...)
API 呼び出しを使用して、自動的に報告されないエラーを報告し、API で予期されるエラー として構成します (yml の予期されるエラー構成をオーバーライドします)。
設定ファイル経由でエラーを無視または予測する
バージョン 3.40.0 以降では、 YAML ベースの設定 を使用してエラーの報告方法を制御できます。 これにより、例外クラス名のリストとオプションのエラーメッセージに基づいて、HTTP ステータス コードor に基づいてエラーを無視したり、エラーを予期したりすることができます。
Ignoring errors 指定された例外クラスまたはコードがAPM に報告されないようにします。
Expecting errors 指定された例外クラスまたはコードがアプリケーションのエラー率 やApdex スコア に影響を与えないようにします。 これにより、エラー率や Apdex スコアに基づくアラートを回避しながら、トラブルシューティングの目的でエラー情報を保持できます。
これらの設定は動的であるため、実行中のエージェントは JVM を再起動せずにnewrelic.yml の変更を認識します。 詳細と例については、 Javaagent 構成ファイルを 参照してください。
エラー収集のためのYAMLベースの設定 YAMLベースのエラーコレクションの設定では、特定のエラーを完全に無視したり、予想されるエラーを除外して、アプリケーションのエラーレートやApadexスコアに影響を与えないようにすることができます。以下の基準に基づいて、エラーを無視または予期されるものとしてマークすることができます。
エラー収集の有効化 デフォルトでは、Java エージェントには、すべてのYAML ベースのエラー構成 オプションが含まれるerror_collector
セクションが含まれています。 エラー収集は次のように有効または無効にできます。
特定のエラーを無視する 特に興味のないエラーは完全に無視することができます。無視すべきエラーを特定することで
予想されるエラーがエラーレートやApdexに影響することを防ぐ アプリケーションのビジネス ロジックの一部であるexpected のエラーは、エラー率や Apdex スコアに影響を与えないようにしながら、APM に報告することができます。 これにより、エラーによって発生するアラート(エラー率と Apdex スコアに基づく)を回避しながら、トラブルシューティングの目的で UI にエラー情報を保持できます。
以下は、 YAMLベースの設定 予想されるエラーに対するオプションを示す例です。
- "com.example.ExpectedErrorClass"
com.example.OtherExpectedErrorClass :
- "some expected error message"
expected_status_codes : 406 , 500 - 504
エラー設定の優先順位 エラー設定の優先順位は
サーバー側の設定 (YAMLファイルに値を重ねる)ignore_*
YAML の構成expected
noticeError(..)
API 呼び出しのパラメーターexpected_*
YAML の構成ここでは、さまざまなAPIコールとYAMLの設定を組み合わせた場合の結果の例を紹介します。
エラークラスを無視する(YAMLはAPIをオーバーライドする) YAMLの設定です。
- "com.example.ErrorClass"
および
APIコールです。
noticeError ( com . example . ErrorClass )
結果。
YAML ignore_classes
はnoticeError
API 呼び出しをオーバーライドし、エラーは無視されます。
予想されるエラーの報告(YAMLおよびAPI) YAMLの設定です。
- "com.example.ErrorClass"
と
APIコールです。
noticeError ( com . newrelic . Exception )
結果。
noticeError
API 呼び出しのexpected
パラメータはデフォルトで true であり、YAML expected_classes
構成にはエラー クラスが含まれています。したがって、エラーが報告され、 expected
としてマークされます。
予想されるエラーの報告(YAMLなし) YAML設定なし
と
APIコールです。
noticeError ( com . newrelic . Exception , expected = true )
結果。
エラーが報告され、期待通りのマークが表示されます。
YAML ignore_classes は API の期待されるパラメータをオーバーライドします。 YAMLの設定です。
- "com.example.ErrorClass"
と
APIコールです。
noticeError ( com . newrelic . Exception , expected = true )
結果。
YAML ignore_classes
はnoticeError
API 呼び出しのexpected
パラメータをオーバーライドするため、エラーは無視されます。
APIの期待されるパラメータはYAMLの expected_classesをオーバーライドします。 YAMLの設定です。
- "com.example.ErrorClass"
と
APIコールです。
noticeError ( com . newrelic . Exception , expected = false )
結果。
noticeError
API 呼び出しのexpected
パラメータは、YAML のexpected_classes
をオーバーライドします。したがって、エラーは通常どおり報告されます ( expected
としてマークされません)。
YAMLで期待されるオーバーライドを無視する YAMLの設定です。
- "com.example.ErrorClass"
と
YAMLの追加設定
- "com.example.ErrorClass"
結果。
YAML ignore_classes/ignore_messages
は YAML expected_classes/expected_messages
をオーバーライドするため、エラーは無視されます。これと同じ原則がignore_status_codes
とexpected_status_codes
に適用されます。
エラーの詳細についてログを調べる ログやアプリケーションのデータをまとめて、トラブルシューティングを簡単かつ迅速に行うことができます。 logs in context では、エラーやトレースに関連するログメッセージをアプリのUIで直接確認することができます。
Errors
ページからトレースをクリックすると、
Error details
ページ に移動します。
エラーの詳細ページで、
See logs
をクリックします。
個々のログメッセージに関連する詳細を表示するには、メッセージを直接クリックします。
無視されるエラーと期待されるエラーをUIで設定 APM UIを介して、 予想されるエラー を設定すること。
有効になっていない場合は、サーバーサイドコンフィグレーションを有効化 します。
期待通りとマークしたいエラーのあるアプリケーションのサーバー側の設定メニュー にアクセスします。
Error collection
の下の
Ignore
または
Exclude expected errors
いずれかに、構成するエラーの HTTP コードまたはエラー クラスを入力します。
Save
を選択します。
予想されるエラーをUIで表示する方法については、 予想されるエラーを表示する を参照してください。