トラブルシューティング

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.jsINSTANA_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 のバージョンと互換性がありません。

着信履歴の欠落または重複

エラー

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.
 

ランタイム・バージョン切り替えモジュールが見つかりません

エラーメッセージ

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をご利用中ですが、すでにデプロイ済みの Kubernetes アーティファクトでは、古いインストルメンテーションイメージが参照されている可能性があります。