コードを使用してトレーシングライブラリをセットアップし、APM データを収集するように Agent を構成した後、オプションで統合サービスタグ付けのセットアップなど、必要に応じてトレーシングライブラリを構成してください。

PHP トレーサーは環境変数および INI 設定を使用して構成できます。

INI 設定は、php.ini ファイルで、または特定のウェブサーバーやバーチャルホストに対してなど、グローバルに構成できます。

: コードの自動インスツルメンテーションを使用する場合(推奨されるアプローチ)、インスツルメンテーションコードはどのユーザーコードよりも先に実行されることに注意してください。そのため、以下の環境変数および INI 設定はサーバーレベルで設定し、ユーザーコードが実行される前に PHP ランタイムで使用できるようにします。たとえば、putenv().env ファイルは機能しません。

Apache

For Apache with php-fpm, use the env directive in your www.conf configuration file to configure the PHP tracer, for example:

; ホスト環境変数 SOME_ENV 
; DD_AGENT_HOST として PHP プロセスへ渡す例
env[DD_AGENT_HOST] = $SOME_ENV
;  'my-app'  DD_SERVICE として PHP
; プロセスへ渡す例 
env[DD_SERVICE] = my-app
; または同等の INI 設定を使用
php_value datadog.service my-app```

サーバーコンフィギュレーション、仮想ホスト、ディレクトリ、または `.htaccess` ファイルから [`SetEnv`][2] を使用することも可能です。

```text
# バーチャルホストコンフィギュレーションで環境変数として
SetEnv DD_TRACE_DEBUG 1
# バーチャルホストコンフィギュレーションで INI 設定として
php_value datadog.service my-app

NGINX と PHP-FPM

注: PHP-FPM は env[...] ディレクティブの値として false をサポートしていません。true のかわりに 1 を、false のかわりに 0 を使用します。

NGINX の場合、php-fpm の www.conf ファイルの env ディレクティブを使用します。次に例を示します。

; ホスト環境変数 SOME_ENV を
; DD_AGENT_HOST として PHP プロセスへ渡す例
env[DD_AGENT_HOST] = $SOME_ENV
; 値 'my-app' を DD_SERVICE として PHP
; プロセスへ渡す例 
env[DD_SERVICE] = my-app
; または同等の INI 設定を使用
php_value[datadog.service] = my-app

: NGINX サーバーで APM を有効にしている場合、分散トレースが正常に機能するように opentracing_fastcgi_propagate_context 設定を適切に構成してください。詳細は、NGINX APM コンフィギュレーションを参照してください。

PHP CLI サーバー

コマンドラインで設定しサーバーを起動します。

DD_TRACE_DEBUG=1 php -d datadog.service=my-app -S localhost:8888

環境変数コンフィギュレーション

以下のテーブルには、トレースの構成用の環境変数と、対応する INI 設定 (利用可能な場合) およびデフォルトが示されています。

統合サービスタグ付け

DD_ENV
INI: datadog.env
Default: null
Set an application’s environment, for example: prod, pre-prod, stage. Starting version 0.90.0, changes to datadog.version at runtime through ini_set are also applied to the current root span.
DD_VERSION
INI: datadog.version
デフォルト: null
トレースとログにアプリケーションのバージョンを設定します (例: 1.2.36c44da202020.02.13)。バージョン 0.90.0 から、実行時に ini_set によって datadog.version に加えられた変更は、現在のルートスパンにも適用されます。
DD_SERVICE
INI: datadog.service
デフォルト: null
デフォルトのアプリ名。

トレース

