トラブルシューティング
Instana を使用して Node.js アプリケーションを設定および監視する際、次のような監視上の問題が発生する可能性があります。
Node.js アプリケーションの監視に関する詳細については、 「 Node.js の監視」 を参照してください。
Node.js コレクターがインストールされていない
監視対象の種類: nodejs_collector_not_installed
Node.js プロセスがエージェントに接続できず、トレースやメトリクスを送信できません。
原因
この問題は、以下のいずれかの原因で発生する可能性があります:
パッケージ
@instana/collectorのインストールが正しく行われていない場合:パッケージ@instana/collectorがアプリケーションに追加され、正しく有効化されている場合、アプリケーションのログに以下のエントリが表示されます:Attempting agent communication via <hostname>:<port>アプリケーション・ログにこのようなメッセージが表示されないない場合は、パッケージ
@instana/collectorのインストールおよび初期化が正しく行われていない可能性があります。コレクターと Node.js アプリケーションの統合が正しく行われていない場合、 Instana におけるアプリケーションの可観測性が低下する可能性があります。 アプリケーションは Instana に表示されていますが、トレース機能は一部しか動作しません。 追跡される通話もあれば、見逃される通話もある。
ネットワーク接続の問題: Node.js コレクターがインストールされているにもかかわらず、アプリケーションログに以下のメッセージが表示される場合、ネットワークの問題により、パッケージ
@instana/collectorがホストエージェントと通信できない状態です:Announce attempt failed: <error>. Will retry in <seconds>s.
解決方法
この問題を解決するには、以下の手順でトラブルシューティングを行ってください:
コレクタの統合の確認
コレクタの統合を確認するには、以下のセクションを参照してください:
CommonJS
CommonJS, を使用する場合は、他の require `or` import ステートメントや `statement` よりも直前に、` require('@instana/collector') immediately` によってエクスポートされる関数を呼び出してください。 この関数は、以下のいずれかの方法で呼び出すことができます:
1つの文で関数を呼び出します:
require('@instana/collector')()次のように、2つの連続した文で関数を呼び出します:
// Correct: const instana = require('@instana/collector'); instana(); // this is fine // Now all other modules can be required: require('something'); require('another-thing'); ...
以下の例は、コレクターの統合が正しく行われていないケースを示しています:
// WRONG!
require('@instana/collector'); // @instana/collector is not initialized
require('something');
require('another-thing');
...
// WRONG!
const instana = require('@instana/collector');
require('something');
require('another-thing');
instana(); // TOO LATE!
...
ECMAScriptモジュール
ECMAScriptモジュール(ESM)を使用する場合は、 ロードフラグを使用してコレクターをロードおよび初期化してください。 次のようなコードでコレクタを初期化しないでください :
import instana from '@instana/collector'
// Wrong!
instana()
import { something, else } from 'some-module';
ネットワークの問題の解決
ネットワークの問題を解決するには、以下の手順でトラブルシューティングを行ってください
Node.js プロセスが同じホスト上のポート42699でホストエージェントに接続できることを確認してください。 必要なネットワーク可視性に関する詳細については、「 Instana ホストエージェントのネットワーク要件」 を参照してください。
コンテナ化されたプラットフォームでは、トレース対象のアプリケーションが実行されているコンテナと、 Instana ホストエージェントが実行されているコンテナとの間のネットワーク接続を確認してください。 トレース対象のアプリケーションコンテナが、同じホスト上の Instana エージェントコンテナに接続しようとする際、オーバーレイネットワークの設定に問題がないことを確認してください。
Node.js コレクターが、 Instana エージェントと通信するために正しいIPアドレスまたは DNS 名を使用していることを確認してください。 ネットワークアドレスを変更する必要がある場合は、 Node.js
INSTANA_AGENT_HOSTコレクターに環境変数を使用するよう指示できます。ホストエージェントがポート42699でリスニングしていることを確認してください。 ホストエージェントがポート42699ではなく他のポートをリッスンしているため、ポートのリマッピングが必要な場合は、
INSTANA_AGENT_PORT環境変数を使用して、コレクターが別のポートを使用するように設定することができます。
上記のいずれの解決策も問題のトラブルシューティングに役立たない場合は、 サポートチケットを開いてください。
コレクターの初期化が遅すぎる
監視対象の種類: nodejs_collector_initialized_too_late
他の Node.js パッケージが読み込まれた後にこの @instana/collector パッケージが初期化されると、 Node.jsnodejs_collector_initialized_too_late のダッシュボードに表示される警告を確認できます。
原因
このエラーは、 Node.js パッケージをインポートおよび初期化する前に、他の @instana/collector パッケージを読み込んだために発生します。 詳細については、 「 Node.js コレクターのインストール」 および 「コレクターの統合の確認」 を参照してください。
解決方法
この問題を解決するには、 @instana/collector パッケージを他の初期化処理の前に必要とし、初期化するようにコードを更新してください。 詳細は 、「コレクターの起動 」を参照してください。
AutoProfile パッケージが見つからない、または読み込みに関する問題
監視対象の種類: nodejs_collector_native_addon_autoprofile_missing
Node.js プロセスを、 Instana の AutoProfile 機能を使用するように設定しましたが、パッケージが読み込まれて @instana/autoprofile いない可能性があります。 その結果、 Instana では、この Node.js アプリケーションのプロファイリング情報が取得できません。
エラーメッセージ :
Could not load @instana/autoprofile. You will not get profiling information for this Node.js app in Instana, although autoprofiling has been enabled.
原因
パッケージ @instana/autoprofile は @instana/collector のオプションの依存関係であり、可能な場合は自動的にインストールされます。 しかし、ネイティブアドオンであるため、インストールに失敗することがあります。 詳細は、 ネイティブアドオンをご覧ください。
@instana/autoprofile のインストールに失敗する(特にコンテナ化されたアプリケーションの場合)原因は、以下のいずれかの理由による可能性があります
C++ のコードをビルドするために必要なオペレーティングシステムのパッケージが欠落している。 この問題は、これらのパッケージがターゲットマシン上またはターゲットコンテナイメージ内に存在しない場合に発生します。
コンテナイメージの構築方法。 Node.js パッケージはターゲット・イメージにインストールする必要があります。 ビルドシステム上で
npm installまたはyarnを実行し、node_modulesフォルダ全体を、異なるアーキテクチャやオペレーティングシステムを使用する可能性のあるコンテナイメージにコピーしても、動作しません。 このステップは、ターゲット画像内で実行する必要があります。npm install --no-optionalまたはyarn --ignore-optionalコマンドを使用して依存関係をインストールした場合、パッケージが欠落している可能性もあります。この
@instana/autoprofileモジュールは、現在の Node.js のバージョンと互換性がありません。
解決方法
この問題を解決するには、お使いの Node.js のバージョンがサポート対象かどうかを確認し、コマンド npm rebuild を実行してください。
着信履歴の欠落または重複
エラー :
Instana では、一部の通話の取得を見逃したり、重複した通話を表示したりすることがあり、その結果、トレースデータが不完全または不正確になる場合があります。
原因
通話の欠落や重複は、以下の理由により発生する可能性があります:
- サポートされていないトリガー:通常、 Instana のトレーサーは、アクティブなエントリスパンが存在する場合にのみ、発信呼び出しのみをキャプチャします。 一部の例外的なケースでは、このルールによって、捕捉されると期待される通話が捕捉されないことがあります。 たとえば、 Instana の自動インスツルメンテーションでサポートされていないメカニズムによって処理がトリガーされた場合などです。
- 複数のトレーサーを使用したトレース:同じ Node.js アプリケーション内で、 Instana とサードパーティ製のトレーサー( New Relic、 Dynatrace、 Datadog など)を併用すると、呼び出しの欠落や重複が発生したり、 Node.js の計測に失敗したりする可能性があります。
解決方法
この問題を解決または防止するには、以下の手順に従ってください:
サポートされていないトリガーにはカスタムトレーシングを使用する: Instana Node.js SDK を使用して、カスタムトレーシングを通じてエントリ・スパンを作成します。 Node.js SDK の詳細については、 「アクティブなエントリスパンが存在しない場合、トレースが無効になる」 を参照してください。
複数のトレーサーによるトレースは避けてください:1つの Node.js アプリケーションに対して、複数のトレーサーを同時に使用してトレースを行わないでください。
プリコンパイル済みビルドのコピーに失敗しました
エラーメッセージ :
Copying the precompiled build for event-loop-stats (linux/x64/musl/ABI 108) failed. [Error: ENOENT: no such file or directory, lstat '/tmp/event-loop-stats'] {
errno: -2,
code: 'ENOENT',
syscall: 'lstat',
path: '/tmp/event-loop-stats'
}
原因
このエラーは通常、 Node.js Tracer がプリコンパイル済みのバイナリを展開しようとした際に、 tmp フォルダへの書き込み権限がない場合(たとえば、 Kubernetes ポッド内など)に発生します。
解決方法
プリコンパイル済みビルドのコピーに関するエラーを修正するには、システムが読み取り専用モードになっていないか確認してください。
Windows における非対応の ECMAScript URL スキーム
エラーメッセージ :
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader.
原因
このエラーは、ローダーコマンドで絶対パスを指定した際に発生します。
解決方法
この問題を解決するには、パスの先頭に file:/// を追加してください。 詳細については、 「 Windows でコレクターを有効にする 」を参照してください。
ランタイム・バージョン切り替えモジュールが見つかりません
エラーメッセージ :
Error: Cannot find module '/opt/instana/instrumentation/nodejs/runtime-version-switch'
Require stack:
- internal/preload
at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
at Module._load (node:internal/modules/cjs/loader:985:27)
at Function.patchedModuleLoad [as _load] (/opt/instana/instrumentation/nodejs/node_modules/@instana/core/src/util/requireHook.js:93:34)
原因
AutoTrace のWebhook 計測機能が古いバージョンであるにもかかわらず、 Node.js コレクターが最新バージョンに更新されている場合、このエラーが表示されます。 これは、 AutoTraceruntime-version-switch のWebhookからスクリプトが削除されたことが原因で発生します。
解決方法
この問題を解決するには、以下のステップを実行します。
- AutoTrace のWebhookをアンインストールします。
- 変更を反映させるには、 AutoTrace のWebhookを再デプロイしてください。