エージェントベースの 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 ウェブフックをインストールします。
注: Instana Node.js SDK を使用する場合は、「 API の使用」と「 AutoTrace Webhook 」のセクションを確認してください。Node.js アプリケーションと Instana エージェントが Kubernetes クラスターで実行される場合は、監視対象アプリケーションのネットワーク アクセスを設定します。 詳しくは、 Kubernetes ネットワークアクセスをご覧ください。
手動によるコレクタのインストールコレクタを手動でインストールするには、 Node.js コ レクタの手動インストールを参照してください。 自動インストールが不可能な場合のみ、手動アプローチを使用してください。
読み取り専用システムでは、事前に定義された Node.js バージョンに対してコンパイルされたネイティブアドオンが、他の Node.js バージョンとの互換性の問題を引き起こす可能性があります。 コレクタがコンパイル済みのバイナリファイルを解凍できず、特定のネイティブモジュールがロードできない。 その結果、ガベージ・コレクション・データや特定のイベント・ループ統計など、特定のメトリクスは収集されない。 しかし、一般的なトレース機能に影響はない。 詳しくは、 トラブルシューティングのセクションをご覧ください。
Cloud Foundry
Instana Node.js コレクタを Cloud Foundry にインストールするには、以下のオプ ションのいずれかを選択します:
コレクターの自動インストール(推奨):タイル 1.177.0 およびそれ以降のバージョンでは、 Instana buildpack を使用して 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.パッケージがインストールされている場所を決定する。 場所はOSによって異なる。 npmがインストールされたパッケージをどこに置くかについての詳細は、 Node.js のフォルダーについてのドキュメントを参照してください。
/path/to/instana/node_modules/@instana/collectorのような、よく知られた場所にあるパッケージ@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 実行ファイルを起動するときに、 以下の手順のいずれかを実行します。
を設定または追加する際に、誤って src/immediate の部分を省略しないように注意してください。 NODE_OPTIONS を設定したり、 --require パラメータを追加したりするときに、誤って の部分を省略しないように注意してください。 パスは、 Node.js がモジュール識別子ではなく相対パスであることを識別できるように、 ./ で始まる必要がある。 パスは現在の作業ディレクトリに基づいて評価される。
を設定する。
NODE_OPTIONSNode.js 変数を設定する :NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"Docker を使ってアプリケーションをビルドする場合は、次の行を に追加して設定する必要があります。
NODE_OPTIONSDockerfileを設定する必要があります(最後のFROMステートメントの後で、nodeプロセスを開始する最後のCMDまたはENTRYPOINTの前):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の最後の
CMDまたはENTRYPOINTを修正する必要があります。--requireパラメーターの詳細については、 Node.js ドキュメントの -r、 --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');
前のコードは、デフォルトの構成オプションでコレクタを初期化します。 カスタム設定オブジェクトで Instana Node.js コレクターを初期化することもできます。 有効な構成オプションのリストについては、 Node.js Collector Configuration を参照してください。 監視対象のアプリケーションと Instana エージェント間の接続設定の詳細については、 エージェント通信を参照してください。
ECMAScript
アプリケーションで ECMAScript を使用し、依存関係としてインストールされている @instana/collector コレクターを使用する場合は、 Node.js ロードフラグを使用して Instana Node.js コレクターをロードすることで、コレクターをアクティブにできます。
アプリケーションでECMAScriptモジュールを使用する場合は、ノードの実行ファイルを起動するときに次のいずれかの手順を実行します。 設定 NODE_OPTIONS または --import 引数の使用により、アプリケーションコードの前に Node.js コレクターが初期化されます。 ECMAScriptモジュールに関する詳細については、公式ドキュメント Node.js を参照してください。
を設定する。
NODE_OPTIONSNode.js 変数を設定する :アプリケーションを Docker でビルドする場合は、次の行を に追加してください。
NODE_OPTIONSを設定するには、Dockerfile(最後のFROMステートメントの後で、nodeプロセスを開始する最後のCMDまたはENTRYPOINTの前)に次の行を追加してください:以下のコマンドを使用して、Instanaコレクター( 18.19Node.js バージョン 以降)をインポートします:
ENV NODE_OPTIONS="--import /path/to/instana/node_modules/@instana/collector/esm-register.mjs"
代わりに、起動 --import 時にパラメータを含めます Node.js。アプリケーションを で起動する場合は
node app/index.js、コマンド --import を付加します。以下のコマンドを使用して、Instanaコレクター( 18.19Node.js バージョン 以降)をインポートします:
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。 - 現在のバージョンでは、の
--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 コレクターをインストールする手順と、ビルドシナリオに関するその他の考慮事項を説明します。
バンドル
Webpack や Rollup などの bundler を使って Node.js サーバアプリケーションをプリプロセスするときは、 node_modules フォルダにある依存関係のコードではなく、自分のコードだけをバンドルするようにしてください。
以下の理由により、依存関係を除外しなければならない:
- モジュール
@instana/collectorでは Webpack を使った前処理がサポートされません。 その他の問題としては、コード内で使用されているダイナミックrequireステートメントが正しく解決されない。 - サードパーティ製ライブラリを計測対象とする場合、npmパッケージは`
requireprocess@instana/collector`をインターセプト Node.js します。しかし、それらのライブラリが実行時に読み込まれず、代わりにビルド時に自身のコードとバンドルされる場合、`requireprocess`は実行されず、計測は適用されません。 したがって、Instanaのトレースは機能しないか、部分的に機能する。つまり、httpのような Node.js コアモジュールに対してのみトレースが機能する。これらのモジュールはデフォルトでバンドルから除外されているからだ。
そのため、 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を使用している場合、 "externalDependencies": ["@instana/collector"] (そしておそらく @instana/collector instrumentsの他のライブラリも)を バンドルから除外するために、 angular.json ファイルに追加する必要があります。
トランスパイラー
TypeScript や Babel などのトランスパイラを使用している場合は、トランスパイラが CommonJS または ECMAScript dist コードを生成することを確認してください。
のロード・フラグを使ってトレーサーを初期化する。 CommonJS と ECMAScript のロード・フラグによってトレーサーを初期化する。
コード内でSDKにアクセスする方法の詳細については、 ECMAScriptモジュールを参照してください。
ネイティブアドオン
トレーサーは以下のネイティブアドオンをインストールする:
- gcstats.js :ガベージコレクションに関する情報を取得する。
- event-loop-stats :イベントループのアクティビティに関する情報を取得する。
- オートプロファイル :パフォーマンスの問題やボトルネックを調査します。 デフォルトでは AutoProfile™ はデフォルトでは無効になっている。 AutoProfile™ を有効にするには、 Node.js コレクタの構成を参照。
これらのアドオンは、オプションのnpm依存です。 それらがシステムにインストールできなくても、コレクターは期待どおりに動作する。 アドオンに問題が発生している場合は、 トラブルシューティングのセクションを参照してください。 C++アドオンの要件の詳細については、 公式の Node.js ドキュメントまたは node-gypを参照してください。
オプションの依存関係を使用せずに依存関係をインストールする
npm install --no-optional または yarn --ignore-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 概要Node.js Instanaコレクターについて学びましょう。コレクターの制限事項、サポート Node.js 対象バージョンとライブラリ、その他の関連事項を含みます。
- Node.js コレクター設定 Instana Node.js コレクターをデフォルト設定以上に活用するための設定方法について学びましょう。
- Node.js コレクター APIInstana コレクター Node.js を初期化する関数の使用方法、および初期化後のロガー設定や Instana との Node.jsOpenTracing 連携有効化を含むアクティビティにおける Instana API の使用方法に関する詳細を取得します。
- Node.js コレクター GitHub リポジトリ Instana で Node.js サーバーアプリケーションを監視するために使用される
@instana/collectorパッケージの GitHub リポジトリ。