Node.js コレクターの設定

ほとんどのユースケースでは、 Instana Node.js コレクターを初期化し、 require('@instana/collector')(); デフォルトの設定オプションをそのままにしておく必要があります。

設定の優先順位

バージョン6以降、複数の設定を定義する場合、以下の優先順位が適用されます(高い順から低い順):

  1. 環境変数(最優先され、他の設定を上書きします)
  2. コード内設定
  3. エージェントの構成
  4. デフォルト値
注: バージョン6以前では、設定の優先順位の挙動が異なります。 設定オプションによっては、エージェントの設定が他の設定ソースよりも優先される場合があります。

エージェントの通信

コレクターの設定を変更して、エージェントのホストとポートを変更することができます。

エージェント・ホスト

コレクターは IP 127.0.0.1 を使用して、ホストのデフォルト・ゲートウェイを介したフォールバックとして Instana エージェントと通信しようとします。 これらの IP のいずれでもエージェントを使用できない場合は、agentHost オプションを使用してカスタム IP を使用することができます。

require('@instana/collector')({
  agentHost: '::1' // use IPv6 to contact via localhost
});
 

あるいは、環境変数を利用します。

require('@instana/collector')({
  agentHost: process.env.HOST_IP
});
 

構成されていない場合、Instana コレクターは INSTANA_AGENT_HOST という名前の環境変数を検索し、この環境変数で定義されている内容を使用してエージェントと通信します。 この環境変数がない場合は、まず localhost でエージェントとの接続を試行し、次にデフォルト・ゲートウェイで接続を試行します。

エージェント・ポート

コレクターはポート 42699 を介して Instana エージェントとの通信を試行します。 ポートが変更されている場合は、agentPortオプションを使用してポートを変更できます。

require('@instana/collector')({
  agentPort: 42699
});
 

構成されていない場合、Instana コレクターは INSTANA_AGENT_PORT という名前の環境変数を検索し、この環境変数で定義されている内容を使用してエージェントと通信します。 この環境変数がない場合は、デフォルト・ポート 42699 にフォールバックします。

Node.js のEOLイベントを無効にする

Instana エージェントが導入されている非サーバーレス環境では、 Node.js Tracerは、実行中の Node.js のバージョンがサポート終了(EOL)に達したことを検知すると、問題イベントをトリガーします。

これらのEOLイベントを抑制するには、次の環境変数を使用して無効にすることができます:

INSTANA_TRACING_DISABLE_EOL_EVENTS=true
 

Node.js のサポート終了(EOL)バージョンの完全な一覧については、 Node.js の公式リリースページをご覧ください。

トレース

トレース機能は、リクエストがさまざまなサービスやコンポーネントを通過する際に詳細な情報を収集することで、アプリケーション全体を可視化します。

トレース機能はデフォルトで有効になっています。 トレースを完全に無効にするか、または選択的に無効にするには、 「トレースの無効化」 のセクションにある設定オプションを参照してください。

エントリ・スパンなしでルート・エグジット・スパンを許可する

注: この機能は、 Instana コレクター( 4.0 以降)で利用可能です。

デフォルトでは、 Instana Node.js Tracer は、アクティブなエントリスパンを持つ終了スパンのみをキャプチャします。 この機能を有効にすると、トレーサーがスタンドアロンの出口スパンをトレースできるようになります。

この機能を有効にするには、以下のいずれかのオプションを使用する:

  • 環境 INSTANA_ALLOW_ROOT_EXIT_SPAN 変数を設定してください。

  • トレーサー初期化機能で機能を設定する:

    require('@instana/collector')({
    tracing: {
      allowRootExitSpan: true
    }
    });
     

が または 1 に設定されている INSTANA_ALLOW_ROOT_EXIT_SPANtrue 場合、あるいは allowRootExitSpan が に設定されている true場合、アクティブなエントリスパンが存在しなくても、トレーサーはエクシッツパンをキャプチャします。

