ビジネストランザクション管理の基本

appd.startTransaction(transactionInfo)

  • transactionInfo 文字列、HttpRequest または CorrelationHeader

transactionInfo パラメータには、次のいずれかを指定できます。

  • カスタムトランザクションの名前を指定する文字列。文字 {}[]|&、および ; はトランザクション名に使用できません。
  • HttpRequest オブジェクト。通常のトランザクション一致および命名規則が適用され、含まれるRUMやトランザクション相関情報が自動的に選択されます。
  • アップストリームにあるトランザクションと相関する情報を提供する CorrelationHeader オブジェクト。「parseCorrelationInfo()」を参照してください。

カスタム ビジネス トランザクションの作成と開始を行い、TimePromise インスタンスとしてトランザクションハンドルを返します。このトランザクションハンドルは、トランザクションの以降の操作に使用されます。

TimePromise.prototype.resume()

長期実行トランザクションまたは非同期トランザクションを再結合します。

次の場合に resume() を呼び出します。

  • 長期実行トランザクションをデフォルトのトランザクションタイムアウトである5分間を超えて有効にする必要がある場合。これにより、エージェントがトランザクションを失敗したとみなしてトランザクションを削除することを防げます。
  • インストゥルメント中のコードが非同期境界を横切る場合。これにより、現在実行するコンテキストが正しいトランザクションに再度関連付けされ、実行したすべての exit コールが正しいトランザクションに確実に割り当てられるようにします。

TimePromise.prototype.end(error)

  • error: any; optional

トランザクションを終了し、トランザクション情報をコントローラに報告します。

error が渡されると、エラーがトランザクションに関連付けられ、トランザクションにはエラートランザクションとしてフラグが立てられます。

appd.getTransaction(request)

  • request: HTTP 要求オブジェクト

指定の要求が存在する場合、それに関連付けられたビジネストランザクションにハンドルを返します。関連するビジネストランザクションが存在しない場合、FALSEを返します。

appd.getTransaction() を使用して、カスタムおよび自動検出されたビジネストランザクションにアクセスします。

appd.addAnalyticsData (key, value)

  • key: 追加されるカスタムデータのキー
  • value: このキーに追加される値

現在のトランザクション用に生成された分析にカスタムデータを添付します。アプリケーションにはトランザクションハンドルは必要ありません。

この機能を有効にするには、require ステートメントの分析設定を設定する必要があります。Node.js設定参考資料Node.js設定参考資料分析の詳細については、「分析データソース」を参照してください。

appd.addSnapshotData (key, value)

  • key: 追加されるカスタムデータのキー
  • value: このキーに追加される値

現在のトランザクション用に生成されたスナップショットにカスタムデータを添付します。

addSnapshotData() はいつでもトランザクションで呼び出すことができますが、追加されたデータはトランザクション スナップショットが生成されたときのみに使用されます。トランザクション スナップショットが生成されるタイミングについては、「トランザクション スナップショット」を参照してください。

次の例では、スナップショットの USER DATA にセッション数を追加します。

txn.addSnapshotData(“active sessions”, my.api.getSessionCount());

トランザクション完了後にスナップショットに追加するデータが利用可能な場合は、txn.onSnapshotCaptured(txn)コールバックを使用して添付できます。この手法により、スナップショットが生成されていないときにデータを収集するためのオーバーヘッドを回避できます。カスタムデータは、コントローラ UI のトランザクション スナップショット詳細の [USER DATA] タブに表示されます。

appd.markError(error, [statusCode])

  • error: JavaScript エラーオブジェクト
  • statusCode:オプションのトランザクション ステータス コード

この値は、error オブジェクトの statusCode プロパティとして渡すこともできます。

statusCode パラメータも error パラメータの error.statusCode プロパティも指定されていない場合、ステータスコードはデフォルトで 500 になります。

ビジネストランザクションにエラーオブジェクトを付加する別の方法については、「TimePromise.prototype.end(error)」も参照してください。

