OBI グローバル設定プロパティ

OBI コアに適用されるグローバル設定プロパティを設定する

OBI は、環境変数またはコマンドライン引数 -config か環境変数 OTEL_EBPF_CONFIG_PATH を使用して渡す YAML 設定ファイルを通じて設定できます。 環境変数は設定ファイルのプロパティよりも優先されます。 たとえば、次のコマンドラインでは、OTEL_EBPF_LOG_LEVEL オプションが config.yaml 内の log_level 設定を上書きします。

設定引数の場合は次のとおりです。

OTEL_EBPF_LOG_LEVEL=debug obi -config /path/to/config.yaml

設定環境変数の場合は次のとおりです。

OTEL_EBPF_LOG_LEVEL=debug OTEL_EBPF_CONFIG_PATH=/path/to/config.yaml obi

設定ファイルのテンプレートについては、YAML 設定ファイルの例を参照してください。

OBI は、HTTP および gRPC アプリケーションからトレースを生成、変換、エクスポートするコンポーネントのパイプラインで構成されています。 YAML 設定では、各コンポーネントに独自のトップレベルセクションがあります。

オプションとして、OBI はネットワークレベルのメトリクスも提供します。 詳細については、ネットワークメトリクスのドキュメントを参照してください。

以下のセクションでは、OBI 設定全体に適用されるグローバル設定プロパティについて説明します。

trace_printer: json
shutdown_timeout: 30s
channel_buffer_len: 33
YAML
環境変数
説明デフォルト
(YAML なし)
OTEL_EBPF_AUTO_TARGET_EXE
実行可能ファイルのフルパスへの グロブ マッチングによって計装するプロセスを選択します。string未設定
(YAML なし)
OTEL_EBPF_AUTO_TARGET_LANGUAGE
検出されたプログラミング言語(グロブマッチャー)によって計装するプロセスを選択します。たとえば gojavanodejs などです。string未設定
open_port
OTEL_EBPF_OPEN_PORT
オープンポートによって計装するプロセスを選択します。ポートとポート範囲のカンマ区切りリストを受け付けます。string未設定
target_pids
OTEL_EBPF_TARGET_PID
PID によって計装するプロセスを選択します。YAML リスト、単一値、またはカンマ区切り環境変数リストを受け付けます。integer または integer のリスト未設定
shutdown_timeout
OTEL_EBPF_SHUTDOWN_TIMEOUT
グレースフルシャットダウンのタイムアウトを設定します。string“10s”
log_level
OTEL_EBPF_LOG_LEVEL
プロセスロガーの詳細レベルを設定します。有効な値は DEBUGINFOWARNERROR です。stringINFO
log_format
OTEL_EBPF_LOG_FORMAT
ロガーの出力形式を設定します。有効な値は textjson です。stringtext
trace_printer
OTEL_EBPF_TRACE_PRINTER
計装されたトレースを指定された形式で標準出力に出力します。トレースプリンター形式を参照してください。stringdisabled
enforce_sys_caps
OTEL_EBPF_ENFORCE_SYS_CAPS
起動時にシステムケーパビリティが不足している場合の OBI の処理方法を制御します。booleanfalse

実行可能ファイル名のマッチング

このプロパティは、ファイルシステム上で実行可能ファイルが存在するディレクトリを含む完全な実行可能コマンドラインに対して グロブ マッチングを行います。 OBI は 1 つのプロセス、または同様の特性を持つ複数のプロセスを選択します。 より詳細なプロセスの選択とグルーピングについては、サービスディスカバリーのドキュメントを参照してください。

実行可能ファイル名で計装する場合は、対象システム上の 1 つの実行可能ファイルに一致する明確な名前を選択してください。 たとえば、OTEL_EBPF_AUTO_TARGET_EXE=*/server を設定してグロブに一致する 2 つのプロセスがある場合、OBI は両方を選択します。 かわりに、完全なアプリケーションパスを使用して完全一致を行ってください。 たとえば OTEL_EBPF_AUTO_TARGET_EXE=/opt/app/server または OTEL_EBPF_AUTO_TARGET_EXE=/server といった具合です。

OTEL_EBPF_AUTO_TARGET_EXEOTEL_EBPF_OPEN_PORT の両方のプロパティを設定した場合、OBI は両方の選択条件に一致する実行可能ファイルのみを選択します。

言語のマッチング

OTEL_EBPF_AUTO_TARGET_LANGUAGE を使用して、検出された言語ランタイムに基づいてプロセスをターゲットにします。

以下が例です。

OTEL_EBPF_AUTO_TARGET_LANGUAGE=go

グロブ表現も使用できます。

OTEL_EBPF_AUTO_TARGET_LANGUAGE='java*'

このオプションを OTEL_EBPF_AUTO_TARGET_EXEOTEL_EBPF_OPEN_PORT と組み合わせる場合、プロセスは設定されたすべてのセレクターを満たす必要があります。

ターゲット PID のマッチング

target_pids(YAML)または OTEL_EBPF_TARGET_PID(環境変数)を使用して、特定のプロセス ID のみを計装します。

YAML の例は次のとおり。

target_pids: [1234, 5678]
target_pids: 1234

環境変数の例は以下です。

OTEL_EBPF_TARGET_PID=1234,5678

これは、正確なプロセス ID が分かっている場合のターゲットを絞ったトラブルシューティングやコントロールされたリリースに役立ちます。

オープンポートのマッチング

このプロパティは、ポートまたはポート範囲のカンマ区切りリストを受け付けます。 実行可能ファイルがいずれかのポートを開いている場合、OBI はそれを選択します。 たとえば次のとおり。

OTEL_EBPF_OPEN_PORT=80,443,8000-8999

この例では、OBI はポート 80443、または 8000 から 8999 の間のポートを開く実行可能ファイルを選択します。 1 つのプロセスまたは同様の特性を持つ複数のプロセスを選択できます。 より詳細なプロセスの選択とグルーピングについては、サービスディスカバリーのドキュメントの手順に従ってください。

実行可能ファイルが複数のポートを開く場合、そのポートの 1 つを指定するだけで、OBI はすべてのアプリケーションポートの HTTP/S および gRPC リクエストをすべて計装します。 現在、特定のポートのリクエストのみに計装を限定する方法はありません。

指定されたポート範囲が広い場合(例: 1-65535)、OBI はその範囲内のポートのうち 1 つでも所有しているプロセスすべてに対して実行しようとします。

OTEL_EBPF_AUTO_TARGET_EXEOTEL_EBPF_OPEN_PORT の両方のプロパティを設定した場合、OBI は両方の選択条件に一致する実行可能ファイルのみを選択します。

トレースプリンター形式

このオプションは、計装されたトレースを以下のいずれかの形式を使用して標準出力に出力します。

  • disabled: プリンターを無効化
  • text: 簡潔な 1 行テキストを出力
  • json: コンパクトな JSON オブジェクトを出力
  • json_indent: インデントされた JSON オブジェクトを出力

システムケーパビリティ

enforce_sys_capstrue に設定し、必要なシステムケーパビリティが不足している場合、OBI は起動を中止して不足しているケーパビリティをログに記録します。 このオプションを false に設定した場合、OBI は不足しているケーパビリティをログに記録するのみです。