この機能は、 Instana の自動インスツルメンテーションではサポートされていない仕組みによってタスクがトリガーされる、以下のようなシナリオで役立ちます:

  • サポートされていないメッセージング・ライブラリからの着信メッセージ
  • サポートされていないプロトコル(例:生の Transmission Control Protocol ( TCP )や WebSocket )を介して行われるリクエスト
  • setTimeout、'setInterval、またはサポートされていないNode.jsスケジューリング・ライブラリなどのメカニズムを使用して、アプリケーションによって内部的に開始されるスケジュールされたジョブ

エンドポイントを無視する

Node.js Tracer 4.9.0 以降では、特定のトレースや呼び出しを除外することで、不要なデータの取り込みを削減できます。 このフィルタリング機能により、トレースの収集が最適化されます。 トレースを無効にするには、 Node.js のTracer設定で以下のパラメータを定義してください:

  • 技術:該当する技術を指定してください。例:、 Kafka RedisDynamoDB、、または HTTP
  • 方法:除外する方法を特定する。 たとえば、以下の技術については、これらのメソッドを除外してください:
    • Kafka: send, consume
    • Redis: get, type
    • DynamoDB: query, scan
    • HTTP: get, post
  • エンドポイント(該当する場合):特定のエンドポイントに基づいてフィルタリングをさらに絞り込みます。 たとえば、以下のテクノロジーのエンドポイントは次のように定義されています:
    • Kafka: エンドポイントはトピック名です。
    • HTTP: エンドポイントは URL というパスです。
  • 接続(オプション):特定の接続のトレースを除外します。 たとえば、以下の技術の接続は次のように定義されています:
    • Redis: 接続は接続文字列です。
    • HTTP: 接続情報にはホスト名とポート番号が含まれます。
制約事項:

「エンドポイントを無視する」機能には、以下の制限があります:

  • この機能は現在、 Redis、 DynamoDB,、 Kafka、および HTTP で利用可能です。 ただし、メソッドとエンドポイントの両方によるフィルタリングに対応しているのは、 Kafka と HTTP のみです。
  • Kafka.js ライブラリは、 sendBatch メソッドをサポートしており、これにより複数のトピックに同時にメッセージを送信することができます。 メソッドとエンドポイントの両方を使用してトレースをフィルタリングする場合は、設定で関連するすべてのエンドポイント(トピック)を指定してください。 トピックが省略された場合でも、トレースは無視されません。
  • 現在、接続フィルタリングは Redis および HTTP でのみサポートされています。
  • 現在、 HTTP へのエントリ呼び出しのフィルタリングがサポートされています。

ルールのフィルタリング

トレースのフィルタリングに関するルールは以下の通りです:

  • あるトレースが無視されると、それに続くすべての下流のトレースも同様に無視されます。
  • を使用して * 、すべてのエンドポイント、メソッド、または接続を無視します。
  • エンドポイントの値( Kafka のトピック名など)は、サービス間で一貫して同じままです。
  • メソッド名は、プログラミング言語や技術によって異なる場合があります。 ご利用のサービスに適したメソッドとエンドポイントを確認するには、 Instana のUIをご参照ください。

以下の Instana のUIスクリーンショットは、設定に適切なメソッドとエンドポイントを特定するための視覚的な参考資料となります:

UIにおける手法とエンドポイント

構成オプション

以下のいずれかのオプションを使用して、エンドポイントの除外を有効にできます:

  • 環境変数
  • コード内設定
  • エージェントの構成
環境変数

サービスごとにエンドポイントをフィルタリングするには、以下の環境変数を使用して、無視するエンドポイントを設定できます:

  • INSTANA_IGNORE_ENDPOINTS_PATH
  • INSTANA_IGNORE_ENDPOINTS
INSTANA_IGNORE_ENDPOINTS_PATH

この環境変数を使用すると、次の例に示すように、外部の YAML ファイルを通じてフィルタリングを設定できます

INSTANA_IGNORE_ENDPOINTS_PATH=/absolute/path/to/config.yaml
 

前の例では、ファイル config.yaml には絶対パスを指定し、指定された構成構造に従う必要があります。

