設定

OpenTelemetry PHP Distro の設定オプション。

OpenTelemetry PHP Distro は、標準的な OpenTelemetry SDK の設定と Distro 固有のオプションをサポートしています。

設定方法

PHP プロセスで利用可能な環境変数を使用して設定します。

  • OTEL_*:OpenTelemetry 標準オプション
  • OTEL_PHP_*:Distro 固有のオプション

例:

export OTEL_EXPORTER_OTLP_ENDPOINT="https://your-endpoint:443/"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <token>"
export OTEL_PHP_LOG_LEVEL_STDERR="INFO"

OpenTelemetry オプション

Distro は標準的な OpenTelemetry PHP SDK オプションをサポートしています。

オプションデフォルト使用可能な値説明
OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318URLOTLP エンドポイント URL
OTEL_EXPORTER_OTLP_HEADERS(空)key=value,key2=value2OTLP リクエストヘッダー
OTEL_EXPORTER_OTLP_INSECUREfalsetrue または falseTLS 検証を無効化(テスト専用)
OTEL_EXPORTER_OTLP_CERTIFICATE(空)ファイルシステムパス(PEM)OTLP TLS 用の CA 証明書パス
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE(空)ファイルシステムパス(PEM)OTLP mTLS 用のクライアント証明書
OTEL_EXPORTER_OTLP_CLIENT_KEY(空)ファイルシステムパス(PEM)OTLP mTLS 用のクライアント鍵
OTEL_EXPORTER_OTLP_CLIENT_KEYPASS(空)文字列暗号化された OTLP クライアント鍵のパスフレーズ
OTEL_SERVICE_NAMEunknown_service文字列service.name リソース属性の値
OTEL_RESOURCE_ATTRIBUTES(空)key=value,key2=value2リソース属性
OTEL_TRACES_SAMPLERparentbased_always_onサンプラー名トレースサンプラー
OTEL_TRACES_SAMPLER_ARG(空)文字列/数値サンプラー引数
OTEL_LOG_LEVELinfoerror, warn, info, debugSDK 内部ログレベル

