New Relic JavaエージェントAPIを使うことで、 Javaエージェントの機能のコントロール、カスタマイズ、そして拡張が可能です。このAPIは、以下の内容によって構成されています。
com.newrelic.api.agent.NewRelic
クラス上の静的メソッド- カスタムインストゥルメンテーションを実装するための@Trace アノテーション
- 追加の機能を提供するAPIオブジェクトの階層
Javaアプリケーションのカスタムインストゥルメンテーションをセットアップして、より精細なデータを収集するには、このAPIを使用します。このAPIの詳しい情報に関しては、GitHub上のJavadoc一覧を参照してください。
カスタムインストゥルメンテーションをセットアップできるもう1つの手段として、XMLインストゥルメンテーションを使用する方法もあります。XMLを使用した方が簡単な上、アプリケーションのコード修正が必要ありませんが、これにはJavaエージェントAPIのような完全な機能は備わっていません。
重要
APIを使用するにあたって最良の結果を出すには、Javaエージェントのリリースが最新版であることを確認してください。例で使用されているAPIには、Javaエージェント6.4.0以降が必要です。
入手可能なすべてのNew Relic APIを見るには、API入門を参照してください。
APIの使用
APIにアクセスするには、ビルドツールを使用してMaven Centralからダウンロードします。
以下は、${agent.version}
エージェントのバージョンに置き換えることができるGradleの例です。
implementation 'com.newrelic.agent.java:newrelic-api:${agent.version}'
エージェントが実行されていなくてもAPIを呼び出すことはできますが、エージェントがアプリケーションをロードするまでメソッドでは何も実行されません。
トランザクション
アプリケーションでTransactions
をインストゥルメントするには、以下のAPIを使用してください。
以下を行う場合... | これを使用 |
---|---|
New Relicがトランザクションを自動作成しない場合、 | 報告されるべき作業を含むメソッドで |
New Relicが自動的にトレースしないメソッドの経過時間を取得する | 時間を計測したいメソッドに |
現在の名前を設定する | |
現在の | |
カスタム属性を | |
| |
| |
アプリケーションの |
関連ログの参照
アプリケーションのエラーとトレースのコンテキスト内でログを直接表示するには、次のAPI呼び出しを使用してログに注釈を付けます。
ログデータと他のテレメトリーデータの相関に関する詳細は、コンテキストのログに関するドキュメントを参照してください。
非同期の作業をインストゥルメントする
詳しくは、非同期アプリケーション用のJavaエージェントAPIを参照してください。
以下を行う場合... | これを使用 |
---|---|
既存の | |
現在のスレッド上の | |
現在の | |
| |
|
ディストリビューティッド(分散)トレーシングAPIの使用
これらのAPIでは、ディストリビューティッド(分散)トレーシングを有効化する必要があります。ディストリビューティッド(分散)トレーシングのすべての設定オプションについては、Javaエージェントの設定をご覧ください。
ディストリビューティッド(分散)トレーシングでは、リクエストが分散システムを経由するパスを見ることができます。以下のコールを利用してディストリビューティッド(分散)トレーシングを実装する一般的な案内については、ディストリビューティッド(分散)トレーシングAPIの使用を参照してください。動作するAPIを確認するには、KafkaでのJavaエージェントのディストリビューティッド(分散)トレーシングAPIの使用をご覧ください。
重要
エージェントのバージョン6.4.0では、6.1.0で導入されたaddCustomAttribute()
を除いて、以下のディストリビューティッド(分散)トレーシングAPIが導入されました。非推奨のAPIの代わりに、これらのAPIを使用することを強く推奨します。
以下を行う場合... | これを使用 |
---|---|
受信または送信メッセージのタイプ固有のヘッダーについて説明します。 |
Kafkaを使用したDT API使用におけるW3Cトレースコンテキストヘッダーの実装例を参照してください。 |
ディストリビューティッド(分散)トレーシングのヘッダーを作成して、 | 現行のトランザクションおよびその他のAPIクラスへのリファレンスの取得の詳細については、リファレンスの取得をご覧ください。 |
呼び出し元サービスから送信されたディストリビューティッド(分散)トレーシングヘッダーを受け入れて、ディストリビューティッド(分散)トレースでこれらのサービスをリンクします。 | 現行のトランザクションおよびその他のAPIクラスへのリファレンスの取得の詳細については、リファレンスの取得をご覧ください。 |
ディストリビューティッド(分散)トレーシングのヘッダーを受け入れる際のトランスポートタイプを定義するための列挙体の定数を提供するユーティリティクラスを理解します。 | |
分散トレースのカスタム属性を |
|
注意
エージェントのバージョン6.4.0では、以下のディストリビューティッド(分散)トレーシングAPIが非推奨になり、上の表のAPIで置き換えられました。エージェントをアップグレードして、非推奨APIの代わりに新しいAPIを使用することを強く推奨します。
以下を行う場合... | これを使用 |
---|---|
呼び出したサービスに送るペイロードを作成する。 | 現行のトランザクションおよびその他のAPIクラスへのリファレンスの取得の詳細については、リファレンスの取得をご覧ください。 注意エージェント6.4.0の時点で非推奨になったAPI |
最初のサービスから送られたペイロードを受け取る。その結果、これらのサービスを1つのトレース内で結びつけることができる。 | 現行のトランザクションおよびその他のAPIクラスへのリファレンスの取得の詳細については、リファレンスの取得をご覧ください。 注意エージェント6.4.0の時点で非推奨になったAPI |
サービス接続に使用するペイロード。 |
注意エージェント6.4.0の時点で非推奨になったAPI |
サービス接続に使用するペイロード。 |
注意エージェント6.4.0の時点で非推奨になったAPI |
クロスアプリケーショントレーシング(CAT)の使用
重要
クロスアプリケーショントレースは、エージェントバージョン7.4.0では非推奨となっており、将来のエージェントバージョンでは削除されます。
クロスアプリケーショントレーシングを使用する代わりに、ディストリビューティッド(分散)トレーシング機能を使用することをお勧めします。ディストリビューティッド(分散)トレーシングはクロスアプリケーショントレーシングの機能を向上させたものであり、大規模な分散システムに適しています。
外部コールを追跡し、 クロスアプリケーショントレーシングを追加するには、以下のAPIを使用します。
以下を行う場合... | これを使用 |
---|---|
プロプライエタリRPCトランスポートなど、New Relicがデフォルトでサポートしていないカスタムトランスポートチャネルを通してトレースする |
|
のメトリック名やロールアップメトリック名を表示または変更する ( |
|
JavaエージェントAPIの |
|
New Relicによってインストゥルメントされている外部HTTPまたはJMSサービスと通信している際に、クロスアプリケーショントレーシングを有効化して追加する |
|
自動でサポートされないアプリケーションサーバーやディスパッチャーに対しタイミングを追加する。 |
|
New Relic APIクラスへのリファレンスを取得する
他のタスクでは、New RelicのAgent
オブジェクトが必要になります。Agent
オブジェクトは、以下の機能を提供する複数のオブジェクトを公開します:
以下を行う場合... | これを使用 |
---|---|
現在の へのリファレンスを入手する | |
非同期の作業をリンクするための | |
開始して、へのリファレンスを入手する | |
現在トレースされているメソッドへのリファレンスを入手する。 | |
| |
| |
カスタムメトリックスに対するアグリゲータへのリファレンスを入手する。 | |
カスタムイベントを記録するために、 |
追加のAPI機能
以下のAPIは、アプリケーションサーバーの情報設定、エラー報告、ページロードタイミングの情報追加、カスタムメトリックの記録、そしてカスタムイベントの送信など、追加の機能を提供します。
以下を行う場合... | これを使用 |
---|---|
アプリケーションサーバーやディスパッチャーに対してポート、名前、バージョン情報、もしくはJVMに対してインスタンス名を明示的に設定する。 | |
New Relicが自動的に報告しないエラーを報告する。 | トランザクション内では、 |
独自のカスタム定義フィンガープリントでエラーをグループ化し、 |
|
コールバック関数を使用して、独自のエラーフィンガープリントを設定します。指定されたエラーのグループキーの生成に使用する | |
New Relicが自動的にヘッダに追加しない に対する、ブラウザ ページロードタイミング | |
カスタムメトリックスを作成および蓄積する。 |
|
カスタムイベントを記録 |
または、
|
その他のAPI使用例
APIの使用における詳しいコード例に関しては、以下のカスタムインストゥルメンテーションに関するNew Relicのドキュメントを参照してください。