DD_TRACE_ENABLED
INI: datadog.trace.enabled
デフォルト: 1
トレーサーをグローバルに有効化します
DD_PRIORITY_SAMPLING
INI: datadog.priority_sampling
デフォルト: 1
優先度付きサンプリングを有効にするかどうか。
DD_SERVICE_MAPPING
INI: datadog.service_mapping
デフォルト: null
APM インテグレーションのデフォルト名を変更します。1 つ以上のインテグレーションの名前変更を同時に行うことができます。例: DD_SERVICE_MAPPING=pdo:payments-db,mysqli:orders-db (インテグレーション名を参照してください)
DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED
INI: datadog.trace.128_bit_traceid_generation_enabled
Default: true
When true, the tracer generates 128 bit Trace IDs, and encodes Trace IDs as 32 lowercase hexadecimal characters with zero padding.
DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED
INI: datadog.trace.128_bit_traceid_logging_enabled
Default: 0
Enable printing of the full 128-bit trace ID when formatting trace IDs for logs correlation. When false (default), only the low 64-bits of the trace ID are printed, formatted as an integer. This means if the trace ID is only 64 bits, the full ID is printed. When true, the trace ID is printed as a full 128-bit trace ID in hexadecimal format. This is the case even if the ID itself is only 64 bits.
DD_TRACE_HEALTH_METRICS_ENABLED
INI: datadog.trace_health_metrics_enabled
デフォルト: false
有効な場合、トレーサーは DogStatsD に統計情報を送信します。また、ビルド時に sigaction が利用可能な場合、トレーサーはセグメンテーションの際にキャッチされない例外のメトリクスを送信します。
DD_TRACE_AGENT_CONNECT_TIMEOUT
INI: datadog.trace.agent_connect_timeout
デフォルト: 100
Agent 接続のタイムアウト (ミリ秒)
DD_TRACE_AGENT_PORT
INI: datadog.trace.agent_port
デフォルト: 8126
Agent のポート番号。Agent 構成receiver_portDD_APM_RECEIVER_PORT をデフォルトの 8126 以外に設定した場合、DD_TRACE_AGENT_PORTDD_TRACE_AGENT_URL をそれに一致させる必要があります。
DD_TRACE_AGENT_TIMEOUT
INI: datadog.trace.agent_timeout
デフォルト: 500
Agent リクエスト転送のタイムアウト (ミリ秒)。
DD_TRACE_AGENT_URL
INI: datadog.trace.agent_url
デフォルト: null
Agent の URL。DD_AGENT_HOSTDD_TRACE_AGENT_PORT よりも優先されます。例: https://localhost:8126 Agent 構成receiver_portDD_APM_RECEIVER_PORT をデフォルトの 8126 以外に設定した場合、DD_TRACE_AGENT_PORTDD_TRACE_AGENT_URL をそれに一致させる必要があります。
DD_TRACE_AUTO_FLUSH_ENABLED
INI: datadog.trace.auto_flush_enabled
デフォルト: 0
すべてのスパンが終了されたタイミングでトレーサーを自動的にフラッシュします。長時間実行されるプロセスをトレースするために、DD_TRACE_GENERATE_ROOT_SPAN=0 と併せて 1 に設定されます。
DD_TRACE_CLI_ENABLED
INI: datadog.trace.cli_enabled
デフォルト: 0
CLI から送られた PHP スクリプトのトレーシングを有効にします。 CLI スクリプトのトレーシングを参照してください。
DD_TRACE_DEBUG
INI: datadog.trace.debug
Default: 0
Enable debug mode. When 1, log messages are sent to the device or file set in the error_log INI setting. The actual value of error_log may be different than the output of php -i as it can be overwritten in the PHP-FPM/Apache configuration files. Takes precedence over DD_TRACE_LOG_LEVEL if active.
DD_TRACE_LOG_LEVEL
INI: datadog.trace.log_level
Default: Error
Sets a precise log level. The log level follows RUST_LOG conventions; accepted log levels are error, warn, info, debug, trace and off.
DD_TRACE_LOG_FILE
INI: datadog.trace.log_file
Default: ``
Specifies a log file. If none is specified, logs go to the default PHP error location. To debug datadog-ipc-helper issues (for example, submission of telemetry), you must specify the log file.
DD_TRACE_FORKED_PROCESS
INI: datadog.trace.forked_process
デフォルト: 1
フォークされたプロセスをトレースするかどうかを示します。1 に設定するとフォークされたプロセスをトレースし、0 に設定するとフォークされたプロセスのトレースを無効にします。0 に設定した場合でも、コード内で ini_set("datadog.trace.enabled", "1"); を使って手動でプロセスのトレースを再有効化することができますが、新しいトレースとして表示されることになります。フォークされたプロセスのトレースは、DD_TRACE_FORKED_PROCESSDD_DISTRIBUTED_TRACING の両方が 1 (オン) に構成されている場合にのみ、全体の分散型トレースとして表示されるようになりました。
DD_TRACE_GENERATE_ROOT_SPAN
INI: datadog.trace.generate_root_span
デフォルト: 1
トップレベルのスパンを自動生成します。長時間実行されるプロセスをトレースするために、DD_TRACE_AUTO_FLUSH_ENABLED=1 と併せて 0 に設定されます。
DD_TRACE_HEADER_TAGS
INI: datadog.trace.header_tags
デフォルト: null
ルートスパンでタグとして報告されたヘッダー名の CSV。
DD_TRACE_HTTP_CLIENT_SPLIT_BY_DOMAIN
INI: datadog.trace.http_client_split_by_domain
デフォルト: 0
HTTP リクエストのサービス名を host-<hostname> に設定します。例: https://datadoghq.com に対する curl_exec() コールのサービス名は、デフォルトのサービス名 curl ではなく host-datadoghq.com となります。
DD_TRACE_MEASURE_COMPILE_TIME
INI: datadog.trace.measure_compile_time
デフォルト: 1
リクエストのコンパイル時間 (ミリ秒) をトップレベルのスパン上に記録します。
DD_TRACE_REMOVE_AUTOINSTRUMENTATION_ORPHANS
INI: datadog.trace.remove_autoinstrumentation_orphans
デフォルト: false