Distro 固有のオプション(OTEL_PHP_*) {#distro-specific-options-otelphp}

すべての OTEL_PHP_* オプションは環境変数または php.ini で設定できます。

php.ini の場合は、opentelemetry_distro. 接頭辞とオプション名の小文字を使用してください。

例:

export OTEL_PHP_ENABLED=true
opentelemetry_distro.enabled=true

全般設定

オプションデフォルト使用可能な値説明
OTEL_PHP_ENABLEDtruetrue または false自動ブートストラップを有効化
OTEL_PHP_OPENTELEMETRY_EXTENSION_EMULATION_ENABLEDtruetrue または falseエミュレートされた opentelemetry エクステンションの登録を有効化し、opentelemetry.so なしで自動計装を動作可能にする
OTEL_PHP_NATIVE_OTLP_SERIALIZER_ENABLEDtruetrue または falseネイティブ OTLP protobuf シリアライザーを有効化

非同期データ送信

オプションデフォルト使用可能な値説明
OTEL_PHP_ASYNC_TRANSPORTtruetrue または falseテレメトリーのバックグラウンド転送を有効化
OTEL_PHP_ASYNC_TRANSPORT_SHUTDOWN_TIMEOUT30s期間(mssmシャットダウン時のフラッシュタイムアウト
OTEL_PHP_MAX_SEND_QUEUE_SIZE2MB整数(オプションで BMBGB 付き)ワーカーごとの最大非同期バッファサイズ

ロギング

オプションデフォルト使用可能な値説明
OTEL_PHP_LOG_FILE(空)ファイルシステムパスログ出力ファイルパス
OTEL_PHP_LOG_LEVEL_FILEOFFOFF, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACEファイルシンクのログレベル
OTEL_PHP_LOG_LEVEL_STDERROFFOFF, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACEstderr シンクのログレベル
OTEL_PHP_LOG_LEVEL_SYSLOGOFFOFF, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACEsyslog シンクのログレベル
OTEL_PHP_LOG_FEATURES(空)FEATURE=LEVEL,...機能ごとのログレベル

トランザクションスパン

オプションデフォルト使用可能な値説明
OTEL_PHP_TRANSACTION_SPAN_ENABLEDtruetrue または falseWeb SAPI の自動ルートスパン
OTEL_PHP_TRANSACTION_SPAN_ENABLED_CLItruetrue または falseCLI の自動ルートスパン
OTEL_PHP_TRANSACTION_URL_GROUPS(空)カンマ区切りのワイルドカードURL グルーピングパターン

属性ベースの計装

オプションデフォルト使用可能な値説明
OTEL_PHP_ATTR_HOOKS_ENABLEDfalsetrue または false#[WithSpan] / #[SpanAttribute] 属性ベースのスパン生成を有効化。属性ベースの計装を参照してください。

スコープ付き依存関係ブリッジ

オプションデフォルト使用可能な値説明
OTEL_PHP_SCOPED_DEPS_BRIDGE_ENABLEDfalsetrue または falseアプリケーション自体の OpenTelemetry 使用が Distro のランタイム(トレーサープロバイダー、コンテキスト)を共有できるようにし、アプリケーションのスパンが Distro のトレースに参加できるようにします。下記の注記を参照してください。

推論スパン

オプションデフォルト使用可能な値説明
OTEL_PHP_INFERRED_SPANS_ENABLEDfalsetrue または false推論スパンを有効化
OTEL_PHP_INFERRED_SPANS_REDUCTION_ENABLEDtruetrue または false連続する重複フレームを削減
OTEL_PHP_INFERRED_SPANS_STACKTRACE_ENABLEDtruetrue または false推論スパンにスタックトレースを付与
OTEL_PHP_INFERRED_SPANS_SAMPLING_INTERVAL50ms期間(mssmスタックトレースのサンプリング間隔
OTEL_PHP_INFERRED_SPANS_MIN_DURATION0期間(mssm推論スパンの最小期間

中央設定(OpAMP)

オプションデフォルト使用可能な値説明
OTEL_PHP_OPAMP_ENDPOINT(空)/v1/opamp で終わる HTTP/HTTPS URLOpAMP エンドポイント
OTEL_PHP_OPAMP_HEADERS(空)key=value,key2=value2OpAMP リクエストヘッダー
OTEL_PHP_OPAMP_HEARTBEAT_INTERVAL30s期間(mssmOpAMP サーバーへのハートビートメッセージの送信間隔。
OTEL_PHP_OPAMP_POLLING_INTERVAL30s期間(mssmエージェントが更新された設定を取得するために OpAMP サーバーをポーリングする間隔。ハートビート間隔とは独立しています。
OTEL_PHP_OPAMP_SEND_TIMEOUT10s期間(mssmOpAMP 送信タイムアウト
OTEL_PHP_OPAMP_SEND_MAX_RETRIES30以上の整数リトライ回数
OTEL_PHP_OPAMP_SEND_RETRY_DELAY10s期間(mssmリトライ遅延
OTEL_PHP_OPAMP_INSECUREfalsetrue または falseTLS 検証を無効化(テスト専用)
OTEL_PHP_OPAMP_CERTIFICATE(空)ファイルシステムパス(PEM)OpAMP TLS 用の CA 証明書パス
OTEL_PHP_OPAMP_CLIENT_CERTIFICATE(空)ファイルシステムパス(PEM)OpAMP mTLS 用のクライアント証明書パス
OTEL_PHP_OPAMP_CLIENT_KEY(空)ファイルシステムパス(PEM)OpAMP mTLS 用のクライアント鍵パス
OTEL_PHP_OPAMP_CLIENT_KEYPASS(空)文字列暗号化されたクライアント鍵のパスフレーズ

サポータビリティ

オプションデフォルト使用可能な値説明
OTEL_PHP_SCOPED_DEPS_ENABLEDtruetrue または falseDistro がスコープ付き(名前空間接頭辞付き)またはオリジナルの依存関係を使用するかどうかを制御します。下記の注記を参照してください。

注記

  • バックグラウンド転送は OTLP HTTP/protobuf モードで動作します。
  • OTEL_PHP_AUTOLOAD_ENABLED は Distro ランタイムによって有効として強制されます。
  • Distro パッケージには複数の依存関係(OpenTelemetry SDK、各種自動計装パッケージ、およびそれらの推移的依存関係)が含まれています。 アプリケーション自体の依存関係との名前空間の衝突を防ぐため、Distro はデフォルトでスコープ付き(名前空間接頭辞付き)の依存関係を使用します。 スコープなしの依存関係にフォールバックするには、OTEL_PHP_SCOPED_DEPS_ENABLED=false を設定してください。

スコープ付き依存関係ブリッジの相互運用

デフォルトでは、Distro の OpenTelemetry ランタイムはスコープ付きです。 そのクラスは固有の名前空間接頭辞の下に配置され、アプリケーションが Composer 経由でインストールする標準的な OpenTelemetry\* クラスとは分離されています。 その結果、アプリケーション自体の OpenTelemetry 使用は別のランタイムに対して実行され、そのスパンはエクスポートされず、Distro のトレースにも接続されません。

OTEL_PHP_SCOPED_DEPS_BRIDGE_ENABLED=true を設定すると、2つのランタイムがブリッジされます。 アプリケーションの Composer オートローダーが実行される前に、Distro はスコープなしの OpenTelemetry\* API をスコープ付き実装にマッピングするクラスエイリアスを登録します。 これにより、アプリケーション自体の OpenTelemetry 使用は Distro のトレーサープロバイダーとコンテキストを透過的に使用するようになり、そのスパンはエクスポートされ、Distro のトレース内で正しく親子関係が設定されます。

このオプションは、スコープが無効な場合(OTEL_PHP_SCOPED_DEPS_ENABLED=false)は効果がありません。 スコープなしの場合、Distro はすでにスコープなしの OpenTelemetry\* クラスを使用しているため、ブリッジなしで共有が行われます。

ファイルベースの設定(宣言型)

環境変数のかわりに、OTEL_CONFIG_FILE 環境変数を設定することで、YAML 設定ファイルを使用して SDK を設定できます。

export OTEL_CONFIG_FILE=/path/to/otel-config.yaml

OTEL_CONFIG_FILE が設定されている場合:

  • SDK は個別の OTEL_* 環境変数のかわりに、YAML ファイルからすべての設定を読み込みます。
  • YAML ファイル内では環境変数の置換(${MY_VAR:-default})がサポートされています。
  • 中央設定(OpAMP)は自動的に無効化されます。ファイルベースの設定とリモート設定は相互に排他的です。
  • Distro 固有のオプション(OTEL_PHP_*)はネイティブエクステンションのオプションであり、SDK から独立しているため、引き続き動作します。

Distro リソースディテクター

Distro は telemetry.distro.nametelemetry.distro.version のリソース属性を追加する distro リソースディテクターを提供しています。 ファイルベースの設定でこれを有効にするには、resource.detection/development.detectors セクションに追加してください。

file_format: '1.0-rc.2'

resource:
  attributes:
    - name: service.name
      value: my-service
  detection/development:
    detectors:
      - distro: {}

propagator:
  composite:
    - tracecontext:
    - baggage:

tracer_provider:
  processors:
    - batch:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/traces

meter_provider:
  readers:
    - periodic:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/metrics

logger_provider:
  processors:
    - batch:
        exporter:
          otlp_http:
            endpoint: http://localhost:4318/v1/logs

完全な YAML スキーマについては、OpenTelemetry Configuration Schema を参照してください。

制限事項

  • ファイルベースの設定がアクティブな場合、中央設定(OpAMP)は利用できません。
  • Registry::registerResourceDetector() 経由で登録されたリソースディテクター(たとえば opentelemetry-php-contrib のクラウドプロバイダーディテクター)は自動的には有効化されません。 ComponentProvider を提供し、YAML の resource.detection/development.detectors セクションに明示的に記載する必要があります。