次の例は、メソッドによるフィルタリングを示しています:

tracing:
  ignore-endpoints:
    redis:
      - get
      - type
    dynamodb:
      - query
    kafka:
      - send 
    http:
      - get
 

この設定では、以下のトレースがフィルタリングされます:

  • GET および TYPE コマンド Redis
  • QUERY ~のコマンド DynamoDB
  • SEND およびすべての下流 Kafka トレースに対するメソッド
  • GET およびすべての下流 HTTP トレースに対するメソッド

次の例は、メソッド、エンドポイント、および接続によるフィルタリングを示しています:

tracing:
  ignore-endpoints:
    kafka: 
      - methods: ["consume"]
        endpoints: ["topic1", "topic2"]

      - methods: ["consume", "send"]
        endpoints: ["topic3"]

      - methods: ["*"] # Applied to all methods
        endpoints: ["topic4"]

      - methods: ["consume"]
        endpoints: ["*"] # Applied to all endpoints

    http:
      - methods: ["get"]
        endpoints: ["/status"]

      - methods: ["get", "post"]
        endpoints: ["/status", "/v1/status"]

      - methods: ["*"]
        connection: ["localhost:3000"]

    redis:
      - methods: ['get']
        connections: ['192.168.0.1:9191']
 

この設定では、以下のトレースがフィルタリングされます:

  • CONSUME および topic2 における Kafka およびすべて topic1 の下流のトレースに対するメソッド
  • CONSUME および SENDtopic3 および、および、および、および、および、および、および、および、および、および、および、および、および、および、 Kafka および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、および、
  • 内の topic4 すべての (*) Kafka メソッドおよびすべての下流のトレース
  • CONSUME*)内のすべての Kafka トピックおよびすべてのダウンストリーム・トレースに対するメソッド
  • GET URL へのメソッド /status およびすべて HTTP の下流のトレース
  • GET および POST URL へのメソッド /status/v1/status ならびに HTTP すべての下流のトレース
  • 接続に関する localhost:3000 すべての(*)メソッドおよびすべてのダウンストリームトレース
  • GET 接続時のメソッド 192.168.0.1:9191 for Redis

同じ設定ファイル内で、両方のフィルタリングオプション(メソッドのみ、およびメソッドとエンドポイント)を組み合わせて使用することができます。

この設定は、 configuration.yaml エージェントの構造と互換性があります。

INSTANA_IGNORE_ENDPOINTS

この環境変数を使用すると、メソッド名のみに基づいてトレースを除外することができます。

INSTANA_IGNORE_ENDPOINTS=redis:get,type
 

この設定により、パッケージ redis 内の および TYPE コマンド GET はトレースの対象から除外されます。

複数のパッケージの除外設定を行うには、次の例に示すような設定を使用してください。

INSTANA_IGNORE_ENDPOINTS=redis:get,type;dynamodb:query,scan;kafka:send;http:get
 

この設定では、以下のトレースがフィルタリングされます:

  • GET および TYPE コマンドを Redis
  • QUERY および SCAN コマンドを DynamoDB
  • SEND メソッドで Kafka
  • GET メソッドで HTTP
コード内設定

コード内設定を使用して、サービスごとにエンドポイントをフィルタリングすることで、無視するエンドポイントを設定できます。

次の例は、メソッドによるフィルタリングを示しています:

require('@instana/collector')({
  tracing: {
    ignoreEndpoints: {
      redis: ['get', 'type'],
      dynamodb: ['query', 'scan'],
      kafka: ['send'],
      http: ['get']
    }
  }
});
 

この設定では、以下のトレースがフィルタリングされます:

  • GET および TYPE コマンドを Redis
  • QUERY および SCAN コマンドを DynamoDB
  • SEND メソッドおよび Kafka それ以降のすべてのトレース
  • GET メソッドおよび HTTP それ以降のすべてのトレース

次の例は、メソッドとエンドポイントによるフィルタリングを示しています:

