• ログイン今すぐ開始

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

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

カスタムインストゥルメンテーションエディタを使用するには:one.newrelic.com > APM >(Javaアプリケーションを選択)> Settings > Instrumentationに移動します。カスタムインストゥルメンテーションエディタの用途:

要件

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

要件

コメント

エージェント

Javaエージェントのバージョン3.17.0またはそれ以降

セキュリティ

高セキュリティモードのユーザーは、インストゥルメンテーションをエクスポートしてからアプリケーションサーバーに手動でインポートする必要があります。

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

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

どちらの環境でも、カスタムインストゥルメンテーションエディタを使用して、インストゥルメントするメソッドを定義して変更を適用します。

  1. スレッドプロファイラーセッションを新規作成します。十分なデータを確実に収集するには、セッションの長さを2分以上に設定します。

  2. one.newrelic.com > APM >(アプリケーションの選択)> Settings > Instrumentationの順に移動します。ページの下部にあるRecently collected thread profilesリストが表示されるまでスクロールし、最新のスレッドプロファイルを選択します。

  3. 個々のメソッドを展開して、インストゥルメントされていないメソッドを探します。

  4. 特定のノードのインストゥルメンテーションの規則を定義するには、InstrumentまたはIgnoreを選択し、必要に応じて規則をカスタマイズします

  5. 設定を保存するには、Confirm instrumentation changesを選択します。

  6. インストゥルメンテーションページから変更をデプロイします。

注意

可能な限り、過剰なインストゥルメンテーションを避けてください。一つひとつのメソッドがインストゥルメンテーションされる度に、エージェントはより多くのリソースを利用することになり、アプリケーションのオーバーヘッドが増大します。また、インストゥルメンテーションをデプロイすると、オーバーヘッドが短期的に増大します。これにより、数秒間アプリケーション要求の処理が遅れることがあります。

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

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

また、スレッドプロファイルを使用せずに、インストゥルメンテーションポイントを直接作成することも可能です。

  1. カスタムインストゥルメンテーションエディタで、Add manual instrumentationを選択し、インストゥルメントするか、無視するクラスとメソッドを手動で入力します。
  2. インストゥルメンテーションポイントを定義する場合は、XML規則によるカスタムインストゥルメンテーションの手順に従います。
  3. インストゥルメンテーションエディタから変更をデプロイします。

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

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

重要

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

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

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

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

ページ関数

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

以下を行う場合...

操作...

カスタムインストゥルメンテーションを一時停止または無効にする

  • Disable instrumentationを選択し、UIで定義されたすべてのカスタムインストゥルメンテーションを一時的に無効にします。

  • Enable instrumentationを選択し、インストゥルメンテーションの設定を再度有効にします。

既存のインストゥルメンテーションをインポートする

  • Import xmlを選択すると、既存のカスタムインストゥルメンテーションxmlファイルをインポートできます。
  • 変更を自動的にデプロイしない場合は、xmlをエクスポートすることもできます。

インストゥルメンテーションポイントを編集または削除する

手動のインストゥルメンテーションは、削除するだけで編集はできません。

  • 特定のメソッドのインストゥルメンテーションを停止するには、Removeを選択します。
  • インストゥルメンテーションの規則を変更するには、Editを選択します。

インストゥルメンテーションの履歴を表示する

  • Instrumentation Historyタブからは、誰がいつ変更をデプロイしたかを含め、カスタムインストゥルメンテーションの以前の各イテレーションを表示できます。
  • 古いバージョンは、エクスポートを選択してカスタムインストゥルメンテーションファイルのコピーをダウンロードし、その後にインストゥルメンテーションエディタにインポートすることによって復元できます。

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

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

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

コメント

メソッドをインストゥルメントする

選択したメソッドのインストゥルメントを開始します。インストゥルメントするメソッドは、New Relic UIに表示されます。インストゥルメントは、以下の子オプションをサポートします。

  • トランザクションに名前を付ける(トランザクション名)自動命名規則によって定義される標準のトランザクション名を上書きします。UIは代わりに記載されている名前を使用します。
  • このメソッドが実行されたらトランザクションを開始する:親トランザクション内のこのメトリックからメトリクスを含める代わりに、このメソッドに対する新しいトランザクションを作成します。このオプションによるエージェントの動作は、スレッドに既存のトランザクションがあるかどうかによって異なります。

カスタム属性をレポートする

メソッドのパラメーターは、トランザクションの属性として取得できます。New Relicは、これらの属性をトランザクショントレース、トレースされたエラー、およびTransactionイベントにレポートします。

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

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. メトリックは破棄されます。
Copyright © 2022 New Relic株式会社。