自動インスツルメンテーションによって生成された孤児スパンを自動的に削除します。現在のところ、これは Laravel Horizon のコンテキストで使用される一部の Redis と Laravel の呼び出しにのみ適用されます。バージョン 0.88.0 で追加されました。
注: これらの孤児スパンは、フラッシュされますが、トレースには記録されません。さらに、この構成オプションで削除される特定の単一スパンのトレースは次の通りです。
  • laravel.event.handle
  • laravel.provider.load
  • Predis.Client.__construct
  • Predis.Client.executeCommand
  • Predis.Pipeline.executePipeline
DD_TRACE_REMOVE_ROOT_SPAN_LARAVEL_QUEUE
INI: datadog.trace.remove_root_span_laravel_queue
デフォルト: true
Laravel Queue/Horizon コマンドの root スパン生成を自動的に無効にし (DD_TRACE_GENERATE_ROOT_SPAN を参照)、自動フラッシュを有効にします (DD_TRACE_AUTO_FLUSH_ENABLED を参照)。バージョン 0.88.0 で追加されました。
DD_TRACE_LARAVEL_QUEUE_DISTRIBUTED_TRACING
INI: datadog.trace.laravel_queue_distributed_tracing
Default: true
Disables the creation of an additional laravel.queue.process span and relies solely on span links. Added in version 0.93.0.
DD_TRACE_RESOURCE_URI_FRAGMENT_REGEX
INI: datadog.trace.resource_uri_fragment_regex
デフォルト: null
ID に対応するパスフラグメントを特定する正規表現のCSV (リソース名を正規化された URI にマッピング を参照してください)。
DD_TRACE_RESOURCE_URI_MAPPING_INCOMING
INI: datadog.trace.resource_uri_mapping_incoming
デフォルト: null
受信リクエストのリソース名を正規化するための URI マッピングの CSV (リソース名を正規化された URI にマッピング を参照してください)。
DD_TRACE_RESOURCE_URI_MAPPING_OUTGOING
INI: datadog.trace.resource_uri_mapping_outgoing
デフォルト: null
発信リクエストのリソース名を正規化するための URI マッピングの CSV (リソース名を正規化された URI にマッピング を参照してください)。
DD_TRACE_RETAIN_THREAD_CAPABILITIES
INI: datadog.trace.retain_thread_capabilities
デフォルト: 0
Linux で動作します。true に設定すると、有効なユーザー ID を変更しても Datadog のバックグラウンドスレッド機能を維持することができます。このオプションはほとんどの設定には影響しませんが、一部のモジュールで影響が出る場合があります。現時点で Datadog が確認している限りでは、Apache の mod-ruid2setuid() や類似の syscall を呼び出した場合に影響が生じ、クラッシュや機能の不具合につながる可能性があります。

