• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

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

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

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

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

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

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

Node.jsエージェントバージョン2.0.0より、New Relicは追加のウェブフレームワークに対するインストゥルメンテーション拡張のために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トランザクションをインストゥルメントする

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

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

コメント

Promise

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

手動

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

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

同期

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

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

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

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

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

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

コメント

Promise

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

手動

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

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

同期

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

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

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

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

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

重要

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

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.