カスタムインストゥルメンテーションエディタUIからインストゥルメントする

New Relicのカスタムインストゥルメンテーションエディタを使用すると、JavaアプリケーションユーザーはNew Relicのユーザーインタフェースを使用してカスタムインストゥルメンテーションを実装できます。このエディタは、アプリケーションコードを変更できない場合で、インストゥルメントするメソッドがそれほど多くない場合に使用することをお勧めします。他のインストゥルメンテーションの方法およびそれらを使用する理由については、Javaカスタムインストゥルメンテーションをご覧ください。

カスタムインストゥルメンテーションエディタの場所:https://rpm.newrelic.com/apm(Javaアプリケーションの選択) > Settings > Instrumentationの順に移動します。カスタムインストゥルメンテーションエディタの用途:

この機能を利用できるかは、 サブスクリプションレベルによります。

要件

カスタムインストゥルメンテーションエディタを使用するには、以下の要件を満たす必要があります。

要件 コメント
エージェント Javaエージェントのバージョン3.17.0またはそれ以降
アカウントのロール 所有者(オーナー)または管理者
セキュリティ 高セキュリティモードのユーザーは、インストゥルメンテーションをエクスポートしてからアプリケーションサーバーに手動でインポートする必要があります。

カスタムインストゥルメンテーションの定義

所有者(オーナー)または管理者

New Relicのユーザーインタフェースからカスタムインストゥルメンテーションを定義するには、スレッドプロファイリングセッションを使用して、アプリケーションの各スレッドのスタックトレースの詳細を収集します。可能な場合は、本稼動アプリケーションのインストゥルメンテーションの規則を変更する前に、本稼動前環境でカスタムインストゥルメンテーションをテストします。どちらの環境でも、カスタムインストゥルメンテーションエディタを使用して、インストゥルメントするメソッドを定義して変更を適用します。

  1. スレッドプロファイラーセッションを新規作成します。十分なデータを確実に収集するには、セッションの長さを2分以上に設定します。
  2. rpm.newrelic.com/apm > (アプリケーションの選択) > Settings > Instrumentationの順に移動します。ページの下部にあるRecently collected thread profilesリストが表示されるまでスクロールし、最新のスレッドプロファイルを選択します。
  3. 個々のメソッドを展開して、インストゥルメントされていない[circle-o]を探します。
  4. 特定のノードのインストゥルメンテーションの規則を定義するには、InstrumentまたはIgnoreを選択し、必要に応じて規則をカスタマイズします過剰なインストゥルメンテーションは避けてください。
  5. 設定を保存するには、Confirm instrumentation changesを選択します。
  6. インストゥルメンテーションページから変更をデプロイします

インストゥルメンテーションをデプロイすると、短期間オーバーヘッドが高くなることがあります。これにより、数秒間アプリケーション要求の処理が遅れることがあります。

変更をUIから適用すると、エージェントは数回の収集サイクルで(通常は数分以内)、メソッドのインストゥルメンテーションが始まります。

エディタによる手動のインストゥルメンテーション

エディタを使用すると、スレッドプロファイルを使用せずに、インストゥルメンテーションポイントを直接作成できます。カスタムインストゥルメンテーションエディタで、Add manual instrumentationを選択し、インストゥルメントするか、無視するクラスとメソッドを手動で入力します。インストゥルメンテーションポイントを定義する場合は、XML規則によるカスタムインストゥルメンテーションの手順に従います。その後にインストゥルメンテーションエディタから変更をデプロイします。

この方法を使用してインストゥルメンテーションを追加すると、スレッドプロファイルから使用できる機能以外の機能を使用できます。署名によるメソッドの照合に加えて、戻り値のタイプやJavaアノテーションごとにインストゥルメントし、インタフェース上のメソッドもインストゥルメントできます。

このような複雑なタイプのインストゥルメンテーションは、エディタで作成および削除できますが、編集はできません。

メソッドにInstrumentation not allowed(インストゥルメンテーションは許可されていません)のマークが付いている場合は、New Relicのカスタムインストゥルメンテーションのトラブルシューティング手順に従います。

変更を手動でデプロイする

カスタムインストゥルメンテーションエディタは、カスタムインストゥルメンテーションセットを構築し、インストゥルメンテーションファイルをエクスポートしてからアプリケーションサーバーに手動でインポートするために使用することもできます。この方法は、高セキュリティモードのユーザーに必要です。

