当社の Node.js エージェント API では、エージェントの標準機能を拡張することができます。このAPIを使って以下のことができます。
- カスタム・トランザクション・パラメーターの作成
- カスタムエラーやメトリクスのレポート
また、APIを使用して、 カスタムインスツルメンテーション を行うこともできます。 サポートされているフレームワーク では、エージェントはほとんどのアクティビティを自動的に計測します。カスタム・インスツルメンテーションでは、デフォルトのインスツルメンテーションがないフレームワークにまで監視を拡張することができます。
その他のリソース
- GitHubで公開されている Node.js agent API documentationには、より詳細な内容と実践的なチュートリアルが掲載されています。
- また、Node.jsエージェントのデフォルトの動作は、 の設定で調整することができます。.
- 利用可能なすべての New Relic API を参照するには、 Intro to APIs を参照してください。
要件
Node.jsエージェントAPIを使用するには、Node.jsエージェントの最新リリース を用意してください。さらに、ご覧ください。
トランザクションを使用して、コードの欠落している部分をインストゥルメントする
アプリをインストゥルメントするために、New Relicはコードで各パスをそのトランザクションに分離します。New Relicは、これらのトランザクションの親メソッドの時間をインストゥルメントして総合的なパフォーマンスを測定し、追加詳細として長期間実行されているトランザクションからトランザクショントレースを収集します。
これらのメソッドは、New Relicがコードの特定の部分をインストゥルメントしていない場合に使用します。
以下を行う場合... | 操作... |
---|---|
New Relicが自動計測していないメソッドの計測を開始する | 新しいトランザクションを作成します。参照 |
メソッドの処理が完了した後にタイミングを止める | 次のいずれかのオプションを使用します:
|
トランザクションのNew Relicへのレポートを抑止する | 以下のいずれかの方法でトランザクションを無視します。
|
セグメントを使用する時間固有メソッド
トランザクションはすでにNew Relicで表示されているが、そのトランザクション中に呼び出された特定のメソッドに関する十分なデータがない場合、セグメントを作成して、それらの個々のメソッドをより詳細にタイムアウトさせることができます。例えば、複雑なロジックを持つ特に重要なメソッドの時間を計測したい場合などです。
このメソッドは、既存のトランザクション内でメソッドをインストゥルメントする場合に使用します。
以下を行う場合... | 操作... |
---|---|
特定のメソッドを時間 |
タイミングの詳細については、GitHub の instrumentation tutorial を参照してください。
トランザクションのメタデータの強化 [#metadata]
対象となるコードがNew Relicに表示されていても、そのメソッドの詳細が役に立たないことがあります。例えば、以下のようなものです。
- デフォルト名が有用でない。(メトリクスのグループ化問題の原因になっている場合など)。
- トランザクションに カスタム属性 を追加して、フィルタリングできるようにしたい。
これらのメソッドは、New Relic ですでに表示されているトランザクションの計測方法を変更したい場合に使用します。
以下を行う場合... | 操作... |
---|---|
トランザクションの名前を変更する |
|
トランザクションにメタデータ(顧客のアカウント名やサブスクリプションレベルなど)を追加することができます。 | カスタム属性を使用する 。(カスタムアトリビュートコレクションは、Node.jsエージェントでデフォルトで有効になっています。) |
バックグラウンド作業のための新規トランザクションの作成 | |
ウェブトランザクションを新規作成する | 使用 |
トランザクションがApdexスコアに影響しないようにする | リクエストの名前付けと無視のルール 、 無視のルールの例 を参照してください。 |
タイミングやコンピュータのリソースデータなど、その他のパフォーマンスデータの記録 |
関連ログの参照
アプリケーションのエラーとトレースのコンテキスト内でログを直接表示するには、次のAPI呼び出しを使用してログに注釈を付けます。
ログデータと他のテレメトリーデータとの相関関係については、 logs in context のドキュメントをご覧ください。
非同期の作業をインストゥルメントする
サポートされているフレームワーク および サポートされている Node.js バージョン では、New Relic の Node.js エージェントは通常、非同期作業を正しく計測します。しかし、アプリケーションが他のフレームワークを使用している場合や、デフォルトの非同期計測が不正確な場合は、非同期作業を明示的に追跡することができます。
以下を行う場合... | 操作... |
---|---|
New Relicがすでにインストゥルメントしている非同期メソッドをトレースする | |
New Relicがインストゥルメントしていない非同期メソッドをトレースする | |
迷子になったトランザクションのトレース |
|
失われたトランザクションの状態を追跡する | 一般的な問題は、インストルメントされていないライブラリを使用する際にトランザクションの状態が失われることです。詳しくは、GitHub の transaction preservation tutorial をご覧ください。 |
外部サービスの呼び出しをインストゥルメントする
リクエストネーミング API がロードされると、New Relic の Node.js エージェントは、外部のサービスコールを自動的に識別することができます。また、これらのメソッドを使用して、アプリの他のアプリやデータベースへの接続に関するデータを収集することもできます。
以下を行う場合... | 操作... |
---|---|
外部リソース(外部サービス、データベースサーバー、メッセージキューなど)への呼び出しのタイミング | これらのいずれかを適宜使用してください。 |
New Relic エージェントでインストルメントされた別のアプリにアクティビティを接続する | 使用 クロスアプリケーションのトレース. |
エラーを収集または無視する
通常、エージェントは自動的にエラーを検出します。しかし、エージェントを使って手動でエラーをマークすることもできます。また、エラーを 無視 としてマークすることもできます。
以下を行う場合... | 操作... |
---|---|
エージェントが自動的に報告しないエラーを報告する |
アプリケーションからカスタムイベントとメトリクスデータを送信する
New Relic には、任意のカスタムデータを記録するためのさまざまな方法が用意されています。New Relic のデータタイプの説明については、 データ収集 を参照してください。
以下を行う場合... | 操作... |
---|---|
イベントに関するデータを送信して、New Relicで分析できるようにする。 | |
イベントにメタデータをタグ付けして、フィルターやファセットをかけることができます。 | 必要に応じて カスタム属性 を追加します。(カスタムアトリビュートの収集は、Node.jsエージェントではデフォルトで有効になっています。) |
カスタムパフォーマンスデータをレポートする | カスタムメトリックの作成. |
ブラウザエージェントの制御
通常、ブラウザエージェントはページに自動的に追加されるか、JavaScript スニペットをコピー/ペーストすることでデプロイされます。これらの推奨方法の詳細については、 New Relic にブラウザアプリを追加する をご覧ください。
また、APMエージェントのAPIコールでブラウザエージェントを制御することもできます。詳細については、 ブラウザモニタリングとNode.jsエージェント を参照してください。
カスタムインストルメントの拡張
newrelic.instrument()
は、カスタムインストルメントのための追加の柔軟性を提供します。チュートリアルや例題を含む詳細については、GitHubの shims documentation をご覧ください。