New Relicのカスタムインストゥルメンテーションエディタを使用すると、JavaアプリケーションユーザーはNew Relicのユーザーインタフェースを使用してカスタムインストゥルメンテーションを実装できます。このエディタは、アプリケーションコードを変更できない場合で、インストゥルメントするメソッドがそれほど多くない場合に使用することをお勧めします。他のインストゥルメンテーションの方法およびそれらを使用する理由については、Javaカスタムインストゥルメンテーションをご覧ください。
カスタムインストゥルメンテーションエディターを使用するには、 one.newrelic.com > All capabilities > APM & services > (select a Java app) > Settings > Instrumentationに移動します。カスタムインストゥルメンテーションエディタの用途:
- 未対応のフレームワークをインストゥルメントする。
- インストゥルメントされていないメソッドをさらに詳しく把握する。
- 特定のトランザクションを無視する。
要件
カスタムインストゥルメンテーションエディタを使用するには、以下の要件を満たす必要があります。
| Requirement | Comments | 
|---|---|
| エージェント | Javaエージェントのバージョン3.17.0またはそれ以降 | 
| セキュリティ | 高セキュリティモードのユーザーは、インストゥルメンテーションをエクスポートしてからアプリケーションサーバーに手動でインポートする必要があります。 | 
カスタムインストゥルメンテーションの定義
New Relicのユーザーインタフェースからカスタムインストゥルメンテーションを定義するには、スレッドプロファイリングセッションを使用して、アプリケーションの各スレッドのスタックトレースの詳細を収集します。可能な場合は、本稼動アプリケーションのインストゥルメンテーションの規則を変更する前に、本稼動前環境でカスタムインストゥルメンテーションをテストします。
どちらの環境でも、カスタムインストゥルメンテーションエディタを使用して、インストゥルメントするメソッドを定義して変更を適用します。
- スレッドプロファイラーセッションを新規作成します。十分なデータを確実に収集するには、セッションの長さを2分以上に設定します。 
- one.newrelic.com > All capabilities > APM & services > (select an app) > Settings > Instrumentationに移動します。ページの下部にあるRecently collected thread profilesリストが表示されるまでスクロールし、最新のスレッドプロファイルを選択します。 
- 個々のメソッドを展開して、インストゥルメントされていないメソッドを探します。 
- 特定のノードのインストゥルメンテーションの規則を定義するには、InstrumentまたはIgnoreを選択し、必要に応じて規則をカスタマイズします。 
- 設定を保存するには、Confirm instrumentation changesを選択します。 
- Instrumentationページから変更をデプロイします。 - 変更を自動的にデプロイするには、 - Deploy instrumentation changes - を選択します。 
- 変更を手動でデプロイするには、 - Export XML - を選択し、インストゥルメントのエクスポートを確認します。 
 
注意
可能な限り、過剰なインストゥルメンテーションを避けてください。一つひとつのメソッドがインストゥルメンテーションされる度に、エージェントはより多くのリソースを利用することになり、アプリケーションのオーバーヘッドが増大します。また、インストゥルメンテーションをデプロイすると、オーバーヘッドが短期的に増大します。これにより、数秒間アプリケーション要求の処理が遅れることがあります。
変更をUIから適用すると、エージェントは数回の収集サイクルで(通常は数分以内)、メソッドのインストゥルメンテーションが始まります。
エディタによる手動のインストゥルメンテーション
また、スレッドプロファイルを使用せずに、インストゥルメンテーションポイントを直接作成することも可能です。
- カスタムインストゥルメンテーションエディタで、 - Add manual instrumentation - を選択し、インストゥルメントまたは無視するクラスとメソッドを手動で入力します。 
- インストゥルメンテーションポイントを定義する場合は、XML規則によるカスタムインストゥルメンテーションの手順に従います。 
- インストゥルメンテーションエディタから変更をデプロイします。 
この方法を使用してインストゥルメンテーションを追加すると、スレッドプロファイルから使用できる機能以外の機能を使用できます。署名によるメソッドの照合に加えて、戻り値のタイプやJavaアノテーションごとにインストゥルメントし、インタフェース上のメソッドもインストゥルメントできます。
このような複雑なタイプのインストゥルメンテーションは、エディタで作成および削除できますが、編集はできません。
重要
メソッドにInstrumentation not allowedのマークが付いている場合は、New Relicのカスタムインストゥルメンテーションのトラブルシューティング手順に従います。
変更を手動でデプロイする
カスタムインストゥルメンテーションエディタは、カスタムインストゥルメンテーションセットを構築し、インストゥルメンテーションファイルをエクスポートしてからアプリケーションサーバーに手動でインポートするために使用することもできます。この方法は、高セキュリティモードのユーザーに必要です。
インストゥルメンテーションをエクスポートするには、UIを使用してカスタムインストゥルメンテーションを定義します。次に、InstrumentationページからExport xmlを選択し、アプリケーションサーバーにファイルをインポートします。
ページ関数
Instrumentationページでは、以下の機能がサポートされます。
| 以下を行う場合... | 操作... | 
|---|---|
| カスタムインストゥルメンテーションを一時停止または無効にする | 
 | 
| 既存のインストゥルメンテーションをインポートする | 
 | 
| インストゥルメンテーションポイントを編集または削除する | 手動のインストゥルメンテーションは、削除するだけで編集はできません。 
 | 
| インストゥルメンテーションの履歴を表示する | 
 | 
インストゥルメンテーションのオプション
カスタムインストゥルメンテーションエディタを使用すると、以下のオプションを定義できます。
| Instrumentation options | Comments | 
|---|---|
| メソッドをインストゥルメントする | 選択したメソッドのインストゥルメントを開始します。インストゥルメントするメソッドはNew Relic UIに表示されます。 Instrumentでは以下の子オプションがサポートされます。 | 
| カスタム属性をレポートする | メソッドのパラメーターは、トランザクションの属性として取得できます。New Relicは、これらの属性をトランザクショントレース、トレースされたエラー、および セキュリティ上の理由により、カスタムインストゥルメンテーションエディタを使用してカスタム属性を取得することは、デフォルトでdisabledになっており、高セキュリティモードを使用している間は有効にできません。カスタムインストゥルメンテーションエディタを使用してカスタム属性をレポートし、Javaエージェントを高セキュリティモードにすることを望まない場合は、高セキュリティモードを無効にし、以下のテキストをnewrelic.ymlの  | 
| トランザクションを無視 | このメソッドを完全に無視します。エージェントはこのメソッドからメトリックスをレポートしなくなり、メソッドはApdex計算から除外されます。 | 
「開始」オプションの結果
Instrument methods > Start the transaction when this method executesを選択した場合、エージェントの動作はスレッド上に既存のトランザクションがあるかどうかによって異なります。
クラスまたはメソッドをインストゥルメントする場合:
| Start the transaction"フラグがオンになっていますか? | |
|---|---|
| Yes | No | 
| スレッドに既存のトランザクションがありis 、Start the transactionフラグがオンisになっている場合: 
 | スレッドに既存のトランザクションがありis、Start the transactionフラグがオフになっている場合、エージェントは、既存のトランザクションにクラス/メソッドを含めます。 | 
| スレッドにトランザクションがなく、Start the transactionフラグがオンisになっている場合: 
 | スレッドにトランザクションがなく、Start the transactionフラグがオフになっている場合: 
 |