New Relicの.NETエージェントには、カスタムインストゥルメンテーション向けに複数のオプションがあります。カスタムインストゥルメンテーションを使用すると、自動でインストゥルメントされないアプリケーションの部分をインストゥルメントできます。このドキュメントでは、アプリケーションコードのメソッドを属性で装飾してアプリケーションをインストゥルメントする方法について説明します。
Transaction
属性を使用して、カスタムトランザクションを作成します。また、属性のWeb
プロパティを使用して、カスタムトランザクションをウェブトランザクションとしてマークすることもできます。Trace
属性を使用して、既存のトランザクション内で呼び出されるメソッドにカスタムインストゥルメンテーションを追加します。
要件および推奨
要件は次のとおりです。
- .NETエージェントのバージョン6.16.178.0またはそれ以降。
- ソースコードの修正が必要であることを了解しておいてください。ソースコードを変更できないか、またはそれを望まない場合は、XMLによるカスタムインストゥルメンテーションを使用します。
- プロジェクトには、
NewRelic.Api.Agent.dll
への参照が必要です(たとえば、パッケージをインストールし、コードにusing NewRelic.Api.Agent;
を使用して配置します)。このパッケージは、NuGetギャラリーにあります。 Transaction
属性とTrace
属性は、メソッドの具体的な実装に適用する必要があります。インタフェースまたはスーパークラスのメソッド定義には適用できません。
トランザクション内で呼び出されたトランザクション
[Transaction]
属性で装飾されたメソッドは、トランザクションがまだ存在しない場合にのみ新しいトランザクションを作成します。 [Transaction]
で装飾されたメソッドが、以前に開始されたトランザクションwithinから呼び出されると、代わりに[Trace]
属性として扱われ、既存のトランザクションに関する詳細情報が提供されます。
非ウェブトランザクションを新規作成する
Transaction
属性を使用して、非ウェブトランザクション(バックグラウンド要求とも呼ばれます)を開始するには:
[Transaction]public void Run(){ // your background task}
ウェブまたは非ウェブのどちらを使用するか、およびその理由については、ウェブまたは非ウェブとして分類するをご覧ください。
ウェブトランザクションを新規作成する
非ウェブタスクをウェブブラウザのトランザクションとしてマークするようにエージェントに指示するには、以下のいずれかのオプションを使用します。
Transaction
属性のWeb
プロパティをtrue
に設定します。- トランザクションのURIを
SetTransactionUri()
に設定します。
[Transaction(Web = true)]public void Run(){ var uri = new Uri("https://www.mydomain.com/path"); NewRelic.Api.Agent.NewRelic.SetTransactionUri(uri);
// your web task}
以前開始されたトランザクション内で使用すると、これは[Trace]
属性として処理されます。
ウェブまたは非ウェブのどちらを使用するか、およびその理由については、ウェブまたは非ウェブとして分類するをご覧ください。
で既存のトランザクションに詳細を追加する Trace
トランザクショントレースにインストゥルメントされていない時間のブロックが大量にあり、トレース内にメソッドを追加したい場合は、Trace
属性を使用できます。
[Trace]protected void MethodWithinTransaction(){ // your app code}
重要
[Trace]
属性を追加した後に一部のメソッドがトレースに表示されない場合は、[MethodImpl(MethodImplOptions.NoInlining)]
を使用してそれらのメソッドのインライン化を無効にします。
重要
Visual Studio からdebugモードでアプリケーションを実行すると、一部のメソッドが New Relic トレースに表示されない場合があります。 メソッドがNew Relicに表示されるようにするには、コマンドラインからアプリケーションをリリース モードで実行します。
のプロパティ Transaction
Transaction
属性は、以下のプロパティをサポートします。
例:4つの方法をインストゥルメント
インストゥルメンテーションに関するフォーラムの投稿を読む
より具体的な推奨事項については、以下のサポートフォーラムコミュニティでこれらの投稿を参照してください。
他のAPI機能を使用する
.NETエージェントAPIおよびその関数の詳細については、New Relicの.NETエージェントAPIガイドをご覧ください。ソースコードを変更しないカスタムインストゥルメンテーションについては、XMLによるトランザクションの作成とXMLによるトランザクションへの詳細の追加をご覧ください。