インストゥルメンテーションをエクスポートするには、UIを使用してカスタムインストゥルメンテーションを定義します。次に、インストゥルメンテーションページからExport xmlを選択し、アプリケーションサーバーにのファイルをインポートします

ページ関数

インストゥルメンテーションページでは、以下の機能がサポートされます。

以下を行う場合... 操作...
カスタムインストゥルメンテーションを一時停止または無効にする [ban-circle] Disable instrumentationを選択し、UIで定義されたすべてのカスタムインストゥルメンテーションを一時的に無効にします。Enable instrumentationを選択し、インストゥルメンテーションの設定を再度有効にします。
既存のインストゥルメンテーションをインポートする Import xmlを選択すると、既存のカスタムインストゥルメンテーションxmlファイルをインポートできます。変更を自動的にデプロイしない場合は、xmlをエクスポートすることもできます。
インストゥルメンテーションポイントを編集または削除する 特定のメソッドのインストゥルメンテーションを停止するには、Removeを選択します。インストゥルメンテーションの規則を変更するには、Editを選択します。手動のインストゥルメンテーションは、削除するだけで編集はできません。
インストゥルメンテーションの履歴を表示する インストゥルメンテーションの履歴タブからは、カスタムインストゥルメンテーションの以前の各バージョンを表示できます。変更をいつだれが実行したかを確認してください。古いバージョンは、エクスポートを選択してカスタムインストゥルメンテーションファイルのコピーをダウンロードし、その後にインストゥルメンテーションエディタにインポートすることによって復元できます。

インストゥルメンテーションのオプション

所有者(オーナー)または管理者

カスタムインストゥルメンテーションエディタを使用すると、以下のオプションを定義できます。

インストゥルメンテーションのオプション コメント
メソッドをインストゥルメントする 選択したメソッドのインストゥルメントを開始します。インストゥルメントするメソッドは、New Relic UIに表示されます。インストゥルメントは、以下の子オプションをサポートします。
  • トランザクションの命名(トランザクション名)自動命名規則によって定義される標準のトランザクション名を上書きします。UIは代わりに記載されている名前を使用します。
  • このメソッドを実行する際にトランザクションを開始する:親トランザクション内のこのメトリックからメトリックスを含める代わりに、このメソッドに対する新しいトランザクションを作成します。このオプションによるエージェントの動作は、スレッドに既存のトランザクションがあるかどうかによって異なります。
カスタム属性をレポートする メソッドのパラメーターは、トランザクションの属性として取得できます。New Relicは、これらの属性をトランザクショントレース、トレースされたエラー、およびInsightsのトランザクションイベントにレポートします。

セキュリティ上の理由により、カスタムインストゥルメンテーションエディタを使用してカスタム属性を取得することは、デフォルトで無効になっており、高セキュリティモードを使用している間は有効化できません。カスタムインストゥルメンテーションエディタを使用してカスタム属性をレポートし、Javaエージェントを高セキュリティモードにすることを望まない場合は、高セキュリティモードを無効にし、以下をcommon:ブロック(newrelic.yml)に追加します。

reinstrument:
    attributes_enabled: true
トランザクションを無視 このメソッドを完全に無視します。エージェントはこのメソッドからメトリックスをレポートしなくなり、メソッドはApdex計算から除外されます。

「開始」オプションの結果

Instrument methods > Start the transaction when this method executesを選択した場合、エージェントの動作は、スレッドに既存のトランザクションがあるかどうかによって異なります。

クラスまたはメソッドをインストゥルメントする場合:

Start the transactionフラグがオンになっていますか?
はい いいえ

スレッドに既存のトランザクションがありStart the transactionフラグがオンになっている場合:

  1. エージェントは、Start the transactionフラグを無視します。
  2. エージェントは、既存のトランザクションにクラス/メソッドを含めます。

スレッドに既存のトランザクションがありStart the transactionフラグがオフになっている場合、エージェントは、既存のトランザクションにクラス/メソッドを含めます。

スレッドにトランザクションがなくStart the transactionフラグがオンになっている場合:

  1. エージェントは、現在のトランザクションがないことを確認します。
  2. エージェントは、インストゥルメントしたクラス/メソッドから始まる新しいトランザクションを作成します。

スレッドにトランザクションがなくStart the transactionフラグがオフになっている場合:

  1. エージェントは、そのスレッドでトランザクションを探しますが、見つかりません。
  2. メトリックは破棄されます。

その他のヘルプ

推奨する詳細情報: