モジュール ngx_otel_module

設定例
ディレクティブ
     otel_exporter
     otel_service_name
     otel_trace
     otel_trace_context
     otel_span_name
     otel_span_attr
デフォルトのspan属性
埋め込み変数

ngx_otel_module モジュール (1.23.4) は、OpenTelemetry 分散トレーシングをサポートします。このモジュールは、W3Cコンテキスト伝搬とOTLP/gRPCエクスポートプロトコルをサポートしています。

このモジュールのソースコードはこちらで入手できます。ダウンロードとインストール手順はこちらにあります。

このモジュールは、1.25.3以降、プリビルドされたnginx-module-otel パッケージとしても、また当社の商用サブスクリプションの一部としてnginx-plus-module-otelパッケージとしても利用できます。

設定例

load_module modules/ngx_otel_module.so;

events {
}

http {

    otel_exporter {
        endpoint localhost:4317;
    }

    server {
        listen 127.0.0.1:8080;

        location / {
            otel_trace         on;
            otel_trace_context inject;

            proxy_pass http://backend;
        }
    }
}

ディレクティブ

構文 otel_exporter { ... }
デフォルト
コンテキスト http

OTelデータエクスポートパラメータを指定します

endpoint
テレメトリデータを受け取るOTLP/gRPCエンドポイントのアドレス。
interval
2回のエクスポート間の最大間隔。デフォルトは5秒です。
batch_size
ワーカーごとに1バッチで送信されるspanの最大数。デフォルトは512です。
batch_count
ワーカーあたりの保留中のバッチの数。この制限を超えるspanは破棄されます。デフォルトは4です。

otel_exporter {
    endpoint    localhost:4317;
    interval    5s;
    batch_size  512;
    batch_count 4;
}

構文 otel_service_name name;
デフォルト
otel_service_name unknown_service:nginx;
コンテキスト http

OTelリソースの「service.name」属性を設定します。

構文 otel_trace on | off | $variable;
デフォルト
otel_trace off;
コンテキスト httpserverlocation

OpenTelemetryトレーシングを有効または無効にします。変数を指定してディレクティブを有効にすることもできます。

split_clients "$otel_trace_id" $ratio_sampler {
              10%              on;
              *                off;
}

server {
    location / {
        otel_trace         $ratio_sampler;
        otel_trace_context inject;
        proxy_pass         http://backend;
    }
}

構文 otel_trace_context extract | inject | propagate | ignore;
デフォルト
otel_trace_context ignore;
コンテキスト httpserverlocation

traceparent/tracestateヘッダーの伝搬方法を指定します

extract
リクエストから既存のトレースコンテキストを使用します。これにより、トレース親spanの識別子が受信リクエストから継承されます。
inject
新しいコンテキストをリクエストに追加し、既存のヘッダーを上書きします(存在する場合)。
propagate
既存のコンテキストを更新します(extractinjectを組み合わせます)。
ignore
コンテキストヘッダーの処理をスキップします。

構文 otel_span_name name;
デフォルト
コンテキスト httpserverlocation

OTel spanの名前を定義します。デフォルトでは、リクエストの場所の名前です。名前には変数を含めることができます。

構文 otel_span_attr name value;
デフォルト
コンテキスト httpserverlocation

カスタムOTel span属性を追加します。値には変数を含めることができます。

デフォルトのspan属性

次のspan属性は自動的に追加されます

埋め込み変数

$otel_trace_id
現在のspanが属するトレースの識別子(例:56552bc4daa3bf39c08362527e1dd6c4
$otel_span_id
現在のspanの識別子(例:4c0b8531ec38ca59
$otel_parent_id
親spanの識別子(例:dc94d281b0f884ea
$otel_parent_sampled
親spanの「sampled」フラグ。「1」または「0」になります。