エージェントベースの Node.js 監視の設定
環境内の Node.js アプリケーションを Instana エージェントで監視するには、 Instana コレクター( Node.js )をインストールしてください。 Instana Node.js コレクターは、 Node.js アプリケーションの依存関係に追加する npm パッケージです。 メトリクスの収集と自動トレースを可能にし、メトリクスとトレースを Instana に報告します。
その他の Node.js 監視オプションの詳細については、 Node.js 監視オプションを参照してください。
準備
エージェントベースの監視を設定するには、次の手順を完了してください:
- Node.js アプリケーションの監視に必要な前提条件を確認してください。
- Instana ホストエージェントをインストールします。
監視の設定
Instana エージェントを使用して Node.js の監視を設定するには、次の手順を完了してください:
Node.js コレクターをインストールします:環境に応じてインストール方法を選択してください:
- プラットフォーム固有のインストール : お使いの環境に合わせたインストール方法に従ってください。
- 手動インストール :お使いのプラットフォームがリストにない場合は、 Node.js コレクターを手動でインストールしてください。
ビルドツールを使用する場合は、 ビルドツールを設定してください。
監視を設定すると、 Instana のUIで Node.js アプリケーションに関連するメトリクスとトレースを確認できます。 詳細については、 「トレースとメトリクスの表示」 を参照してください。
Node.js コレクターの異なるプラットフォームへのインストール
環境に応じて、以下のセクションに説明されている手順を完了し、 Node.js コレクターをインストールしてください。 以下の表は、異なるプラットフォームで利用可能なコレクターのインストールオプションを一覧表示しています:
| プラットフォーム | 自動インストール | 手動インストール |
|---|---|---|
| Kubernetes および Red Hat OpenShift | [×] | [×] |
| Cloud Foundry | [×] | [×] |
| Apigee Microgateway | [×] | |
| Next.js | [×] |
Kubernetes および Red Hat OpenShift
Node.js アプリケーションが Kubernetes および Red Hat OpenShift 環境で実行されている場合、 Instana Node.js コレクターを以下の方法で自動または手動でインストールできます:
自動コレクターのインストール(推奨):コレクターを自動的にインストールするには、次の手順を完了してください:
Instana の AutoTrace ウェブフックをインストールしてください。
注:Instana ( Node.js SDK)の使用を計画している場合は、 「 API 」と「 AutoTrace 」ウェブフックの併用に関するセクションを確認してください。Node.js アプリケーションと Instana エージェントが Kubernetes クラスターで実行されている場合、監視対象アプリケーションのネットワークアクセスを設定してください。 詳細については、 Kubernetes network access を参照してください。
手動コレクターのインストール: コレクターを手動でインストールするには、 「 Node.js コレクターの手動インストール」 を参照してください。 自動インストールが不可能な場合にのみ、手動でのアプローチを使用してください。
読み取り専用システムでは、事前定義された Node.js バージョンに対してコンパイルされたネイティブアドオンが、他の Node.js バージョンとの互換性の問題を引き起こす可能性があります。 コレクターは事前コンパイル済みバイナリファイルを展開できないため、特定のネイティブモジュールのロードが妨げられます。 その結果、ガベージコレクションデータや特定のイベントループ統計など、特定のメトリクスは収集されません。 ただし、一般的なトレース機能は影響を受けません。 詳細については、 トラブルシューティングのセクションを参照してください。
Cloud Foundry
Cloud Foundry に Instana Node.js コレクターをインストールするには、次のいずれかのオプションを選択します。
自動コレクターインストール(推奨):Tile 1.177.0 およびそれ以降のバージョンでは、 Instana ビルドパックを使用して Node.js コレクターをインストールし、 Cloud Foundry 上の Node.js アプリケーションのセットアップを自動化します。
手動コレクターのインストール: コレクターを手動でインストールするには、 「 Node.js コレクターの手動インストール」 を参照してください。 自動インストールが不可能な場合にのみ、手動でのアプローチを使用してください。
Apigee Microgateway
Instana Node.js コレクターパッケージを Apigee Microgateway (別名 edgemicro )で使用するには、 Instana Node.js コレクターを使用した Apigee Microgateway の監視の手順に従ってください。
Next.js
Instana Node.js コレクターを使用してアプリケーション Next.js を監視するには、次の手順を完了してください:
- コレクターをグローバルまたはローカルにインストールします。
- ロードフラグを使用してコレクタを有効にします。
Node.js コレクターの手動インストール
コレクターをインストールする前に、 「始める前に」 のセクションを必ずお読みください。
Node.js コレクターは、ローカルまたはグローバルにインストールできます。
コレクターをローカルにインストールする
Instana Node.js コレクターをインストールするには、 npm パッケージをインストールします。 @instana/collector 次のコマンドを実行して、アプリケーションで実行します。
npm install --save @instana/collector
コレクターをインストールした後、コレクターをアクティブ化して監視を設定してください。 手順については、 「 Node.js コレクターの有効化」 を参照してください。
コレクターのグローバルインストール
別の方法として、以下の手順を完了することで、 Node.js コレクターをグローバルにインストールできます:
対象システムに
@instana/collectorパッケージをインストールします:npm を使用している場合は、次のコマンドを実行してください:
npm install -g @instana/collectoryarn を使用している場合は、次のコマンドを実行してください:
yarn global add @instana/collector
コレクターをコンテナ化されたアプリケーションにインストールする場合、上記のステートメントを. に追加できます
Dockerfile。パッケージがインストールされている場所を特定する。 場所はオペレーティングシステムによって異なります。 npm がインストール済みパッケージを配置する場所の詳細については、 Node.js のフォルダに関するドキュメントを参照してください。
対象システム上で、パッケージ
@instana/collectorとそのすべての依存関係が既知の場所(例:/path/to/instana/node_modules/@instana/collector)に確実に利用可能であることを確認してください。
コレクターをインストールした後、コレクターをアクティブ化して監視を設定してください。 手順については、 「 Node.js コレクターの有効化」 を参照してください。
Node.js コレクターの有効化
Node.js アプリケーションで使用するモジュールに応じて、コレクターを以下の方法で有効化してください:
- アプリケーションが CommonJS モジュールを使用している場合は、セクション CommonJS の手順に従ってください。
- アプリケーションがECMAScriptモジュールを使用している場合は、 ECMAScript セクションの手順に従ってください。
CommonJS
CommonJS モジュールを使用するアプリケーションでは、次のいずれかの方法で Node.js コレクターを有効にしてください:
- アクティベーションにはロード
--requireフラグを使用してください。 - アプリケーションの最初の文として、 Node.js コレクターを要求し初期化してください。
これらのメソッドは、アプリケーションコードの前に Node.js コレクタをロードおよび初期化します。
ロードフラグ --require
この方法が好ましい。
CommonJS モジュールを使用するアプリケーションでコレクターを有効にするには、 Node.js 実行ファイルを起動する際に次のいずれかの手順を完了してください。
パラメータ --require を設定 NODE_OPTIONS または追加する際、誤って部分を src/immediate 省略しないようにしてください。 パスは で始まる ./ 必要があるため、 Node.js がそれをモジュール識別子ではなく相対パスとして認識します。 パスは現在の作業ディレクトリに基づいて評価されます。
Node.js のアクティベーションプロセスを開始する前に、変
NODE_OPTIONS数を設定してください:NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"Docker でアプリケーションをビルドする場合、以下の行を に追加して
NODE_OPTIONS設定する必要があります(最後のFROMステートメントの後、ビルドプロセnodeスをDockerfile開始する最終的なCMDENTRYPOINTまたは の前に追加してください)ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"代わりに、 Node.js を起動するコマンドに
--requireパラメータを追加します。通常 コマンドnode app/index.jsでアプリケーションを起動している場合は、追加の--requireロードフラグを追加してください。 以下の例を参照してください。node --require ./node_modules/@instana/collector/src/immediate app/index.jsこのアプリケーションを Docker を使用してビルドおよび実行する場合、Dockerfile内の最終的な
ENTRYPOINT`CMD`または``を変更する必要があります。-r
--requireパラメータの詳細については、 Node.js ドキュメントの ` --require ` モジュールを参照してください。
CommonJS マニュアル必須
require('@instana/collector')();
// All other require statements must be done after the collector is initialized.
// Note the () after the require statement of the collector which initializes it.
// const express = require('express');
上記のコードは、デフォルトの設定オプションでコレクターを初期化します。 カスタム構成オブジェクトを使用して、 InstanaNode.js コレクターを初期化することもできます。 有効な設定オプションの一覧については、 Node.js Collector Configuration を参照してください。 監視対象アプリケーションと Instana エージェント間の接続設定に関する詳細については、 「エージェント通信」 を参照してください。
ECMAScript
アプリケーションがECMAScriptを使用しており、 @instana/collector 依存関係としてインストールされているコレクターの場合は、 Node.js ロード フラグを使用して Instana Node.js コレクターをロードすることで、コレクターをアクティブ化できます。
アプリケーションがECMAScriptモジュールを使用する場合、node実行ファイルを起動する際に以下のいずれかの手順を完了してください。 Node.jsNODE_OPTIONS--import コレクターの引数を設定または使用すると、アプリケーションコードの前にコレクターが初期化されます。 ECMAScriptモジュールに関する詳細については、公式ドキュメント Node.js を参照してください。
Node.js のアクティベーションプロセスを開始する前に、変
NODE_OPTIONS数を設定してください:Docker でアプリケーションをビルドする場合、以下の行を (最後の
FROMステートメントの後、ビルドプロセnodeスをDockerfile開始するENTRYPOINT最終的なCMDまたは の前に) に追加してNODE_OPTIONS設定してください:以下のコマンドを使用して、 Instana コレクター( Node.js18.19 以降)をインポートします:
ENV NODE_OPTIONS="--import /path/to/instana/node_modules/@instana/collector/esm-register.mjs"
代わりに、 Node.js を起動する際に --import パラメータを含めてください。アプリケーションを で起動する場合は
node app/index.js、 コマンド --import を追加してください。以下のコマンドを使用して、 Instana コレクター( Node.js18.19 以降)をインポートします:
node --import /path/to/instana/node_modules/@instana/collector/esm-register.mjs app/index.js
ローダーは自動的に InstanaNode.js コレクターを初期化します。
- Node.js のバージョンが v18.19.0 より古い場合、の
--experimental-loader /path/to/instana/node_modules/@instana/collector/esm-loader.mjs代わりにを使用する必要があります--import /path/to/instana/node_modules/@instana/collector/esm-register.mjs。 - 現在のバージョンでは、の
--experimental-loaderとの併用esm-loader.mjsはサポートされなくなり、次回のアップグレードで削除されます。 詳細については、 変更点セクションを参照してください。
Windows でコレクターを有効にする
アプリケーションがECMAScriptモジュールを使用しており、お使いのオペレーティングシステムが Windows の場合、ECMAScriptローダーのパスに`/`を file:/// 先頭に追加してください:
--import file:///path/to/instana/node_modules/@instana/collector/esm-register.mjs
Node.js コレクターのビルドツールの設定
バンドラー(Webpack や Rollup など)またはトランスパイラ(Babel、Traceur、 TypeScript コンパイラなど tsc)を使用している場合は、以下のセクションを参照して、 Node.js コレクタのインストール手順およびビルドシナリオにおけるその他の考慮事項を確認してください。
バンドラー
Node.js サーバーアプリケーションをWebpackやRollupなどのバンドラーで前処理する際は、`dependencies`フォルダ node_modules 内の依存関係コードを含めず、自身のコードのみをバンドルするようにしてください。
以下の理由により、依存関係を除外する必要があります:
- モジュール
@instana/collectorでは Webpack を使った前処理がサポートされません。 他の問題の中でも、コード内で使用されている動的requireステートメントが正しく解決されていません。 - サードパーティ製ライブラリを計測対象とする場合、 npm パッケージは
@instana/collectorNode.jsrequireプロセスの実行をインターセプトします。ただし、これらのライブラリが実行時に読み込まれず、代わりにビルド時に自身のコードとバンドルされる場合、このrequireプロセスは実行されず、計測処理は適用されません。 したがって、 Instana のトレースは機能しないか、部分的にしか機能しません。つまり、 Node.js のコアモジュール(例:)に対してのみトレースが機能します。これらのモジュールhttpはデフォルトでバンドル対象から除外されているためです。
したがって、すべてのコード変換から node_modules を除外するために、 webpack-node-externals モジュールを使用してバンドラーを設定する必要があります:
// your webpack.config.js:
const nodeExternals = require('webpack-node-externals');
module.exports = {
...
// externals: nodeModules,
externals: [nodeExternals()],
...
};
Angular CLI(特に Angular Universal やSSRを使用する場合)では、 バンドルから除外するために、 angular.json"externalDependencies": ["@instana/collector"] `.js/bundle.js`ファイルに``(および @instana/collector 計測対象となるその他のライブラリ)を追加する必要があります。
トランスパイラ
TypeScript やBabelなどのトランスパイラを使用している場合、トランスパイラが CommonJS またはECMAScriptのディストリビューションコードを生成することを確認してください。
ECMAScript の CommonJS ロードフラグを介してトレーサーを初期化する。
コード内でSDKにアクセスする方法の詳細については、 ECMAScriptモジュールを参照してください。
ネイティブアドオン
トレーサーは次のネイティブアドオンをインストールします:
- gcstats.js : ガベージコレクションに関する情報を取得します。
- event-loop-stats : イベントループの活動に関する情報を取得します。
- autoprofile : パフォーマンスの問題やボトルネックを調査します。 デフォルトでは無効になっています AutoProfile™。 AutoProfile™ を有効にするには、 Node.js collector configuration を参照してください。
これらのアドオンは、 npm のオプション依存関係です。 システムにインストールできない場合でも、コレクターは期待通りに動作します。 アドオンに問題が発生している場合は、 トラブルシューティングのセクションを参照してください。 C++ アドオンの要件に関する詳細は、 公式の Node.js ドキュメントまたはnode-gyp を参照してください。
オプションの依存関係を除いた依存関係のインストール
依存関係を または yarn --ignore-optional npm install --no-optional コマンドでインストールする場合、 npm または yarn はネイティブアドオンのインストールを試みません。
npm またはyarnによるネイティブアドオンのインストールが失敗する問題を修正するには、インストール手順からフラグを削除するか、以下のインストール手順を追加してください:
npm install @instana/autoprofileまたはyarn add @instana/autoprofilenpm install event-loop-statsまたはyarn add event-loop-statsnpm install gcstats.jsまたはyarn add gcstats.js
Node.js コレクターの無効化
環境変数を使用して、(ローカル)開発環境向けに Node.js コレクターを無効化できます。 Expressフレームワーク NODE_ENV はこの目的のために環境変数を普及させた。
Node.js コレクターを無効にするには、次の手順を完了してください:
Node.js コレクターを以下のようにロードします:
if (process.env.NODE_ENV !== 'development') { require('@instana/collector')(); }変
NODE_ENV数を に設定してdevelopment、アプリケーションをローカルで起動してください。 以下の例を参照してください。export NODE_ENV=developmentNODE_ENV=development node myApp.js
関連トピック
- Node.js 概要Instana Node.js コレクターについて、その制限事項、サポート対象の Node.js バージョンとライブラリ、およびコレクターに関するその他の事項を学びます。
- Node.js コレクター設定Instana Node.js コレクターをデフォルト設定以上に設定する方法について学びます。
- Node.js コレクター API Instana Node.js コレクターを初期化する関数の使用と、初期化後にロガーを設定し、 Instana を使用して Node.js の OpenTracing 有効にするなどのアクティビティに Instana API 使用する方法の詳細を取得します。
- Node.js collector GitHub リポジトリInstana を使用して Node.js サーバーアプリケーションを監視するために使用されるパッケージ
@instana/collectorの GitHub リポジトリ。