New RelicのJavaエージェントを使用すると、コード内のパフォーマンスの問題から小さなエラーまですべてを追跡できます。エージェントは1分ごとにメトリックタイムスライスとイベントデータをNew Relicのユーザーインタフェースに載せます。該当するデータの所有者(オーナー)はインタフェースにサインインしてデータを使用し、ウェブサイトのパフォーマンスを確認できます。
New Relic Javaエージェントを使用して、「私のアプリが遅い」のチュートリアルでアプリのパフォーマンスの問題を解決します。
ヒント
Javaの動向についてご興味がありますか?弊社のレポート2024年Javaエコシステムの現状をご覧ください。
インストレーション
Javaエージェントを使用するには、
- システムがJavaエージェントの互換性および要件を満たしていることを確認してください。
- まだの場合は、無料のアカウントにサインアップしてください。
- ランチャーを使用して、または次のインストールドキュメントに従って、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_key
とapp_name
の設定が必要です。ログファイルの場所やその他の設定はnewrelic.yml
ファイルでカスタマイズできます。また、アプリケーションサーバーが同一のJVMで複数のアプリケーションを実行している場合は、命名設定を調整することができます。
設定オプション
New Relicウェブインタフェースからアプリケーションのレポーティングをサーバーサイドコンフィグレーションを使用して設定できます。変更内容はJVMを再起動した際にアプリケーションをレポートするすべてのエージェントに適用されます。ただし、サーバーサイドコンフィグレーションを使用する場合は、引き続き必要な設定(license_key
とapp_name
)をローカル設定ファイルに保持する必要があります。
トランザクションのトレースとエラーのスナップショットの両方において、オプションでHTTPパラメーターを記録することもできます。HTTPパラメーターには、クレジットカード番号のような機密情報が含まれる場合があります。エージェントには特定の名前を持ったパラメーター以外のHTTPパラメーターを収集するような、データセキュリティを確保するための設定オプションが複数存在します。
APMおよびインフラストラクチャデータのログを表示
また、ログとアプリケーションのデータを統合して、トラブルシューティングをより簡単かつ迅速にできます。コンテキストのログでは、エラーとトレースに関連するログメッセージをアプリケーションのUIで直接表示できます。また、Kubernetesクラスタなど、インフラストラクチャデータのコンテキストでログを表示することもできます。別のUIページに切り替える必要はありません。
追加のインストゥルメンテーション
Javaエージェントをインストール後、以下のいずれかの方法を使用してインストゥルメンテーションを拡張できます。
カスタムインストゥルメンテーション: 注釈またはXMLを使用してJavaカスタムインストゥルメンテーションを実装します。
ディストリビューティッド(分散)トレーシングの有効化: リクエストのパスが分散されると、複数サービスのアーキテクチャー全体に展開する様子を見ることができます。
カスタム属性の収集: APIまたはXMLファイルでカスタム属性を収集します。
JavaエージェントAPI: APIを使用してJavaエージェントの制御、カスタマイズまたは機能を拡張します。
ブラウザのインストゥルメンテーション:Javaエージェントを
と統合してエンドユーザーのアクティビティを可視化します。
Javaカスタムインストゥルメンテーションのブレーカー: ブレーカーを使用して、アプリケーションが過剰インストゥルメンテーションされないように保護します。
YAMLによるカスタムインストゥルメンテーション: YAMLカスタムインストゥルメンテーションファイルを使用してカスタムJMXメトリクスを表示します。
JVMメトリクスページ: 最も一般的なアプリケーションサーバーからJMXを使用してメトリクスを収集します。
オープンソーステレメトリー: Kamon Reporter、OpenTelemetryエクスポーター、Micrometerメトリクスのレジストリ、Java Telemetry SDKなどのさまざまなツールを提供しています。
JVMの再起動タイミング
設定ファイルまたはカスタムXMLを変更する場合は、ほぼすべての場合にJVMを再起動する必要があります。再起動が不要なのは、以下の4つの場合に限定されます。
JVM restart is not required for... | Comments |
---|---|
ログレベルまたは監査モードの変更 | 単にJavaエージェント設定ファイルで |
カスタムインストゥルメンテーションXMLファイル | JVMを再起動するかどうかは、Javaエージェントのバージョンによって異なります。
|
ブレーカーの変更 | Javaカスタムインストゥルメンテーション用のブレーカーを変更する場合は、JVMの再起動は不要です。 |
無視されたまたは想定済みのエラー |
|
その他すべての変更についてはエージェントの再起動、つまりJVMの再起動が必要です。
JSR 163準拠
New Relic Javaエージェントはウェブのトランザクションを監視し、その情報を受信し、強力なデータセキュリティ対策を施したNew Relicのユーザーインタフェースにその情報を伝達します。このエージェントは、JVMの起動処理を変更することでJVMによってアクティブ化される、JSR 163準拠のjavaagent
としてパッケージ化されています。有効化されると、エージェントはそれ自体をクラス読み込み処理の中に組み込み、バイトコードインストゥルメンテーション(bci)を使用してクラスメソッドをインストゥルメントします。
Webアプリケーションへの影響を最小限に抑えるように設計されたクラスはすべて、ユーザー独自のクラスと衝突しないように、newrelic
パッケージネームスペースに存在します。このエージェントは、ソフトウェアプローブの挿入にASMのbciエンジンを使用します。
このエージェントは、オペレーティングシステム、Javaのバージョン、システムのプロパティ、New Relicの設定ファイルなど、使用中のホスト環境に関する基本的な情報を受信します。また、このエージェントはJVMとJMXからデータをポーリングします。
トラブルシューティング手順
問題がある場合は、そのセクションのデータが表示されない、およびその他のトラブルシューティング文書を参照してください。