注: このオプションを有効にすると、セキュリティが損なわれる可能性があります。このオプションは単独ならセキュリティ上のリスクをもたらす心配はありません。しかし、Web サーバーや PHP がフル機能で起動されている場合はバックグラウンドスレッドが元の機能を維持しているため、攻撃者は PHP や Web サーバーの脆弱性を悪用して比較的容易に権限を昇格できる可能性があります。Datadog では、setcap ユーティリティを使用して Web サーバーの機能を制限することをお勧めしています。
DD_HTTP_SERVER_ROUTE_BASED_NAMING
INI: datadog.http_server_route_based_naming
デフォルト: true
HTTP サーバーリクエストのルートベースの命名を有効にします。インテグレーション固有の root スパンのリソース名フォーマットを使用するには true に設定します。false に設定すると、HTTP メソッドとパスが代わりに使用されます。バージョン 0.89.0 で追加されました。
DD_TRACE_SAMPLE_RATE
INI: datadog.trace.sample_rate
Default: -1
The sampling rate for the traces, a number between 0.0 and 1.0. The default value of -1 defers control of sampling to the Datadog Agent.
DD_TRACE_RATE_LIMIT
INI: datadog.trace.rate_limit
デフォルト: 0
1 秒間にサンプリングするスパンの最大数。Apache または FPM プール内のすべてのプロセスは、同じリミッターを共有します。未設定 (0) の場合、レート制限は Datadog Agent に委ねられます。
DD_TRACE_URL_AS_RESOURCE_NAMES_ENABLED
INI: datadog.trace.url_as_resource_names_enabled
デフォルト: 1
リソース名として URL を有効にします (リソース名を正規化された URI にマッピングを参照してください)。
DD_TRACE_HTTP_URL_QUERY_PARAM_ALLOWED
INI: datadog.trace.http_url_query_param_allowed
デフォルト: *
URL の一部として収集するクエリパラメータのカンマ区切りリスト。パラメータを収集しない場合は空、すべてのパラメータを収集する場合は * を設定します。バージョン 0.74.0 で追加されました。
DD_TRACE_HTTP_POST_DATA_PARAM_ALLOWED
INI: datadog.trace.http_post_data_param_allowed
デフォルト: “"
収集される HTTP POST データフィールドのカンマ区切りリスト。POST 送信された値を収集しない場合は、空のままにします。この値をワイルドカードの * に設定した場合、POST 送信されたすべてのデータが収集されますが、DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP 難読化ルールに一致するフィールドの値は編集されます。特定のフィールドが指定された場合、これらのフィールドの値のみが表示され、その他すべてのフィールドの値は編集されます。バージョン 0.86.0 で追加されました。
:
  • 投稿されたデータは qux=quux&foo[bar][password]=Password12!&foo[bar][username]=admin&foo[baz][bar]=qux&foo[baz][key]=value
  • DD_TRACE_HTTP_POST_DATA_PARAM_ALLOWEDfoo.baz,foo.bar.password に設定されている
  • このシナリオでは、収集されたメタデータは次のとおりです。
    • http.request.foo.bar.password=Password12!
    • http.request.foo.bar.username=<redacted>
    • http.request.foo.baz.bar=qux
    • http.request.foo.baz.key=value
    • http.request.qux=<redacted>
