• /
  • ログイン
  • 無料アカウント

Node.jsカスタムインストゥルメンテーション

Node.js用New Relicは、大半の標準的なWebリクエストを自動的にインストゥルメントしますが、時には拡張インストゥルメンテーションを必要とする場合もあります。エージェントのカスタムインストゥルメンテーションAPIがあれば、通常は未対応のWebフレームワークデータベース、そしてメッセージサービスクライアント向けにインストゥルメンテーションを作成できます。

Node.jsエージェントのカスタムインストゥルメンテーションAPIでは、以下を行うことができます:

エージェントのバージョン要件

このドキュメント内のカスタムインストゥルメンテーション方法は、Node.jsエージェントのバージョン2.0.0から利用できます。カスタムインストゥルメンテーションAPI v1.xを使用したインストゥルメンテーションの詳細に関しては、レガシーNode.jsカスタムインストゥルメンテーションのドキュメントを参照してください。

未対応のWebフレームワークをインストゥルメントする

Node.jsエージェントのバージョン2.0.0より、New Relicは追加のWebフレームワークに対するインストゥルメンテーション拡張のためにAPIを提供しています。チュートリアルを含めた詳細に関しては、GitHubにおけるNode.jsのWebフレームワークのインストゥルメンテーションドキュメントを参照してください。

未対応のメッセージサービスクライアントをインストゥルメントする

Node.jsエージェントのバージョン2.0.0より、New Relicは追加のメッセージサービスライブラリに対するインストゥルメンテーション拡張のためにAPIを提供しています。チュートリアルを含めた詳細に関しては、GitHubにおけるNode.jsのメッセージサービスクライアントのインストゥルメンテーションドキュメントを参照してください。

未対応のデータストアをインストゥルメントする

Node.jsエージェントのバージョン2.0.0より、New Relicは追加のデータストアライブラリに対するインストゥルメンテーションを拡張するためにAPIを提供しています。チュートリアルを含めた詳細に関しては、GitHubにおけるNode.jsのデータストアのインストゥルメンテーションドキュメントを参照してください。

Webトランザクションをインストゥルメントする

カスタムWebトランザクションを作成するには、startWebTransactionを呼び出してトランザクションを開始します。トランザクションを終了するには、以下のいずれかのオプションを利用してください:

トランザクションを終了する

コメント

Promise

startWebTransactionに渡したハンドラーが約束を返した場合、エージェントは返された約束が解決または却下された場合にトランザクションを終了します。

手動

新規トランザクションのコンテキストでgetTransactionを呼び出した場合、トランザクションが手動で処理されることがエージェントに通知されます。

ハンドラーでgetTransactionが呼び出された場合、transaction.end()を呼び出してトランザクションを必ず終了させる必要があります。

同期

いずれのオプションも実行されなかった場合、ハンドラーが同期して返された時点でトランザクションは終了します。

バックグラウンドトランザクションをインストゥルメントする

カスタムトランザクションを使用して、Web以外のトランザクション(バックグラウンドトランザクション)をインストゥルメントできます。たとえば:

  • ご利用のアプリケーションにおける周期的な仕事
  • リクエスト完了後も続く作業

バックグラウンドタスクをインストゥルメントするには、ご利用のハンドラーでstartBackgroundTransactionを呼び出してバックグラウンドトランザクションを開始してください。トランザクションを終了するには、以下のいずれかのオプションを利用してください:

トランザクションを終了する

コメント

Promise

startBackgroundTransactionに渡したハンドラーが約束を返した場合、エージェントは返されたPromiseが解決または却下された場合にトランザクションを終了します。

手動

新規トランザクションのコンテキストでgetTransactionを呼び出した場合、トランザクションが手動で処理されることがエージェントに通知されます。

ハンドラーでgetTransactionが呼び出された場合、transaction.end()を呼び出してトランザクションを必ず終了させる必要があります。

同期

いずれのオプションも実行されなかった場合、ハンドラーが同期して返された時点でトランザクションは終了します。

トランザクション内でインストゥルメンテーションを拡張する

APIにあるインストゥルメンテーション登録手段を使用して、インストゥルメンテーションを作成できます。 インストゥルメンテーションAPIを使用してインストゥルメンテーションを書いた場合、関連オブジェクト上で「モンキーパッチ」メソッド(置換関数)を用いてメトリクスと命名をより詳細に指定できるようになります。その他のオプションでは、既にインストゥルメントされたWebトランザクションへの可視性を提供するか、自動的にインストゥルメントされないデータベースやその他のトランザクション内作業への洞察を得ることができます。

これを行うには、コールバックをカスタムトレーサーでラップします。カスタムトレーサーは、特定の関数やデータベース呼び出しなど、既存トランザクション内の追加セグメントに関する具体的なメトリクスの作成・収集を行います。

  • 個別のコールバックをインストゥルメントするには、コールバック内でstartSegment()を呼び出し、主なコールバックロジックをhandler関数に移動します。
  • 非同期関数内で呼び出された関数をインストゥルメントするには、ターゲット関数とその親非同期関数をstartSegment()でラップします。

重要

こうした例は、トランザクション内で実行中のコード内に配置する必要があります。トランザクションの作成元がカスタムもしくは自動であるかは、関係がありません。

その他のヘルプ

さらに支援が必要な場合は、これらのサポートと学習リソースを確認してください:

問題を作成するこのページを編集する
Copyright © 2020 New Relic Inc.