require('@instana/collector')({
  tracing: {
    ignoreEndpoints: {
      kafka: [
        { methods: ['consume'], endpoints: ['topic1', 'topic2'] },
        { methods: ['send'], endpoints: ['topic3'] }
      ],
      http: [
        {
          methods: ['get'], endpoints: ['/status']
        }
      ]
    }
  }
});
 

この設定では、以下のトレースがフィルタリングされます:

  • CONSUME および topic2 における Kafka およびすべて topic1 の下流のトレースに対するメソッド
  • SEND およびすべての下流 Kafka トレースにおける topic3 メソッド
  • GET URL へのメソッド /status およびすべて HTTP の下流のトレース

同じ設定内で、両方のフィルタリングオプション(メソッドのみ、およびメソッドとエンドポイント)を使用できます。

トレースを無効にする

注: この手順は、 Node.js Tracer 4.17.0 以降に適用されます。

トレースを無効にするには、完全に無効にするか、特定の計測対象や、データベース、メッセージング、ロギングなどのグループ全体を選択的に除外することができます。 この柔軟性により、アプリケーションの要件に合わせてトレースを微調整することができます。

トレースを無効にする設定を適用するには、以下のいずれかの方法を使用してください:

  • 環境変数
  • コード内設定
  • エージェントの設定 ( YAML )

すべてのトレースを無効にする

トレースを無効にすると、 Instana のトレーサーによるスパンの収集や報告が完全に停止します。 このアプローチは、デバッグやテスト、あるいは一時的にトレースが不要な場合などにおいて有用です。

トレースが無効になっている場合、自動インスツルメンテーションもTrace SDKも動作しません。 すべてのSDK呼び出しは、エラーやスパンを生成することなく、黙って無視されます。

すべてのトレースを無効にするには、次のいずれかの方法を使用してください:

  • 環境変数:環境変数を INSTANA_TRACING_DISABLE に設定します true

    INSTANA_TRACING_DISABLE=true
     
  • コード内での設定:トレーサーの初期化時に以下のオプションを指定してください:

    require('@instana/collector')({
    tracing: {
      disable: true
    }
    });
     

特定の計測機能を無効にする

特定のインストルメンテーションやパッケージのトレースを無効にするには、以下のオプションを使用してください。 適切な名前を確認するには、 「サポートされているライブラリ 」のセクションに記載されている値 Instrumentation identifier をご参照ください。

特定の計測機能を無効にするには、次のいずれかの方法を使用してください:

  • 環境変数:以下の例に示すように、環境 INSTANA_TRACING_DISABLE_INSTRUMENTATIONS 変数を設定してください:

    INSTANA_TRACING_DISABLE_INSTRUMENTATIONS=redis,graphql
     

    この例では、この設定 graphql により、 redis およびのトレースが無効になっています。 これら2つの計測システムについては、スパン値は収集も報告もされていません。

  • コード内での設定:トレーサーの初期化時に以下のオプションを指定してください:

    require('@instana/collector')({
    tracing: {
      disable: {
        instrumentations: ['redis', 'graphql']
      }
    }
    });
     

計測グループの無効化

グループ名を指定することで、関連する計測項目のカテゴリ全体を無効にすることができます。 この方法は、1つの設定でより広範囲のライブラリのトレース機能を無効にしたい場合に役立ちます。

グループ単位での無効化は、現在以下のカテゴリに限定されています:

特定の計測グループを無効にするには、次のいずれかの方法を使用してください:

  • 環境変数:以下の例に示すように、環境 INSTANA_TRACING_DISABLE_GROUPS 変数を設定してください:

    INSTANA_TRACING_DISABLE_GROUPS=logging,database
     

    この例では、この設定により、および databaseslogging グループに属するすべてのインストルメンテーションが無効化されます。 これらのグループに属する計測機器については、スパンは収集も報告もされません。

  • コード内での設定:トレーサーの初期化時に以下のオプションを指定してください:

    require('@instana/collector')({
    tracing: {
      disable: {
        groups: ['logging', 'database']
      }
    }
    });
     

エージェントの設定によるトレースの無効化

