当社の Node.js エージェント API では、エージェントの標準機能を拡張することができます。このAPIを使って以下のことができます。
- カスタム・トランザクション・パラメーターの作成
- カスタムエラーやメトリクスのレポート
また、APIを使用して、 カスタムインスツルメンテーション を行うこともできます。 サポートされているフレームワーク では、エージェントはほとんどのアクティビティを自動的に計測します。カスタム・インスツルメンテーションでは、デフォルトのインスツルメンテーションがないフレームワークにまで監視を拡張することができます。
その他のリソース
- GitHub の Node.js エージェントAPIドキュメント。
- カスタムインストゥルメンテーションを使用したアプリケーションの例。
- また、Node.jsエージェントのデフォルトの動作は、 の設定で調整することができます。.
要件
Node.jsエージェントAPIを使用するには、Node.jsエージェントの最新リリース を用意してください。さらに、ご覧ください。
- Node.jsエージェントAPIの要件
- GitHub での開始手順
コードの欠落しているセクションをトランザクションで計測する
アプリをインストゥルメントするために、New Relicはコードで各パスをそのトランザクションに分離します。New Relicは、これらのトランザクションの親メソッドの時間をインストゥルメントして総合的なパフォーマンスを測定し、追加詳細として長期間実行されているトランザクションからトランザクショントレースを収集します。
New Relicがコードの特定の部分をまったくインストルメントしていない場合は、次のメソッドを使用します。
あなたがしたい場合は... | これを行う... |
---|---|
メソッドのタイミングを開始するNewRelicが自動的にインストルメント化しない | 新しいトランザクションを作成します。 |
作業が完了したら、メソッドのタイミングを停止します | 次のいずれかのオプションを使用します:
|
トランザクションがNewRelicに報告されないようにする | 以下のいずれかの方法でトランザクションを無視します。
|
カスタム Web サイトの作成の詳細については、 GitHub の startWebTransaction の例を参照してください。
セグメントを使用した時間固有の方法
トランザクションはすでにNew Relicで表示されているが、そのトランザクション中に呼び出された特定のメソッドに関する十分なデータがない場合、セグメントを作成して、それらの個々のメソッドをより詳細にタイムアウトさせることができます。例えば、複雑なロジックを持つ特に重要なメソッドの時間を計測したい場合などです。
特定のメソッドの時間を計るには、 newrelic.startSegmentを参照してください。
タイミングの詳細については、 GitHub のカスタムインストゥルメンテーションの例を参照してください。
トランザクションのメタデータを強化する
対象となるコードがNew Relicに表示されていても、そのメソッドの詳細が役に立たないことがあります。例えば、以下のようなものです。
- デフォルト名が有用でない。(メトリクスのグループ化問題の原因になっている場合など)。
- トランザクションに カスタム属性 を追加して、フィルタリングできるようにしたい。
New Relicがすでに表示されているトランザクションを計測する方法を変更する場合は、次のメソッドを使用します。
あなたがしたい場合は... | これを行う... |
---|---|
トランザクションの名前を変更する |
|
トランザクションにメタデータ(顧客のアカウント名やサブスクリプションレベルなど)を追加することができます。 | カスタムアトリビュートを使用します。 カスタムアトリビュートコレクションは、Node.js エージェントでデフォルトで有効になっています。) |
バックグラウンド作業のための新規トランザクションの作成 | GitHub の |
ウェブトランザクションを新規作成する |
|
トランザクションがApdexスコアに影響しないようにする | リクエストの名前付けと無視のルール 、 無視のルールの例 を参照してください。 |
タイミングやコンピュータのリソースデータなど、その他のパフォーマンスデータの記録 |
|
関連ログを見る
エージェントはデフォルトで、アプリケーションのエラーとトレースのコンテキスト内でログを直接送信します。ログ データを他のテレメトリ データおよびサポートされているフレームワークと関連付ける方法の詳細については、コンテキスト ドキュメントのログを参照してください。
New Relic によって計測されていないロギング メカニズムを使用している場合は、代わりにこの API 呼び出しを直接使用して、ログを記録し、コンテキストで転送することができます。
古い代替方法は、エージェントに転送を任せる代わりに、独自のログ フォワーダーを使用することです。この場合、ログを転送する前に、適切なコンテキストでログに注釈を付ける必要があります。次の API 呼び出しを使用します。
機器の非同期作業
サポートされているフレームワーク および サポートされている Node.js バージョン では、New Relic の Node.js エージェントは通常、非同期作業を正しく計測します。しかし、アプリケーションが他のフレームワークを使用している場合や、デフォルトの非同期計測が不正確な場合は、非同期作業を明示的に追跡することができます。
あなたがしたい場合は... | これを行う... |
---|---|
New Relicがすでにインストゥルメントしている非同期メソッドをトレースする |
|
New Relicがインストゥルメントしていない非同期メソッドをトレースする |
|
迷子になったトランザクションのトレース |
|
外部サービスへの機器呼び出し
リクエストネーミング API がロードされると、New Relic の Node.js エージェントは、外部のサービスコールを自動的に識別することができます。また、これらのメソッドを使用して、アプリの他のアプリやデータベースへの接続に関するデータを収集することもできます。
あなたがしたい場合は... | これを行う... |
---|---|
外部リソース(外部サービス、データベースサーバー、メッセージキューなど)への呼び出しの時間を計測します | これらのいずれかを適宜使用してください。 |
New Relic エージェントでインストルメントされた別のアプリにアクティビティを接続する | ディストリビューティッド(分散)トレーシングを使用します。 ディストリビューティッド(分散)トレーシング ヘッダーを手動で挿入して受け入れる方法の詳細については、GitHub のサンプル アプリケーションを参照してください。 |
リクエストが分散システムを通過する際の経路を見ることができます。 |
エラーを収集または無視する
通常、エージェントはエラーを自動的に検出します。 ただし、エージェントを使用して手動でエラーをマークすることは可能です。 エラーを無視としてマークすることもできます。 API メソッドを使用してエラーをログに記録、グループ化、関連付ける方法の詳細については、GitHub のサンプル アプリケーションを使用してください。
あなたがしたい場合は... | これを行う... |
---|---|
エージェントが自動的に報告しないエラーを報告する |
|
定義したカスタム フィルター関数を使用して、名前でエラーをグループ化します |
|
エラーをユーザーに関連付ける |
|
アプリからカスタムイベントと指標データを送信する
New Relic には、任意のカスタム データを記録するさまざまな方法が含まれています。 New Relic のデータ型の説明については、 「データ収集」を参照してください。 以下の API メソッドの使用に関する詳細については、GitHub のサンプル アプリケーションを使用してください。
あなたがしたい場合は... | これを行う... |
---|---|
New Relicで分析できるように、イベントに関するデータを送信します | カスタムイベントを作成します。 |
イベントにメタデータのタグを付けて、イベントをフィルタリングしてファセット化します | 必要に応じてカスタムアトリビュートを追加します。 カスタムアトリビュートコレクションは、Node.js エージェントでデフォルトで有効になっています。) |
カスタムパフォーマンスデータを報告する | カスタムメトリックを作成します。 |
ブラウザエージェントの制御
通常、 エージェントはページに自動的に追加されるか、JavaScript スニペットをコピー/貼り付けすることによってデプロイされます。 これらの推奨方法の詳細については、 「New Relic へのブラウザー アプリの追加」を参照してください。
また、APMエージェントのAPIコールでブラウザエージェントを制御することもできます。詳細については、 ブラウザモニタリングとNode.jsエージェント を参照してください。
カスタムインストルメントの拡張
カスタムインストゥルメンテーションAPI使用の詳細については、 「Node.js カスタムインストゥルメンテーション」を参照してください。
ES モジュール アプリケーションにカスタムインストゥルメンテーションを追加するには、 ES モジュールのドキュメントまたは GitHub のサンプル アプリケーションを参照してください。