エージェントベースの Node.js 監視の設定
Instana エージェントを使用して、お使いの環境内の Node.js アプリケーションを監視するには、 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 」Webhookをインストールします。
注:Instana Node.js SDK を使用する場合は、 「 API と AutoTrace Webhook の併用 」のセクションを確認してください。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 コレクターの手動インストール
コレクターをローカルにインストールする
Instana Node.js コレクターをインストールするには、次のコマンドを実行して、アプリケーションに npm@instana/collector パッケージをインストールしてください:
npm install --save @instana/collector@latest
コレクターをインストールしたら、コレクターを有効にして監視を設定してください。 手順については、 「 Node.js コレクターの有効化」 を参照してください。
コレクターをグローバルにインストールする
別の方法として、以下の手順に従って Node.js コレクターをグローバルにインストールすることもできます:
ターゲット・システムにパッケージ
@instana/collectorをインストールします。npm を使用している場合は、次のコマンドを実行してください:
npm install -g @instana/collector@latestyarn を使用する場合は、以下のコマンドを実行します。
yarn global add @instana/collector@latest
コレクターをコンテナー化アプリケーションにインストールする場合は、上記のステートメントを
Dockerfileに追加できます。パッケージがインストールされている場所を確認してください。 場所は、オペレーティング・システムによって異なります。 npm がインストール済みパッケージをどこに配置するかについての詳細は、 Node.js のドキュメントにある「 フォルダ」 の項目をご覧ください。
すべての依存関係を持つパッケージ
@instana/collectorが、ターゲット・システム上の既知の場所 (/path/to/instana/node_modules/@instana/collectorなど) で使用可能であることを確認します。
コレクターをインストールしたら、コレクターを有効にして監視を設定してください。 手順については、 「 Node.js コレクターの有効化」 を参照してください。
あらかじめ圧縮されたパッケージからコレクターをインストールする
Instana Node.js コレクターの事前構築済み圧縮パッケージを手動でダウンロードするには、 Instana Node.js collector download をクリックしてください。
監視を設定するには、 「 Node.js コレクターの有効化 」の手順に従って、コレクターを有効にしてください。
Node.js コレクターの有効化
Node.js アプリケーションで使用しているモジュールに応じて、次のようにコレクターを有効にしてください:
- アプリケーションで CommonJS モジュールを使用している場合は、「 CommonJS 」セクションの手順に従ってください。
- アプリケーションでECMAScriptモジュールを使用している場合は、 ECMAScript のセクションに記載されている手順に従ってください。
CommonJS
CommonJS モジュールを使用するアプリケーションでは、次のいずれかの方法で Node.js コレクターを有効にしてください:
- 有効化には、load
--requireフラグを使用してください。 - アプリケーションの最初のステートメントとして、 Node.js コレクターをインポートし、初期化してください。
これらのメソッドは、アプリケーションのコードが実行される前に、 Node.js コレクタを読み込んで初期化します。
ロードフラグ --require
このアプローチが望ましい。
CommonJS モジュールを使用するアプリケーションでコレクターを有効にするには、 Node.js の実行ファイルを開始する際に、以下のいずれかの手順を実行してください。
``を設定 NODE_OPTIONS したり、`` --require パラメータを追加したりする際は、誤って` src/immediate `の部分を省略しないように注意してください。 道はここから始まる./となることによってNode.jsモジュール識別子ではなく相対パスとして識別します。 パスは現在の作業ディレクトリに基づいて評価されます。
Node.js のアクティベーションプロセスを開始する前に、変
NODE_OPTIONS数を設定してください:NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"Docker でアプリケーションをビルドする場合は、次の行を に追加して
NODE_OPTIONS設定する必要があります(Dockerfile最後のFROMステートメントの後、および プロセnodeスを開始する最後の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、最終的な
CMDまたはENTRYPOINTDockerfile で。詳細については、
--requireパラメータについては、 -r,--requireモジュールの中にNode.jsドキュメンテーション。
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');
上記のコードは、デフォルトの構成オプションを使用してコレクターを初期化します。 また、 Instana Node.js コレクターを、カスタム設定オブジェクトを使用して初期化することもできます。 有効な設定オプションの一覧については、 「 Node.js 」 の「コレクターの設定」を参照してください。 監視対象のアプリケーションと Instana エージェント間の接続設定に関する詳細については、 「エージェントの通信」 を参照してください。
ECMAScript
アプリケーションがECMAScriptと、依存関係としてインストールされたコレクター @instana/collector を使用している場合、 Node.js ロードフラグを使用して Instana Node.js のコレクターを読み込むことで、そのコレクターを有効にできます。
アプリケーションが ECMAScript モジュールを使用する場合は、ノード実行可能ファイルを起動するときに、次のいずれかの手順を実行します。 この --import 引数を NODE_OPTIONS 設定または使用すると、アプリケーションコードの実行前に Node.js コレクタが初期化されます。 ECMAScriptモジュールに関する詳細については、 Node.js の公式ドキュメントを参照してください。
Node.js のアクティベーションプロセスを開始する前に、変
NODE_OPTIONS数を設定してください:Docker を使用してアプリケーションをビルドする場合は、次の行を に追加して
NODE_OPTIONS設定してくださいDockerfile(最後のFROMステートメントの後、および プロセnodeスを開始するENTRYPOINT最後のCMDまたは の前に):Instana コレクター( Node.js、 18.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.js、 18.19 以降)をインポートするには、次のコマンドを使用します:
node --import /path/to/instana/node_modules/@instana/collector/esm-register.mjs app/index.js
ローダーは、 Instana Node.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。 - 現在のバージョンでは、`with
--experimental-loader` の使用はサポートesm-loader.mjsされておらず、次回のアップグレードで削除される予定です。 詳細については、 「互換性のない変更 」のセクションを参照してください。
Windows でコレクターを有効にする
アプリケーションがECMAScriptモジュールを使用しており、お使いのOSが Windows の場合、ECMAScriptローダーのパスに file:/// 以下を先頭に追加してください:
--import file:///absolute/path/to/instana/node_modules/@instana/collector/esm-register.mjs
Node.js コレクターのビルドツールの設定
バンドラー(WebpackやRollupなど)やトランスパイラー(Babel、Traceur、 TypeScript コンパイラーなど tsc)を使用している場合は、以下のセクションを参考にして、 Node.js コレクターのインストール手順や、ビルド環境に応じたその他の注意事項を確認してください。
バンドラー
WebpackやRollupなどのバンドルツールを使ってNode.jsサーバーアプリケーションを前処理するときは、「node_modulesフォルダから依存関係のコードではなく、自分のコードだけをバンドルするようにしてください。
以下の理由により、依存関係を除外する必要があります。
- モジュール
@instana/collectorでは Webpack を使った前処理がサポートされません。 他の問題の中でも、コードで使用されている動的requireステートメントは正しく解決されません。 - サードパーティ製ライブラリに計測機能を組み込むため、 npm パッケージは Node.js
@instana/collectorrequireの処理をインターセプトします。しかし、それらのライブラリが実行時に読み込まれず、代わりにビルド時に自身のコードにバンドルされている場合、処理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 .config.yaml`ファイルに` "externalDependencies": ["@instana/collector"] `(および必要に応じて、これを @instana/collector 計測対象とするその他のライブラリ)を追加する必要があります。
トランスパイラー
TypeScriptBabelなどのトランスパイラを使用している場合は、トランスパイラがCommonJSまたはECMAScript distのコードを生成することを確認してください。
CommonJSとECMAScript のロード・フラグによってトレーサーを初期化する。
コード内でSDKにアクセスする方法の詳細については、ECMAScriptモジュールを参照してください。
ネイティブアドオン
トレーサーは、以下のネイティブ・アドオンをインストールします。
- gcstats.js: ガーベッジ・コレクションに関する情報を取得します。
- event-loop-stats: イベント・ループ・アクティビティーに関する情報を取得します。
- autoprofile: パフォーマンスの問題またはボトルネックを調査します。 AutoProfile™ は、デフォルトでは使用不可になっています。 AutoProfile™を有効にするには、 Node.js コレクター構成を参照してください。
これらのアドオンは、 npm のオプションの依存関係です。 ご使用のシステムにインストールできない場合でも、コレクターは予期したとおりに機能します。 アドオンに問題が発生した場合は、 トラブルシューティングのセクションをご覧ください。 C++ のアドオンに関する要件の詳細については、 Node.js の公式ドキュメントまたは node-gyp を参照してください。
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 collector API 「 Instana 」 Node.js コレクターを初期化する関数の使用方法、および初期化後にロガーを設定し、 Instana を使用して Node.js に対して OpenTracing を有効にする処理を含むアクティビティにおける Instana API の使用方法について、詳細を確認してください。
- Node.js collector GitHub リポジトリ Instana を使用して Node.js サーバーアプリケーションを監視するために使用されるパッケージ
@instana/collector用の GitHub リポジトリ。