あるいは、エージェントを通じて設定を行うことで、すべてのサービスに対して計測機能やグループをグローバルに無効にすることもできます。 詳細については、 「トレースの無効化」 のセクションを参照してください。

単一のフラットリストでトレースを無効にする

フラットリスト形式では、カンマ区切りのリストを使用することで、複数の計測機能やグループを無効にすることができます。

注: この方法はサポートされていますが、構造が不十分であるため推奨されません。

単一のフラットリストとしてのトレースを無効にするには、次のいずれかの方法を使用してください:

  • 環境変数:以下の例に示すように INSTANA_TRACING_DISABLE 、環境変数を設定してください:

    INSTANA_TRACING_DISABLE=redis,graphql,logging,database
     

    この例では、個々の計測対象(redisgraphql)およびグループ全体(loggingdatabase)の両方について、トレースが無効になっています。 指定されたエントリのいずれについても、スパンは収集されません。

  • コード内での設定:トレーサーの初期化時に以下のオプションを指定してください:

    require('@instana/collector')({
    tracing: {
      disable: ['redis', 'graphql', 'logging', 'database']
    }
    });
     

自動トレースの無効化

自動トレースもデフォルトで有効になっています。 自動トレースのみを無効にする (SDK またはopenTracing による手動トレースは有効にしておく) には、次のオプションを初期化関数に渡します。

require('@instana/collector')({
  tracing: {
    automaticTracingEnabled: false
  }
});
 

最後に、環境変数 INSTANA_DISABLE_AUTO_INSTR=true を設定することでも自動トレースを無効にすることができます。

自動トレースが無効化されていても、SDK または OpenTracing API を使用してスパンを手動で作成することはできます。

OpenTelemetry との連携を無効にする

Opentelemetry の統合は、デフォルトで有効になっています。 統合を無効にするには、以下のオプションを初期化関数に渡します。

require('@instana/collector')({
  tracing: {
    useOpentelemetry: false
  }
});
 

さらに、 INSTANA_DISABLE_USE_OPENTELEMETRY 変数を trueに設定することで、 OpenTelemetry 統合を無効にすることができます。 詳細については、 「 Instana 環境変数」 を参照してください。

ワーカースレッドのトレースを無効にする

Instana Node.js コレクターがワーカースレッドを追跡しないようにするには、次の環境変数を設定してください:

INSTANA_DISABLE_WORKER_THREADS=true

この設定では、すべてのワーカースレッドのトレースが無効になりますが、メインプロセスは引き続き自動的にトレースされます。 ワーカースレッドが、トレースの対象から除外したい内部タスクやバックグラウンドタスクを実行する場合に、この設定を使用してください。

スタック・トレースのキャプチャー

デフォルトでは、コレクターはキャプチャされた各出口スパンについて、直近の10箇所の呼び出し箇所をキャプチャします。 この値は、必要に応じて増減させることができます。

注:HTTP のエントリスパンについては、スタックトレースは収集されません。これらは Node.js のコア内部呼び出しのみを含んでおり、アプリケーションレベルで有用な情報を提供しないためです。

スタックトレースの取得については、次の2つの点を設定できます:

  • スタックトレースの長さ :キャプチャする呼び出し箇所の数。
    • 指定可能な値:0~500
    • デフォルト値: 10
  • スタックトレースモード :スタックトレースの取得方法。
    • 対応する値:
      • all: すべての終了スパンについてスタックトレースを収集します(デフォルト)。
        # Captures stack trace for all spans.
        INSTANA_STACK_TRACE=all
      • error: エラーが発生したスパンについてのみスタックトレースを収集します。
        # Captures stack trace only for erroneous spans.
        INSTANA_STACK_TRACE=error
      • none: スタックトレースは収集されません。
        # Disable collection of stack trace.
        INSTANA_STACK_TRACE=none

スタックトレースの取得は、以下のいずれかのオプションを使用して設定できます:

  • 環境変数
  • コード内設定
  • エージェントの構成

スタックトレースの長さの設定