トランザクションをエラートランザクションとしてマークします。マークされたトランザクションは、トランザクションが遅い場合や停滞している場合でも、遅い、非常に遅い、または停滞しているトランザクションではなく、エラートランザクションとして報告されます。

txn.markError(error, [statusCode])

  • error JavaScript エラーオブジェクト
  • statusCodeオプションのトランザクション ステータス コードこの値は、error オブジェクトの statusCode プロパティとして渡すこともできます。

statusCode パラメータも error パラメータの error.statusCode プロパティも指定されていない場合、ステータスコードはデフォルトで 500 になります。

ビジネストランザクションにエラーオブジェクトを付加する別の方法については、「TimePromise.prototype.end(error)」も参照してください。

トランザクションをエラートランザクションとしてマークします。マークされたトランザクションは、トランザクションが遅い場合や停滞している場合でも、遅い、非常に遅い、または停滞しているトランザクションではなく、エラートランザクションとして報告されます。

txn.addSnapshotData(key, value)

  • key: 追加されるカスタムデータのキー
  • value: このキーに追加される値

このトランザクション用に生成されたスナップショットにカスタムデータを添付します。

addSnapshotData() はいつでもトランザクションで呼び出すことができますが、追加されたデータはトランザクション スナップショットが生成されたときのみに使用されます。トランザクション スナップショットが生成されるタイミングについては、「トランザクション スナップショット」を参照してください。

以下の例では、スナップショットの USER DATA にセッション数を追加します。

txn.addSnapshotData(“active sessions”, my.api.getSessionCount());

トランザクション完了後にスナップショットに追加するデータが利用可能な場合は、txn.onSnapshotCaptured(txn)コールバックを使用して添付できます。この手法により、スナップショットが生成されていないときにデータを収集するためのオーバーヘッドを回避できます。カスタムデータは、コントローラ UI のトランザクション スナップショット詳細の [USER DATA] タブに表示されます。

txn.onSnapshotCaptured(txn)

  • txn:トランザクション

トランザクションスナップショットにカスタムデータを添付するのにトランザクションで設定できるコールバックメソッド。txn.addSnapshotData(key, value)appd.addSnapshotData (key, value)

callback 関数を使用できる場合、エージェントはトランザクション スナップショットを取得した直後にこの API を呼び出します。

指定すると、トランザクションがスナップショットをトリガーする場合、callback はトランザクション完了時に呼び出されます。

呼び出し関数を定義し、それをコールバックに割り当てる必要があります。

mytxn.onSnapshotCaptured = customTitle (txn) {
// get book title for current transaction instance
title = getBookTitle();
txn.addSnapshotData ("book title", title);
}

txn === mytxn であることに注意してください。これはコールバックに渡されるため、mytxn と同じ範囲でコールバックを定義する必要はありません。

txn.addAnalyticsData(key, value)

  • key: 追加される分析データのキー
  • value: このキーに追加される値

このトランザクション用に生成された分析にカスタムデータを添付します。アプリケーションにトランザクションハンドルがある場合は、txn.addAnalyticsData(key, value) を呼び出すことができます。有効でない場合は、appd.addAnalyticsData(key, value) を使用します。

この機能を有効にするには、require ステートメントの分析設定を設定する必要があります。Node.js設定参考資料Node.js設定参考資料分析の詳細については、「分析データソース」を参照してください。

txn.onResponseComplete(req, res)

  • req:トランザクションの HTTP 要求
  • res:トランザクションの HTTP 応答

関連付けられた HTTP 応答が完了したときに通知されるトランザクションに設定できるコールバックメソッド。txn.addAnalyticsData(key, value) で使用して、トランザクションが完了する前に、txn.onResponseComplete(req, res) が完了したら応答のデータを追加できます。コールバック関数が使用できる場合、エージェントはトランザクションを終了する前に、HTTP 応答が完了した直後にこの API を呼び出します。呼び出し関数を定義し、それをコールバックに割り当てる必要があります。

mytxn.onResponseComplete = function customTitle (req, res) {
// get status code of HTTP response
code = res.statusCode;
txn.addAnalyticsData ("http response code", code);
};