DD_TRACE_RESOURCE_URI_QUERY_PARAM_ALLOWED
INI: datadog.trace.resource_uri_query_param_allowed
デフォルト: *
リソース URI の一部として収集するクエリパラメータのカンマ区切りリスト。パラメータを収集しない場合は空、すべてのパラメータを収集する場合は * を設定します。バージョン 0.74.0 で追加されました。
DD_TRACE_CLIENT_IP_ENABLED
INI: datadog.trace.client_ip_enabled
デフォルト: false
クライアント側で IP 収集を有効にします。バージョン 0.84.0 で追加されました。
DD_TRACE_CLIENT_IP_HEADER
INI: datadog.trace.client_ip_header
デフォルト: null
クライアント IP の収集に使用する IP ヘッダー。例: x-forwarded-for。バージョン 0.84.0 (ASM を使用している場合は 0.76.0) で追加されました。
DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP
INI: datadog.trace.obfuscation_query_string_regexp
デフォルト:
(?i)(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|bearer(?:\s|%20)+[a-z0-9\._\-]|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+\/=-]|%3D|%2F|%2B)+)?|[\-]{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY[\-]{5}[^\-]+[\-]{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY|ssh-rsa(?:\s|%20)*(?:[a-z0-9\/\.+]|%2F|%5C|%2B){100,}

URL の一部として含まれるクエリ文字列を難読化するために使用される正規表現。この式は、HTTP POST データの編集処理でも使用されます。バージョン 0.76.0 で追加されました。

DD_TRACE_SAMPLING_RULES
INI: datadog.trace.sampling_rules
デフォルト: null
JSON でエンコードされた文字列で、サンプリングレートを構成します。例: サンプルレートを 20% に設定する場合は '[{"sample_rate": 0.2}]' となります。‘a’ ではじまる、スパン名が ‘b’ のサービスのサンプルレートを 10% に、その他のサービスのサンプルレートを 20% に設定する場合は '[{"service": "a.*", "name": "b", "sample_rate": 0.1}, {"sample_rate": 0.2}]' のようになります (インテグレーション名 を参照してください) 。二重引用符 (") のエスケープ処理による問題を防ぐため、JSON オブジェクトは必ず単一引用符 (') で囲むようにしてください。サービスのマッチングでは DD_SERVICE_MAPPING が考慮されます (バージョン 0.90.0 から)。名前とサービスは有効な正規表現でなければなりません。有効な正規表現でないルールは無視されます。
DD_TRACE_SAMPLING_RULES_FORMAT
INI: datadog.trace.sampling_rules_format
Default: glob
Rules the format (regex or glob) used for sampling rules defined by DD_TRACE_SAMPLING_RULES. Added in version 0.98.0 and deprecated as of 1.0.0.
DD_TRACE_SPANS_LIMIT
INI: datadog.trace.spans_limit
Default: 1000
1 つのトレース内で生成されるスパンの最大数。最大数に達すると、その後スパンは生成されなくなります。上限を増大すると、保留中のトレースに使用されるメモリの量が増加し、許可されるメモリの PHP 最大量に達する可能性があります。許可されるメモリの最大量は、PHP INI システム設定の memory_limit で増加できます。
DD_SPAN_SAMPLING_RULES
INI: datadog.span_sampling_rules
デフォルト: null
サンプリングレートを構成するための JSON エンコードされた文字列。ルールは、スパンのサンプルレートを決定するために構成された順序で適用されます。sample_rate の値は 0.0 から 1.0 の間でなければなりません (この値を含む)。
: サービス名 ‘my-service’、演算子名 ‘http.request’ に対して、スパンのサンプルレートを 50% に設定、最大で 50 トレース/秒に設定: '[{"service": "my-service", "name": "http.request", "sample_rate":0.5, "max_per_second": 50}]'JSON オブジェクトは、ダブルクォート (') 文字のエスケープの問題を避けるために、シングルクォート (") で囲む必要があります
詳しくは、取り込みメカニズムをご覧ください。

Agent

DD_AGENT_HOST
INI: datadog.agent_host
デフォルト: localhost
Agent ホスト名。
DD_AUTOFINISH_SPANS
INI: datadog.autofinish_spans
デフォルト: 0
トレーサーがフラッシュした際にスパンが自動的に終了するかどうか。
DD_DISTRIBUTED_TRACING
INI: datadog.distributed_tracing
デフォルト: 1
分散型トレーシングを有効にするかどうか。
DD_DOGSTATSD_URL
INI: datadog.dogstatsd_url
デフォルト: null
DogStatsD への接続をネゴシエートするために使用する URL。この設定は DD_AGENT_HOSTDD_DOGSTATSD_PORT よりも優先されます。udp:// または unix:// スキーマのみをサポートします。
DD_DOGSTATSD_PORT
INI: datadog.dogstatsd_port
デフォルト: 8125
DD_TRACE_HEALTH_METRICS_ENABLED が有効な場合に、DogStatsD への接続をネゴシエートするために DD_AGENT_HOST と組み合わせて使用されるポート。
DD_TAGS
INI: datadog.tags
デフォルト: null
key1:value1,key2:value2 など、すべてのスパンに設定されるタグ。
DD_INSTRUMENTATION_TELEMETRY_ENABLED
INI: datadog.instrumentation_telemetry_enabled
デフォルト: true
Datadog は、製品の改良のため、システムの環境・診断情報を収集することがあります。false の場合、このテレメトリーデータは収集されません。

データベース

DD_TRACE_DB_CLIENT_SPLIT_BY_INSTANCE
INI: datadog.trace.db_client_split_by_instance
Default: 0
Set the service name of HTTP requests to pdo-<hostname>. For example, a PDO->query() call to a database host datadoghq.com has the service name pdo-datadoghq.com instead of the default service name of pdo.
DD_TRACE_REDIS_CLIENT_SPLIT_BY_HOST
INI: datadog.trace.redis_client_split_by_host
デフォルト: 0
Redis クライアントオペレーションのサービス名を redis-<hostname> に設定します。

データベースモニタリング

DD_DBM_PROPAGATION_MODE
INI: datadog.dbm_propagation_mode
デフォルト: 'disabled'
'service' または 'full' に設定すると、APM から送信されるデータとデータベースモニタリング製品との連携が可能になります。
'service' オプションは、DBM と APM のサービス間の接続を有効にします。Postgres、MySQL、SQLServer で利用可能です。
'full' オプションは、データベースクエリイベントを持つデータベーススパン間の接続を可能にします。Postgres と MySQL で利用可能です。

Logs

DD_LOGS_INJECTION
INI: datadog.logs_injection
デフォルト: 0
アプリケーションログへの相関識別子の自動挿入を有効または無効にします。バージョン 0.89.0 で追加されました
詳しくはログ相関のドキュメントを参照してください。

OpenTelemetry

DD_TRACE_OTEL_ENABLED
Enables or disables OpenTelemetry based tracing, both for custom or automatic instrumentation.
Valid values are: true or false.
Default: false

プロファイリング

DD_PROFILING_ENABLED
INI: datadog.profiling.enabledINI は 0.82.0 から利用可能です。
デフォルト: 1
Datadog プロファイラーを有効にします。バージョン 0.69.0 で追加されました。PHP プロファイラーを有効にする]4を参照してください。バージョン 0.81.0 以降では、デフォルトで 0 になっています。
DD_PROFILING_ENDPOINT_COLLECTION_ENABLED
INI: datadog.profiling.endpoint_collection_enabledINI は 0.82.0 から利用可能です。
デフォルト: 1
プロファイルでエンドポイントデータの収集を有効にするかどうか。バージョン 0.79.0 で追加されました。
DD_PROFILING_ALLOCATION_ENABLED
INI: datadog.profiling.allocation_enabled。INI は 0.88.0 以降で利用です。
デフォルト: 1
アロケーションサイズとアロケーションバイトのプロファイルタイプを有効にします。バージョン 0.88.0 で追加されました。アクティブな JIT が検出されると、ZendEngine の制限により PHP のバージョン 8.0.0-8.1.20 および 8.2.0-8.2.7 ではアロケーションプロファイリングが無効になります。
: これは 0.84 から利用できるようになった DD_PROFILING_EXPERIMENTAL_ALLOCATION_ENABLED 環境変数 (datadog.profiling.experimental_allocation_enabled INI 設定) よりも優先されます。両方が設定されている場合は、こちらが優先されます。
DD_PROFILING_EXPERIMENTAL_FEATURES_ENABLED
INI: datadog.profiling.experimental_features_enabled. INI available since 0.96.0.
Default: 0
Enable all experimental features.
Note: This setting overrides the more specific configurations and if enabled, toggling other experimental configuration settings won’t have an effect.
DD_PROFILING_EXPERIMENTAL_CPU_TIME_ENABLED
INI: datadog.profiling.experimental_cpu_time_enabled。INI は 0.82.0 から利用可能です。
デフォルト: 1
試験的 CPU プロファイルタイプを有効にします。バージョン 0.69.0 に追加されています。バージョン 0.76 以下では、デフォルトで 0 になっていました。
DD_PROFILING_EXCEPTION_ENABLED
INI: datadog.profiling.exception_enabled. INI available since 0.96.0.
Default: 1
Enable the exception profile type. Added in version 0.92.0 and GA in version 0.96.0.

Note: This supersedes the DD_PROFILING_EXPERIMENTAL_EXCEPTION_ENABLED environment variable (datadog.profiling.experimental_exception_enabled INI setting), which was available since 0.92. If both are set, this one takes precedence.
DD_PROFILING_EXCEPTION_MESSAGE_ENABLED
INI: datadog.profiling.exception_message_enabled. INI available since 0.98.0.
Default: 0
Enable the collection of exception messages with exception samples.

Note: Please be aware that your exception messages might contain PII (Personal Identifiable Information), which is the reason why this setting is default disabled.
DD_PROFILING_EXCEPTION_SAMPLING_DISTANCE
INI: datadog.profiling.exception_sampling_distance. INI available since 0.96.0.
Default: 100
Configure the sampling distance for exceptions. The higher the sampling distance, the fewer samples are created and the lower the overhead.

Note: This supersedes the DD_PROFILING_EXPERIMENTAL_EXCEPTION_SAMPLING_DISTANCE environment variable (datadog.profiling.experimental_exception_sampling_distance INI setting), which was available since 0.92. If both are set, this one takes precedence.
DD_PROFILING_TIMELINE_ENABLED
INI: datadog.profiling.timeline_enabled. INI available since 0.98.0.
Default: 1
Enable the timeline profile type. Added in version 0.89.0.

Note: This supersedes the DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED environment variable (datadog.profiling.experimental_timeline_enabled INI setting), which was available since 0.89 (default 0). If both are set, this one takes precedence.
DD_PROFILING_LOG_LEVEL
INI: datadog.profiling.log_level。INI は 0.82.0 から利用可能です。
デフォルト: off
プロファイラーのログレベルを設定します。許可される値は offerrorwarninfodebugtrace です。プロファイラーのログは、プロセスの標準エラーストリームに書き込まれます。バージョン 0.69.0 に追加されています。

Trace context propagation

分散トレースコンテキストの伝播を目的としてヘッダーの抽出と挿入を行うための PHP トレーシングライブラリの構成については、トレースコンテキストの伝播をお読みください。

DD_TRACE_PROPAGATION_STYLE_INJECT
INI: datadog.trace.propagation_style_inject
Default: Datadog,tracecontext
Propagation styles to use when injecting tracing headers. If using multiple styles, comma separate them. The supported styles are:
DD_TRACE_PROPAGATION_STYLE_EXTRACT
INI: datadog.trace.propagation_style_extract
Default: Datadog,tracecontext,b3multi,B3 single header
Propagation styles to use when extracting tracing headers. If using multiple styles, comma separate them. The supported styles are:

インテグレーション

DD_TRACE_<INTEGRATION>_ENABLED
INI: datadog.trace.<INTEGRATION>_enabled
デフォルト: 1
インテグレーションを有効または無効にします。すべてのインテグレーションはデフォルトで有効になっています (インテグレーション名を参照してください)。
DD_TRACE_WORDPRESS_ADDITIONAL_ACTIONS
INI: datadog.trace.wordpress_additional_actions
デフォルト: null
インスツルメンテーションする WordPress アクションフックのカンマ区切りリスト。この機能は DD_TRACE_WORDPRESS_ENHANCED_INTEGRATION が有効な場合にのみ利用可能です。バージョン 0.91.0 で追加されました。
DD_TRACE_WORDPRESS_CALLBACKS
INI: datadog.trace.wordpress_callbacks
Default: true for PHP tracer >= v1.0
Enables WordPress action hook callbacks instrumentation. This feature is only available when DD_TRACE_WORDPRESS_ENHANCED_INTEGRATION is enabled. Added in version 0.91.0.
DD_OPENAI_SERVICE
INI: datadog.openai.service
Default: DD_SERVICE
The service name reported by default for OpenAI requests.
DD_OPENAI_LOGS_ENABLED (beta)
INI: datadog.openai.logs_enabled
Default: false
Enable collection of prompts and completions as logs. You can adjust the rate of prompts and completions collected using the sample rate configuration described below.
DD_OPENAI_METRICS_ENABLED
INI: datadog.openai.metrics_enabled
Default: true
Enable collection of OpenAI metrics.
If the Datadog Agent is configured to use a non-default StatsD hostname or port, use DD_DOGSTATSD_URL to configure the OpenAI metrics collection.
DD_OPENAI_SPAN_CHAR_LIMIT (beta)
INI: datadog.openai.span_char_limit
Default: 128
Configure the maximum number of characters for the following data within span tags:
  • Prompt inputs and completions
  • Message inputs and completions
  • Embedding inputs

Text exceeding the maximum number of characters is truncated to the character limit and has ... appended to the end.

DD_OPENAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE (beta)
INI: datadog.openai.span_prompt_completion_sample_rate
Default: 1.0
Configure the sample rate for the collection of prompts and completions as span tags.
DD_OPENAI_LOG_PROMPT_COMPLETION_SAMPLE_RATE (beta)
INI: datadog.openai.log_prompt_completion_sample_rate
Default: 0.1
Configure the sample rate for the collection of prompts and completions as logs.

インテグレーション名

以下の表は、各インテグレーションに紐付くデフォルトのサービス名をまとめたものです。サービス名は DD_SERVICE_MAPPING に変更してください。

インテグレーション固有のコンフィギュレーションを設定する場合は、DD_TRACE_<INTEGRATION>_ENABLED 形式で名前を付けてください。例: Laravel の場合、 DD_TRACE_LARAVEL_ENABLED

インテグレーションサービス名
AMQPamqp
CakePHPcakephp
CodeIgnitercodeigniter
cURLcurl
ElasticSearchelasticsearch
Eloquenteloquent
Guzzleguzzle
Laminaslaminas
Laravellaravel
Laravel Queuelaravelqueue
Lumenlumen
Memcachememcache
Memcachedmemcached
Mongomongo
MongoDBmongodb
Mysqlimysqli
Nettenette
OpenAIopenai
PCNTLpcntl
PDOpdo
PhpRedisphpredis
Predispredis
Psr18psr18
Roadrunnerroadrunner
Sql Serversqlsrv
Symfonysymfony
WordPresswordpress
Yiiyii
ZendFrameworkzendframework

リソース名を正規化された URI にマッピング

Note that setting any of the following: DD_TRACE_RESOURCE_URI_FRAGMENT_REGEX, DD_TRACE_RESOURCE_URI_MAPPING_INCOMING, and DD_TRACE_RESOURCE_URI_MAPPING_OUTGOING will opt-in to the new resource normalization approach and any value in DD_TRACE_RESOURCE_URI_MAPPING will be ignored.

HTTP サーバーとクライアントインテグレーションでは、URL はクエリ文字列が URL から削除された状態で、トレースリソース名を作成するために <HTTP_REQUEST_METHOD> <NORMALIZED_URL> の形式で使用されます。URL を正規化し 1 つのリソースの下に一般的なエンドポイントをグループ化することで、自動インスツルメンテーションされないカスタムフレームワークにおける可視性を向上することができます。

HTTP リクエストリソース名
GET request to /foo?a=1&b=2GET /foo
POST request to /bar?foo=barPOST /bar

数値 ID、UUID (ダッシュの有無不問)、32〜512 ビットの 16 進数ハッシュは、自動的に ? に置換されます。

URL (GET リクエスト)リソース名
/user/123/showGET /user/?/show
/widget/b7a992e0-3300-4030-8617-84553b11c993GET /widget/?
/api/v2/b7a992e033004030861784553b11c993/123GET /api/v2/?/?
/book/0dbf3596GET /book/?

DD_TRACE_URL_AS_RESOURCE_NAMES_ENABLED=0 を使用してこの機能をオフにすることも可能です。

URL からリソースへのマッピングをカスタマイズ

適用された自動正規化ではカバーされないケースがいくつかあります。

URL (GET リクエスト)考えられるリソース名
/using/prefix/id123/for/idGET /using/prefix/?/for/id
/articles/slug-of-titleGET /articles/?
/cities/new-york/riversGET /cities/?/rivers
/nested/cities/new-york/riversGET /nested/cities/?/rivers

自動正規化ではカバーされないシナリオには、次の 2 つのクラスがあります。

  • 正規化するパスフラグメントには再現可能なパターンがあり、URL の任意の部分で存在できます(上記の例では id<number>)。このシナリオは、次の DD_TRACE_RESOURCE_URI_FRAGMENT_REGEX 設定でカバーされます。
  • 何でもパスフラグメントになれますが、前のパスフラグメントは値が正規化されるべきことを示します。たとえば /cities/new-york は、new-york は都市名のため正規化する必要があることが分かります。このシナリオは以下の設定でカバーされます DD_TRACE_RESOURCE_URI_MAPPING_INCOMINGDD_TRACE_RESOURCE_URI_MAPPING_OUTGOING(それぞれ、受信リクエストと発信リクエスト)。
DD_TRACE_RESOURCE_URI_FRAGMENT_REGEX

この設定は、各パスフラグメントに個々に適用される正規表現の CSV です。たとえば、 /using/prefix/id123/for/id のパスとして DD_TRACE_RESOURCE_URI_FRAGMENT_REGEX^id\d+$ に設定すると、各フラグメント(usingprefixid123forid)に正規表現が適用されます。

URL正規表現考えられるリソース名
/using/prefix/id123/for/id^id\d+$GET /using/prefix/?/for/id

この変数の形式は CSV であるため、カンマ記号 , はエスケープされず、正規表現では使用できないことに注意してください。

DD_TRACE_RESOURCE_URI_MAPPING_INCOMING および DD_TRACE_RESOURCE_URI_MAPPING_OUTGOING

この設定はワイルドカード * を含むことのできるパターンの CSV です。たとえば、パターン cities/* を追加すると、URL を分析中にフラグメント cities が見つかる度に、次のフラグメントがある場合 ? に置き換えられます。パターンは深さを問わず適用されるため、次の規則を適用することで、上記の表の /cities/new-york/nested/cities/new-york の両方が正規化されます。

パターンは特定のフラグメントの一部に適用することもできます。たとえば、path/*-fix は URL /some/path/changing-fix/nested/some/path/?-fix/nested に正規化します。

DD_TRACE_RESOURCE_URI_MAPPING_INCOMING は受信リクエスト(ウェブフレームワークなど)のみに適用され、DD_TRACE_RESOURCE_URI_MAPPING_OUTGOING は発信リクエスト(curlguzzle リクエストなど)のみに適用されることに、ご注意ください。

open_basedir 制限

open_basedir 設定が使用される場合、許可されるディレクトリに /opt/datadog-php を追加する必要があります。 アプリケーションを Docker コンテナで実行する場合は、許可されるディレクトリにパス /proc/self も追加する必要があります。

その他の参考資料