スタックトレースの長さを設定することで、スタックトレースに含まれるコールサイトの数を調整できます。 スタックトレースの長さを設定するには、以下のいずれかの方法を使用してください:

  • 環境変数:以下の例に示すように INSTANA_STACK_TRACE_LENGTH 、環境変数を設定してください:
    INSTANA_STACK_TRACE_LENGTH=15
  • コード内での設定:トレーサーの初期化時に以下のオプションを指定してください:
    require('@instana/collector')({
      tracing: {
        global: {
          stackTraceLength: 15
        }
      }
    });
  • エージェントの設定: エージェントを使用した設定を参照してください。

スタックトレースモードの設定

スタックトレースモードを設定することで、スタックトレースがキャプチャされるシナリオを指定できます。

スタックトレースモードを設定するには、以下のいずれかの方法を使用してください:

  • 環境変数:以下の例に示すように INSTANA_STACK_TRACE 、環境変数を設定してください:
    INSTANA_STACK_TRACE='error'
  • コード内での設定:トレーサーの初期化時に以下のオプションを指定してください:
    require('@instana/collector')({
      tracing: {
        global: {
          stackTrace: 'none'
        }
      }
    });
  • エージェントの設定: エージェントを使用した設定を参照してください。

エージェント経由での設定

あるいは、エージェントを通じて設定を行うことで、すべてのサービスに対してスタックトレースの取得をグローバルに設定することも可能です。 詳細については、 「スタックトレースの取得」 を参照してください。

package.json のカスタムパスの設定

Instana コレクターは、プロジェクト内のプライマリ package.json ファイルを検索し、アプリケーション名などの重要な情報を抽出しようとします。 package.json ファイルのカスタム・パスを定義する必要がある場合、またはコレクターがファイルを見つけることができない場合は、 packageJsonPathという名前の構成オプションを使用できます。

require('@instana/collector')({
  packageJsonPath: 'absolute/path/to/package.json'
});
 

INSTANA_PACKAGE_JSON_PATH 環境変数を設定することで、 package.json ファイルのパスを構成することもできます。

サービスの命名

サービスは、Instana の中心となる概念です。 呼び出し、スパン、およびトレースはサービスに密接に関連しています。 デフォルトの場合、Node.js コレクターはメインの package.json ファイルの name 属性と version 属性を使用します。 サービス名をカスタマイズするには、serviceName プロパティーを構成します。

require('@instana/collector')({
  serviceName: 'shop'
});
 

環境変数 INSTANA_SERVICE_NAME を設定することでも、カスタム・サービス名を構成できます。 カスタムサービスの設定に関する詳細については、 「サービス名のグローバル設定」 を参照してください。

Kafka トレース相関ヘッダー

コレクターバージョン4.xから、Kafkaトレース相関ヘッダーは常に'stringフォーマットで送信されるようになり、'binaryフォーマットのサポートはなくなりました。 詳細については、Kafkaヘッダーの移行を参照してください。

環境変数「INSTANA_KAFKA_HEADER_FORMAT」とコード内設定オプション「tracing: { kafka: { headerFormat: .... }}}」を参照する設定をすべて削除する。

プロセス名の設定

環境変数 INSTANA_PROCESS_NAME を使用して、Node.js プロセスを表すインフラストラクチャー・エンティティーのカスタム・ラベルを設定します。

未処理の Promise 拒否の報告

Instana Node.js のコレクターは、処理されなかったプロミスの拒否を、Instana への課題として報告することができます。 未処理の Promise 拒否とは、拒否されたが、拒否ハンドラーが定義されていない (Promise チェーンに .catch(...) がない) Promise です。

この機能は、デフォルトでは無効です。 これを有効化して、未処理の Promise 拒否が検出されると、重大度「警告」の問題として Instana に報告されます。

