構文
public interface ITransaction
New Relic API のトランザクション固有のメソッドへのアクセスを提供します。
説明
New Relic .NET エージェント API のトランザクション固有のメソッドへのアクセスを提供します。 ITransaction
への参照を取得するには、 IAgent
で利用可能な現在のトランザクションメソッドを使用します。
このセクションでは、3つのITransactionメソッドの説明とパラメータを紹介します。
名前 | 説明 |
---|---|
他のサービスから送られてくるトレースコンテキストヘッダを受信します。 | |
発信するリクエストにトレースコンテキストヘッダを追加します。 | |
他のサービスからの分散型トレースペイロードを受信します。 | |
発信するリクエストに含める分散型トレースペイロードを作成します。 | |
アプリケーションのコンテキスト情報を属性の形で現在のトランザクションに追加します。 | |
現在実行中の span へのアクセスを提供し、New Relic API の span 固有のメソッドへのアクセスを提供します。 |
AcceptDistributedTraceHeaders
ITransaction.AcceptDistributedTraceHeaders
は、分散トレースに含めるために呼び出されたサービスを計測するために使用されます。 InsertDistributedTraceHeaders
または他の W3C Trace Context 準拠のトレーサーによって生成されたペイロードを受け入れることで、トレース内のスパンをリンクします。このメソッドは、受信したリクエストのヘッダーを受け取り、W3C Trace Context ヘッダーを探し、見つからない場合は New Relic の分散トレースヘッダーにフォールバックします。このメソッドは、廃止された AcceptDistributedTracePayload
メソッドに代わるもので、New Relic 分散トレースのペイロードのみを扱います。
構文
void AcceptDistributedHeaders(carrier, getter, transportType)
パラメータ
名前 | 説明 |
---|---|
<T> | 必要です。受信するTrace Contextヘッダーのソース。 |
Func<T, string, IEnumerable<string>> | 必要です。キャリアからヘッダーデータを抽出するための呼び出し側定義の関数。 |
トランスポートタイプ enum | 必要です。受信するペイロードのトランスポートを記述します(例: |
使用上の注意
- Distributed tracingが有効であること.
AcceptDistributedTraceHeaders
は、InsertDistributedTraceHeaders
またはAcceptDistributedTraceHeaders
がすでにこのトランザクションで呼び出されている場合は無視されます。
例
HttpContext httpContext = HttpContext.Current;IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction currentTransaction = agent.CurrentTransaction;currentTransaction.AcceptDistributedTraceHeaders(httpContext, Getter, TransportType.HTTP);IEnumerable<string> Getter(HttpContext carrier, string key) { string value = carrier.Request.Headers[key]; return value == null ? null : new string[] { value }; }
InsertDistributedTraceHeaders
ITransaction.InsertDistributedTraceHeaders
は、分散トレースを実装するために使用します。W3C Trace Context ヘッダと New Relic Distributed Trace ヘッダを追加することで、渡されたキャリアオブジェクトを変更します。New Relic ヘッダは、 < distributedTracing excludeNewrelicHeader="true" />
を設定することで無効にすることができます。このメソッドは、廃止された CreateDistributedTracePayload
メソッドを置き換えるもので、New Relic Distributed Trace のペイロードのみを作成します。
構文
void InsertDistributedTraceHeaders(carrier, setter)
パラメータ
名前 | 説明 |
---|---|
<T> | 必要です。Trace Context ヘッダが挿入されるコンテナです。 |
アクション<T, string, string> | 必要です。呼び出し側が定義した、キャリアにヘッダーデータを挿入するためのアクション。 |
使用上の注意
例
HttpWebRequest requestMessage = (HttpWebRequest)WebRequest.Create("https://remote-address");IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction currentTransaction = agent.CurrentTransaction;var setter = new Action<HttpWebRequest, string, string>((carrier, key, value) => { carrier.Headers?.Set(key, value); });currentTransaction.InsertDistributedTraceHeaders(requestMessage, setter);
AcceptDistributedTracePayload
注意
このAPIは、.NET agent v9.0以降では利用できません。代わりに AcceptDistributedTraceHeaders
をご利用ください。
上流のサービスから受信する分散トレースペイロードを受け入れる。このメソッドを呼び出すと、上流のサービスからのトランザクションがこのトランザクションにリンクされます。
構文
void AcceptDistributedPayload(payload, transportType)
パラメータ
名前 | 説明 |
---|---|
文字列 | 必要です。受信した分散型トレースのペイロードの文字列表現。 |
TransportType | 推奨。受信するペイロードのトランスポートを記述します(例: デフォルト |
使用上の注意
- Distributed tracingが有効であること.
- ペイロードは、Base64エンコードされた文字列またはプレーンテキストの文字列です。
AcceptDistributedTracePayload
は、CreateDistributedTracePayload
がこのトランザクションに対して既に呼び出されている場合は無視されます。
例
//Obtain the information from the request object from the upstream caller.//The method by which this information is obtain is specific to the transport //type being used. For example, in an HttpRequest, this information is//contained in the header.KeyValuePair<string, string> metadata = GetMetaDataFromRequest("requestPayload");IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent(); ITransaction transaction = agent.CurrentTransaction; transaction.AcceptDistributedTracePayload(metadata.Value, TransportType.Queue);
CreateDistributedTracePayload (廃止予定)
注意
このAPIは、.NET agent v9.0以降では利用できません。代わりに InsertDistributedTraceHeaders
をご利用ください。
下流のシステムへの送信リクエストに含めるための分散型トレースペイロードを作成します。
構文
IDistributedTracePayload CreateDistributedTracePayload()
リターンズ
IDistributedTracePayload
を実装したオブジェクトで、作成された分散型トレースペイロードへのアクセスを提供します。
使用上の注意
- Distributed tracingが有効であること.
CreateDistributedTracePayload
は、AcceptDistributedTracePayload
がこのトランザクションですでに呼び出されている場合は無視されます。
例
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction transaction = agent.CurrentTransaction;IDistributedTracePayload payload = transaction.CreateDistributedTracePayload();
カスタムアトリビュートの追加
属性 の形で、現在のトランザクションにアプリケーションのコンテキスト情報を追加します。
このメソッドを使用するには、.NET エージェントのバージョンと .NET エージェント API バージョン 8.24.244.0 以上が必要です。このメソッドは、非推奨の AddCustomParameter
を置き換えたものです。
構文
ITransaction AddCustomAttribute(string key, object value)
パラメータ
パラメーター | 説明 |
---|---|
文字列 | 報告される情報を特定するもの。名称としても知られている。
|
オブジェクト | 報告される値です。 |
リターンズ
現在のトランザクションへの参照です。
使用上の注意
サポートされているデータタイプの詳細については、『 Custom Attributes Guide』 を参照してください。
例
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction transaction = agent.CurrentTransaction;transaction.AddCustomAttribute("customerName","Bob Smith") .AddCustomAttribute("currentAge",31) .AddCustomAttribute("birthday", new DateTime(2000, 02, 14)) .AddCustomAttribute("waitTime", TimeSpan.FromMilliseconds(93842));
カレントスパン
現在実行中の スパン へのアクセスを提供し、 スパン固有のメソッド を New Relic API で利用できるようにします。
例
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent(); ITransaction transaction = agent.CurrentTransaction; ISpan currentSpan = transaction.CurrentSpan;