Java用New Relicの概要

New RelicのJavaエージェントを使用すると、コード内のパフォーマンスの問題から小さなエラーまですべてを追跡できます。エージェントは1分ごとにメトリックタイムスライスとイベントデータをNew Relicのユーザーインタフェースに載せます。該当するデータの所有者(オーナー)はインタフェースにサインインしてデータを使用し、ウェブサイトのパフォーマンスを確認できます。

New Relic Javaエージェントを使用して、「私のアプリが遅い」のチュートリアルでアプリのパフォーマンスの問題を解決します。

ヒント

Javaの動向についてご興味がありますか?弊社のレポート2024年Javaエコシステムの現状をご覧ください。

インストレーション

Javaエージェントを使用するには、

  1. システムがJavaエージェントの互換性および要件を満たしていることを確認してください。
  2. まだの場合は、無料のアカウントにサインアップしてください。

    inlineSignup.nameValidationHint

    Eメールを次のようにフォーマットしてください:user@example.com

    100 GB + 1 user free. Forever. No credit card required.
    By signing up you're agreeing to Terms of Service and Services Privacy Notice.

    This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

  3. ランチャーを使用して、または次のインストールドキュメントに従って、Javaエージェントをインストールします。

New Relic UIでアプリのパフォーマンスを表示するには、one.newrelic.com > All capabilities > APM & services > (select an app) > Summaryに移動します。APMユーザーインタフェースには専用のJVM metrics ページトランザクションエラーの詳細、スレッドプロファイラーツールが含まれており、Javaスレッドのサンプリング、スタックトレースのレポート作成などを実行できます。

また、エージェントインストゥルメンテーションを拡張し、当社のメトリクスとイベントエクスプローラーダッシュボードなど、他のNew Relic機能でデータを調査することもできます。

起動設定

Javaエージェントは、newrelic.jarと同じディレクトリにある必要がある、newrelic.ymlファイルからスタートアップ設定を読み込みます。また、Javaシステムのプロパティを使用して設定を上書きすることもできます。

エージェントは、スタートアップ(ブートストラップ)時に、license_keyapp_nameの設定が必要です。ログファイルの場所やその他の設定はnewrelic.ymlファイルでカスタマイズできます。また、アプリケーションサーバーが同一のJVMで複数のアプリケーションを実行している場合は、命名設定を調整することができます。

設定オプション

New Relicウェブインタフェースからアプリケーションのレポーティングをサーバーサイドコンフィグレーションを使用して設定できます。変更内容はJVMを再起動した際にアプリケーションをレポートするすべてのエージェントに適用されます。ただし、サーバーサイドコンフィグレーションを使用する場合は、引き続き必要な設定(license_keyapp_name)をローカル設定ファイルに保持する必要があります。

トランザクションのトレースとエラーのスナップショットの両方において、オプションでHTTPパラメーターを記録することもできます。HTTPパラメーターには、クレジットカード番号のような機密情報が含まれる場合があります。エージェントには特定の名前を持ったパラメーター以外のHTTPパラメーターを収集するような、データセキュリティを確保するための設定オプションが複数存在します。

APMおよびインフラストラクチャデータのログを表示

また、ログとアプリケーションのデータを統合して、トラブルシューティングをより簡単かつ迅速にできます。コンテキストのログでは、エラーとトレースに関連するログメッセージをアプリケーションのUIで直接表示できます。また、Kubernetesクラスタなど、インフラストラクチャデータのコンテキストでログを表示することもできます。別のUIページに切り替える必要はありません。

追加のインストゥルメンテーション

Javaエージェントをインストール後、以下のいずれかの方法を使用してインストゥルメンテーションを拡張できます。

JVMの再起動タイミング

設定ファイルまたはカスタムXMLを変更する場合は、ほぼすべての場合にJVMを再起動する必要があります。再起動が不要なのは、以下の4つの場合に限定されます。

JVM restart is not required for...

Comments

ログレベルまたは監査モードの変更

単にJavaエージェント設定ファイルlog_levelaudit_modeを変更する場合は、JVMを再起動する必要はありません。

カスタムインストゥルメンテーションXMLファイル

JVMを再起動するかどうかは、Javaエージェントのバージョンによって異なります。

  • 3.15.0以上:extensionsフォルダ内のカスタムインストゥルメンテーションXMLファイルを更新する場合、更新内容は1分以内に自動的に再読み込みされます。
  • Javaエージェントのバージョン3.15.0以下:バージョン3.15.0以下のエージェントを使用している場合は、JVMを再起動する必要があります。

ブレーカーの変更

Javaカスタムインストゥルメンテーション用のブレーカーを変更する場合は、JVMの再起動は不要です。

無視されたまたは想定済みのエラー

newrelic.ymlファイルを設定してエラーを無視または想定している場合は、JVMを再起動する必要はありません。これには、バージョン3.40.0以上のJavaエージェントを使用している場合に、newrelic.ymlファイルにステータスコードまたはクラスを追加することが含まれます。例:

  • ignore_status_codes
  • expected_status_codes
  • ignore_classes
  • ignore_messages
  • expected_classes
  • expected_messages

その他すべての変更についてはエージェントの再起動、つまりJVMの再起動が必要です。

JSR 163準拠

New Relic Javaエージェントはウェブのトランザクションを監視し、その情報を受信し、強力なデータセキュリティ対策を施したNew Relicのユーザーインタフェースにその情報を伝達します。このエージェントは、JVMの起動処理を変更することでJVMによってアクティブ化される、JSR 163準拠のjavaagentとしてパッケージ化されています。有効化されると、エージェントはそれ自体をクラス読み込み処理の中に組み込み、バイトコードインストゥルメンテーション(bci)を使用してクラスメソッドをインストゥルメントします。

Webアプリケーションへの影響を最小限に抑えるように設計されたクラスはすべて、ユーザー独自のクラスと衝突しないように、newrelicパッケージネームスペースに存在します。このエージェントは、ソフトウェアプローブの挿入にASMのbciエンジンを使用します。

このエージェントは、オペレーティングシステム、Javaのバージョン、システムのプロパティ、New Relicの設定ファイルなど、使用中のホスト環境に関する基本的な情報を受信します。また、このエージェントはJVMとJMXからデータをポーリングします。

トラブルシューティング手順

問題がある場合は、そのセクションのデータが表示されない、およびその他のトラブルシューティング文書を参照してください。