Promise が拒否されたときに進行中であった呼び出しは、未処理の拒否によるエラーとしてマークされないことに注意してください。 これには次の 2 つの理由があります。

  1. 未処理の拒否では Node.js ランタイムでエラーは発生しません。 要求の処理中に未処理の拒否が発生しても、要求は正常に処理できます。
  2. Node.jsランタイムには、特定の呼び出しのコンテキストで未処理の拒否を検出する方法はありません。 実際、未処理の拒否は、後で関連付けられている Promise のガーベッジ・コレクションが行われる時点にのみ検出されます。 この時点までに、未処理の拒否を発生させた要求はすでに終了しており、その対応はすでに行われています。

この機能を有効にするには、オプション reportUnhandledPromiseRejections を以下のように指定します。

require('@instana/collector')({
  reportUnhandledPromiseRejections: true
});
 

Node.js ( 12.0.0 )以降では、未処理のプロミスの拒否がどのように処理されるかを制御するコマンドライン引 --unhandled-rejections 数が用意されています。 --unhandled-rejections=strict が指定されている場合、未処理の拒否の報告はサポートされません。これは、このモードでは Node.js が未処理の拒否をキャッチされていない例外に変換するためです。

ロギング

デフォルトのロギング設定を変更するには、以下のセクションを参照してください:

ログ・レベルの構成

デフォルトのログ・レベルを変更するには、以下を使用して構成できます。

require('@instana/collector')({
  level: 'debug'
});
 

環境変数 INSTANA_LOG_LEVELdebuginfowarn または error のいずれかに設定することでも、ログ・レベルを構成できます。 最後に INSTANA_DEBUG を空ではない文字列に設定すると、ログ・レベルが debug に設定されます。

デフォルトのログ・レベルは infoであることに注意してください。 予期しない Instana 関連のデバッグログ(や "name":"@instana/collector""level":20 を含むログ行)が表示された場合は、設定でログレベルが「debug」に設定されていないか、または や INSTANA_DEBUG が設定されていない INSTANA_LOG_LEVEL=debug かを確認してください。 独自のロガー (以下を参照) を提供する場合は、必要に応じてそのロガーのログ・レベルを設定する必要があります。

AutoProfile

1.98.1 以降。 少なくともNode.js 6.4.0 が必要

この機能は現在、パブリック・プレビュー・テスト・フェーズにあります。

AutoProfile を有効にするには、コレクターの初期化時にこのオプション autoProfile: true を追加してください。

require('@instana/collector')({
  autoProfile: true
});
 

また、環境 INSTANA_AUTO_PROFILE 変数を次のように設定することで、 AutoProfile を有効にすることもできます。 true

短い Exit 呼び出しの自動集計

出典: 1.108.0。

Node.js のトレーサーは、非常に短い(10ミリ秒未満)高頻度のデータベース呼び出しの自動集計をサポートしています。 これにより、このような呼び出しが短時間で連続して実行されるシナリオで、トレースのパフォーマンス・オーバーヘッドを最小限に抑えることができます。 現時点ではこの機能はオプトインであり、明示的に有効にする必要があります。 今後のいずれかのリリースでデフォルトの動作になる予定です。

すぐに有効にするには、以下のいずれかの方法を行ってください:

  • 環境変数INSTANA_SPANBATCHING_ENABLED=trueを設定します。
  • コード内構成を使用する。
    require('@instana/collector')({
      tracing: {
        spanBatchingEnabled: true
      }
    });
     
  • エージェントの configuration.yaml に以下を追加する。
    com.instana.plugin.nodejs:
      span-batching-enabled: true
     

動作がデフォルトでオンになると、これらの構成オプションは無視されることに注意してください。

この機能の仕組みが原因で、このオプションを有効にすると、エンドポイントの抽出に影響し、一部の待ち時間が少ないデータベース・エンドポイントに対する呼び出しの数が変わる可能性があります。

メトリクスの送信遅延

Node.js コレクターから Instana エージェントへのメトリクスの送信頻度は、環境 INSTANA_METRICS_TRANSMISSION_DELAY 変数または設定 config.metrics.transmissionDelay オプションを使用して設定できます。

デフォルト値: 1000ミリ秒(1秒)

最大値: 5000ミリ秒(5秒)

値はミリ秒単位で指定されます。 転送遅延を設定することで、メトリクスの更新頻度を調整できます。 遅延時間を長くして、更新頻度を下げます。 このアプローチは、高負荷な状況において有効であり、ネットワークトラフィックとデータ取り込みコストを最小限に抑えます。

メトリクスの送信遅延は、以下のいずれかの方法で設定できます:

  • 環境変数を設定してください INSTANA_METRICS_TRANSMISSION_DELAY (値はミリ秒単位):
    INSTANA_METRICS_TRANSMISSION_DELAY=5000
  • コード内設定を使用(値はミリ秒単位):
    require('@instana/collector')({
      metrics: {
        transmissionDelay: 5000
      }
    });

前述の例では、システムはデフォルトの1000ミリ秒(1秒)ではなく、5000ミリ秒(5秒)ごとにメトリクスを送信します。

既成のネイティブアドオンへのフォールバックを無効にする

ネイティブ・アドオンのオプション依存関係 が正常にインストールされていない場合、 @instana/collector パッケージは、オペレーティング・システム、 Node.js バージョン、および libc バリアントに一致する事前ビルド・バイナリーを自動的に使用しようとします。 INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS=falseを設定することにより、事前ビルドの使用を無効にすることができます。

構成リファレンス (全体)

すべての指定可能な構成値とそのデフォルト値を以下に示します。

{
  agentHost: '127.0.0.1',
  agentPort: 42699,
  serviceName: null,
  packageJsonPath: null,
  // the log level:
  level: 'info',
  tracing: {
    enabled: true,
    automaticTracingEnabled: true,
    // Spans are batched and sent to the agent once every second, or if ${forceTransmissionStartingAt} spans have been collected (whichever happens earlier)
    forceTransmissionStartingAt: 500,
    // If more than ${maxBufferedSpans} have been buffered and the collector has not been able to send them to the agent, it will start to drop spans to avoid causing memory issues.
    maxBufferedSpans: 1000,
    http: {
      // This is usually configured at the agent level (configuration.yaml).
      extraHttpHeadersToCapture: []
    },
    // How many stack trace frames are to be captured. Can also be 0 to disable collecting stack traces.
    stackTraceLength: 10,
    // To disable individual tracing plug-ins.
    disabledTracers: [],
     // Can also be configured at the agent level (configuration.yaml).
    spanBatchingEnabled: false
  },
  metrics: {
    timeBetweenHealthcheckCalls: 3000,
    transmissionDelay: 1000
  },
  // This is usually configured at the agent level (configuration.yaml).
  secrets: {
    matcherMode: 'contains-ignore-case',
    keywords: ['key', 'pass', 'secret']
  },
  autoProfile: false
}
 

以下は、Node.js コレクターでサポートされているすべての環境変数のリストです。

環境変数 同等の構成オプション
INSTANA_AGENT_HOST config.agentHost
INSTANA_AGENT_PORT config.agentPort
INSTANA_SERVICE_NAME config.serviceName
INSTANA_PACKAGE_JSON_PATH config.packageJsonPath
INSTANA_PROCESS_NAME
INSTANA_DISABLE_AUTO_INSTR=true config.tracing.automaticTracingEnabled = false
INSTANA_TRACING_DISABLE config.tracing.disable
INSTANA_STACK_TRACE_LENGTH config.tracing.global.stackTraceLength
INSTANA_STACK_TRACE config.tracing.global.stackTrace (all,error,none)
INSTANA_LOG_LEVEL config.level
INSTANA_DEBUG config.level = debug
INSTANA_AUTO_PROFILE=true config.autoProfile = true
INSTANA_SPANBATCHING_ENABLED=true config.tracing.spanBatchingEnabled = true
INSTANA_TRACE_IMMEDIATELY=true config.tracing.activateImmediately = true
INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS
INSTANA_ALLOW_ROOT_EXIT_SPAN config.tracing.allowRootExitSpan = true
INSTANA_IGNORE_ENDPOINTS config.tracing.ignoreEndpoints
INSTANA_METRICS_TRANSMISSION_DELAY config.metrics.transmissionDelay