diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dafd34bb619..4f02422dbb5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,13 +8,14 @@ stages: - macrobenchmarks-notify # Config Registry CI jobs -validate_supported_configurations_local_file: - extends: .validate_supported_configurations_local_file +validate_supported_configurations_v2_local_file: + extends: .validate_supported_configurations_v2_local_file variables: LOCAL_JSON_PATH: "packages/dd-trace/src/config/supported-configurations.json" + BACKFILLED: "true" -update_central_configurations_version_range: - extends: .update_central_configurations_version_range +update_central_configurations_version_range_v2: + extends: .update_central_configurations_version_range_v2 variables: LOCAL_REPO_NAME: "dd-trace-js" LOCAL_JSON_PATH: "packages/dd-trace/src/config/supported-configurations.json" diff --git a/eslint-rules/eslint-env-aliases.mjs b/eslint-rules/eslint-env-aliases.mjs index 07c9453503f..75a601b9f41 100644 --- a/eslint-rules/eslint-env-aliases.mjs +++ b/eslint-rules/eslint-env-aliases.mjs @@ -8,12 +8,17 @@ const supportedConfigsPath = path.resolve( path.dirname(__filename), '../packages/dd-trace/src/config/supported-configurations.json' ) -const { aliases } = JSON.parse(fs.readFileSync(supportedConfigsPath, 'utf8')) +const { supportedConfigurations } = JSON.parse(fs.readFileSync(supportedConfigsPath, 'utf8')) const aliasToCanonical = {} -for (const canonical of Object.keys(aliases)) { - for (const alias of aliases[canonical]) { - aliasToCanonical[alias] = canonical +for (const [canonical, entries] of Object.entries(supportedConfigurations)) { + for (const entry of entries) { + if (entry.aliases && !entry.deprecated) { + for (const alias of entry.aliases) { + aliasToCanonical[alias] ??= [] + aliasToCanonical[alias].push(canonical) + } + } } } diff --git a/index.d.ts b/index.d.ts index 822016d22f1..5f419d201e7 100644 --- a/index.d.ts +++ b/index.d.ts @@ -150,6 +150,7 @@ interface Tracer extends opentracing.Tracer { * Extends DatadogNodeServerProvider with Remote Config integration for dynamic flag configuration. * Enable with DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true. * + * @env DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED * @beta This feature is in preview and not ready for production use */ openfeature: tracer.OpenFeatureProvider; @@ -469,6 +470,8 @@ declare namespace tracer { /** * Used to disable APM Tracing when using standalone products * @default true + * @env DD_APM_TRACING_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ apmTracingEnabled?: boolean @@ -476,46 +479,62 @@ declare namespace tracer { * Whether to enable trace ID injection in log records to be able to correlate * traces with logs. * @default false + * @env DD_LOGS_INJECTION + * Programmatic configuration takes precedence over the environment variables listed above. */ logInjection?: boolean, /** * Whether to enable startup logs. - * @default true + * @default false + * @env DD_TRACE_STARTUP_LOGS + * Programmatic configuration takes precedence over the environment variables listed above. */ startupLogs?: boolean, /** * The service name to be used for this program. If not set, the service name * will attempted to be inferred from package.json + * @env DD_SERVICE, OTEL_SERVICE_NAME + * Programmatic configuration takes precedence over the environment variables listed above. */ service?: string; /** * Provide service name mappings for each plugin. + * @env DD_SERVICE_MAPPING + * Programmatic configuration takes precedence over the environment variables listed above. */ serviceMapping?: { [key: string]: string }; /** * The url of the trace agent that the tracer will submit to. * Takes priority over hostname and port, if set. + * @env DD_TRACE_AGENT_URL + * Programmatic configuration takes precedence over the environment variables listed above. */ url?: string; /** * The address of the trace agent that the tracer will submit to. * @default '127.0.0.1' + * @env DD_AGENT_HOST + * Programmatic configuration takes precedence over the environment variables listed above. */ hostname?: string; /** * The port of the trace agent that the tracer will submit to. * @default 8126 + * @env DD_TRACE_AGENT_PORT + * Programmatic configuration takes precedence over the environment variables listed above. */ port?: number | string; /** * Whether to enable profiling. + * @env DD_PROFILING_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ profiling?: boolean @@ -525,29 +544,39 @@ declare namespace tracer { dogstatsd?: { /** * The hostname of the Dogstatsd agent that the metrics will submitted to. + * @env DD_DOGSTATSD_HOST + * Programmatic configuration takes precedence over the environment variables listed above. */ hostname?: string /** * The port of the Dogstatsd agent that the metrics will submitted to. * @default 8125 + * @env DD_DOGSTATSD_PORT + * Programmatic configuration takes precedence over the environment variables listed above. */ port?: number }; /** * Set an application’s environment e.g. prod, pre-prod, stage. + * @env DD_ENV + * Programmatic configuration takes precedence over the environment variables listed above. */ env?: string; /** * The version number of the application. If not set, the version * will attempted to be inferred from package.json. + * @env DD_VERSION + * Programmatic configuration takes precedence over the environment variables listed above. */ version?: string; /** * Controls the ingestion sample rate (between 0 and 1) between the agent and the backend. + * @env DD_TRACE_SAMPLE_RATE, OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG + * Programmatic configuration takes precedence over the environment variables listed above. */ sampleRate?: number; @@ -555,6 +584,8 @@ declare namespace tracer { * Global rate limit that is applied on the global sample rate and all rules, * and controls the ingestion rate limit between the agent and the backend. * Defaults to deferring the decision to the agent. + * @env DD_TRACE_RATE_LIMIT + * Programmatic configuration takes precedence over the environment variables listed above. */ rateLimit?: number, @@ -564,24 +595,32 @@ declare namespace tracer { * a trace's `service` and `name`, and a corresponding `sampleRate`. If not * specified, will defer to global sampling rate for all spans. * @default [] + * @env DD_TRACE_SAMPLING_RULES + * Programmatic configuration takes precedence over the environment variables listed above. */ samplingRules?: SamplingRule[] /** * Span sampling rules that take effect when the enclosing trace is dropped, to ingest single spans * @default [] + * @env DD_SPAN_SAMPLING_RULES, DD_SPAN_SAMPLING_RULES_FILE + * Programmatic configuration takes precedence over the environment variables listed above. */ spanSamplingRules?: SpanSamplingRule[] /** * Interval in milliseconds at which the tracer will submit traces to the agent. * @default 2000 + * @env DD_TRACE_FLUSH_INTERVAL + * Programmatic configuration takes precedence over the environment variables listed above. */ flushInterval?: number; /** * Number of spans before partially exporting a trace. This prevents keeping all the spans in memory for very large traces. * @default 1000 + * @env DD_TRACE_PARTIAL_FLUSH_MIN_SPANS + * Programmatic configuration takes precedence over the environment variables listed above. */ flushMinSpans?: number; @@ -590,14 +629,31 @@ declare namespace tracer { * @default false */ runtimeMetrics?: boolean | { + + /** + * @env DD_RUNTIME_METRICS_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ enabled?: boolean, + + /** + * @env DD_RUNTIME_METRICS_GC_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ gc?: boolean, + + /** + * @env DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ eventLoop?: boolean } /** * Whether to add an auto-generated `runtime-id` tag to metrics. * @default false + * @env DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ runtimeMetricsRuntimeId?: boolean @@ -610,6 +666,8 @@ declare namespace tracer { /** * Protocol version to use for requests to the agent. The version configured must be supported by the agent version installed or all traces will be dropped. * @default 0.4 + * @env DD_TRACE_AGENT_PROTOCOL_VERSION + * Programmatic configuration takes precedence over the environment variables listed above. */ protocolVersion?: string @@ -622,11 +680,15 @@ declare namespace tracer { ingestion?: { /** * Controls the ingestion sample rate (between 0 and 1) between the agent and the backend. + * @env DD_TRACE_SAMPLE_RATE, OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG + * Programmatic configuration takes precedence over the environment variables listed above. */ sampleRate?: number /** * Controls the ingestion rate limit between the agent and the backend. Defaults to deferring the decision to the agent. + * @env DD_TRACE_RATE_LIMIT + * Programmatic configuration takes precedence over the environment variables listed above. */ rateLimit?: number }; @@ -636,17 +698,26 @@ declare namespace tracer { * @default {} */ experimental?: { + + /** + * @default false + * @env DD_TRACE_EXPERIMENTAL_B3_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ b3?: boolean /** * Whether to write traces to log output or agentless, rather than send to an agent - * @default false + * @env DD_TRACE_EXPERIMENTAL_EXPORTER + * Programmatic configuration takes precedence over the environment variables listed above. */ exporter?: 'log' | 'agent' | 'datadog' /** * Whether to enable the experimental `getRumData` method. * @default false + * @env DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enableGetRumData?: boolean @@ -674,22 +745,32 @@ declare namespace tracer { aiguard?: { /** * Set to `true` to enable the SDK. + * @env DD_AI_GUARD_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, /** * URL of the AI Guard REST API. + * @env DD_AI_GUARD_ENDPOINT + * Programmatic configuration takes precedence over the environment variables listed above. */ endpoint?: string, /** * Timeout used in calls to the AI Guard REST API in milliseconds (default 5000) + * @env DD_AI_GUARD_TIMEOUT + * Programmatic configuration takes precedence over the environment variables listed above. */ timeout?: number, /** * Maximum number of conversational messages allowed to be set in the meta-struct + * @env DD_AI_GUARD_MAX_MESSAGES_LENGTH + * Programmatic configuration takes precedence over the environment variables listed above. */ maxMessagesLength?: number, /** * Max size of the content property set in the meta-struct + * @env DD_AI_GUARD_MAX_CONTENT_SIZE + * Programmatic configuration takes precedence over the environment variables listed above. */ maxContentSize?: number } @@ -706,6 +787,8 @@ declare namespace tracer { * Can be configured via DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED environment variable. * * @default false + * @env DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean /** @@ -714,6 +797,8 @@ declare namespace tracer { * Can be configured via DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS environment variable. * * @default 30000 + * @env DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS + * Programmatic configuration takes precedence over the environment variables listed above. */ initializationTimeoutMs?: number } @@ -739,24 +824,32 @@ declare namespace tracer { /** * Global tags that should be assigned to every span. + * @env DD_TAGS, OTEL_RESOURCE_ATTRIBUTES + * Programmatic configuration takes precedence over the environment variables listed above. */ tags?: { [key: string]: any }; /** * Whether to report the hostname of the service host. This is used when the agent is deployed on a different host and cannot determine the hostname automatically. * @default false + * @env DD_TRACE_REPORT_HOSTNAME + * Programmatic configuration takes precedence over the environment variables listed above. */ reportHostname?: boolean /** * A string representing the minimum tracer log level to use when debug logging is enabled * @default 'debug' + * @env DD_TRACE_LOG_LEVEL, OTEL_LOG_LEVEL + * Programmatic configuration takes precedence over the environment variables listed above. */ - logLevel?: 'error' | 'debug' + logLevel?: 'debug' | 'info' | 'warn' | 'error' /** * Enables DBM to APM link using tag injection. * @default 'disabled' + * @env DD_DBM_PROPAGATION_MODE + * Programmatic configuration takes precedence over the environment variables listed above. */ dbmPropagationMode?: 'disabled' | 'service' | 'full' @@ -765,6 +858,8 @@ declare namespace tracer { * Can also be enabled via the DD_DATA_STREAMS_ENABLED environment variable. * When not provided, the value of DD_DATA_STREAMS_ENABLED is used. * @default false + * @env DD_DATA_STREAMS_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ dsmEnabled?: boolean @@ -777,6 +872,8 @@ declare namespace tracer { * This option requires DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=true to take effect. * The propagation hash enables correlation between traces and database operations. * @default false + * @env DD_DBM_INJECT_SQL_BASEHASH + * Programmatic configuration takes precedence over the environment variables listed above. */ injectSqlBaseHash?: boolean } @@ -788,48 +885,66 @@ declare namespace tracer { /** * Whether to enable AppSec. * @default false + * @env DD_APPSEC_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, /** * Specifies a path to a custom rules file. + * @env DD_APPSEC_RULES + * Programmatic configuration takes precedence over the environment variables listed above. */ rules?: string, /** * Controls the maximum amount of traces sampled by AppSec attacks, per second. * @default 100 + * @env DD_APPSEC_TRACE_RATE_LIMIT + * Programmatic configuration takes precedence over the environment variables listed above. */ rateLimit?: number, /** * Controls the maximum amount of time in microseconds the WAF is allowed to run synchronously for. * @default 5000 + * @env DD_APPSEC_WAF_TIMEOUT + * Programmatic configuration takes precedence over the environment variables listed above. */ wafTimeout?: number, /** * Specifies a regex that will redact sensitive data by its key in attack reports. + * @env DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP + * Programmatic configuration takes precedence over the environment variables listed above. */ obfuscatorKeyRegex?: string, /** * Specifies a regex that will redact sensitive data by its value in attack reports. + * @env DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP + * Programmatic configuration takes precedence over the environment variables listed above. */ obfuscatorValueRegex?: string, /** * Specifies a path to a custom blocking template html file. + * @env DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML + * Programmatic configuration takes precedence over the environment variables listed above. */ blockedTemplateHtml?: string, /** * Specifies a path to a custom blocking template json file. + * @env DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON + * Programmatic configuration takes precedence over the environment variables listed above. */ blockedTemplateJson?: string, /** * Specifies a path to a custom blocking template json file for graphql requests + * @env DD_APPSEC_GRAPHQL_BLOCKED_TEMPLATE_JSON + * Programmatic configuration takes precedence over the environment variables listed above. */ blockedTemplateGraphql?: string, @@ -851,6 +966,8 @@ declare namespace tracer { * * Unknown values will be considered as 'disabled' * @default 'identification' + * @env DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE + * Programmatic configuration takes precedence over the environment variables listed above. */ mode?: 'anonymous' | 'anon' | 'safe' | @@ -863,16 +980,22 @@ declare namespace tracer { apiSecurity?: { /** Whether to enable Api Security. * @default true + * @env DD_API_SECURITY_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, /** Whether to enable endpoint collection for API Security. * @default true + * @env DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ endpointCollectionEnabled?: boolean, /** Maximum number of endpoints that can be serialized per message. * @default 300 + * @env DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT + * Programmatic configuration takes precedence over the environment variables listed above. */ endpointCollectionMessageLimit?: number, }, @@ -882,6 +1005,8 @@ declare namespace tracer { rasp?: { /** Whether to enable RASP. * @default false + * @env DD_APPSEC_RASP_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, @@ -889,6 +1014,8 @@ declare namespace tracer { * @default false * * @deprecated Use UI and Remote Configuration to enable extended data collection + * @env DD_APPSEC_RASP_COLLECT_REQUEST_BODY + * Programmatic configuration takes precedence over the environment variables listed above. */ bodyCollection?: boolean }, @@ -898,16 +1025,22 @@ declare namespace tracer { stackTrace?: { /** Whether to enable stack trace reporting. * @default true + * @env DD_APPSEC_STACK_TRACE_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, /** Specifies the maximum number of stack traces to be reported. * @default 2 + * @env DD_APPSEC_MAX_STACK_TRACES + * Programmatic configuration takes precedence over the environment variables listed above. */ maxStackTraces?: number, /** Specifies the maximum depth of a stack trace to be reported. * @default 32 + * @env DD_APPSEC_MAX_STACK_TRACE_DEPTH + * Programmatic configuration takes precedence over the environment variables listed above. */ maxDepth?: number, }, @@ -921,6 +1054,8 @@ declare namespace tracer { * @default false * * @deprecated Use UI and Remote Configuration to enable extended data collection + * @env DD_APPSEC_COLLECT_ALL_HEADERS + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled: boolean, @@ -928,6 +1063,8 @@ declare namespace tracer { * @default true * * @deprecated Use UI and Remote Configuration to enable extended data collection + * @env DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ redaction: boolean, @@ -935,6 +1072,8 @@ declare namespace tracer { * @default 50 * * @deprecated Use UI and Remote Configuration to enable extended data collection + * @env DD_APPSEC_MAX_COLLECTED_HEADERS + * Programmatic configuration takes precedence over the environment variables listed above. */ maxHeaders: number, } @@ -947,6 +1086,8 @@ declare namespace tracer { /** * Whether to enable Code Origin for Spans. * @default true + * @env DD_CODE_ORIGIN_FOR_SPANS_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean } @@ -963,6 +1104,8 @@ declare namespace tracer { /** * Specifies the remote configuration polling interval in seconds * @default 5 + * @env DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS + * Programmatic configuration takes precedence over the environment variables listed above. */ pollInterval?: number, } @@ -970,16 +1113,23 @@ declare namespace tracer { /** * Whether to enable client IP collection from relevant IP headers * @default false + * @env DD_TRACE_CLIENT_IP_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ clientIpEnabled?: boolean /** * Custom header name to source the http.client_ip tag from. + * @env DD_TRACE_CLIENT_IP_HEADER + * Programmatic configuration takes precedence over the environment variables listed above. */ clientIpHeader?: string, /** * The selection and priority order of context propagation injection and extraction mechanisms. + * @env DD_TRACE_PROPAGATION_STYLE, DD_TRACE_PROPAGATION_STYLE_INJECT, DD_TRACE_PROPAGATION_STYLE_EXTRACT + * Also configurable via OTEL_PROPAGATORS when DD-specific propagation vars are not set. + * Programmatic configuration takes precedence over the environment variables listed above. */ tracePropagationStyle?: string[] | PropagationStyle @@ -990,21 +1140,29 @@ declare namespace tracer { /** * Additional JSONPath queries to replace with `redacted` in request payloads * Undefined or invalid JSONPath queries disable the feature for requests. + * @env DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING + * Programmatic configuration takes precedence over the environment variables listed above. */ request?: string, /** * Additional JSONPath queries to replace with `redacted` in response payloads * Undefined or invalid JSONPath queries disable the feature for responses. + * @env DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING + * Programmatic configuration takes precedence over the environment variables listed above. */ response?: string, /** * Maximum depth of payload traversal for tags + * @env DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH + * Programmatic configuration takes precedence over the environment variables listed above. */ maxDepth?: number } /** * Configuration enabling LLM Observability. Enablement is superseded by the DD_LLMOBS_ENABLED environment variable. + * @env DD_LLMOBS_ENABLED + * The environment variable listed above takes precedence over programmatic configuration. */ llmobs?: llmobs.LLMObsEnableOptions @@ -1015,23 +1173,31 @@ declare namespace tracer { /** * Whether to enable Dynamic Instrumentation. * @default false + * @env DD_DYNAMIC_INSTRUMENTATION_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean /** * Path to a custom probes configuration file. + * @env DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE + * Programmatic configuration takes precedence over the environment variables listed above. */ probeFile?: string /** * Timeout in milliseconds for capturing variable values. * @default 15 + * @env DD_DYNAMIC_INSTRUMENTATION_CAPTURE_TIMEOUT_MS + * Programmatic configuration takes precedence over the environment variables listed above. */ captureTimeoutMs?: number /** * Interval in seconds between uploads of probe data. * @default 1 + * @env DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS + * Programmatic configuration takes precedence over the environment variables listed above. */ uploadIntervalSeconds?: number @@ -1043,6 +1209,8 @@ declare namespace tracer { * To avoid redacting some of those built-in identifiers, use * {@link redactionExcludedIdentifiers}. * @default [] + * @env DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS + * Programmatic configuration takes precedence over the environment variables listed above. */ redactedIdentifiers?: string[] @@ -1051,6 +1219,8 @@ declare namespace tracer { * Use this to avoid redacting some of the built-in identifiers (see * {@link redactedIdentifiers}). * @default [] + * @env DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS + * Programmatic configuration takes precedence over the environment variables listed above. */ redactionExcludedIdentifiers?: string[] } @@ -2485,6 +2655,7 @@ declare namespace tracer { * [openai](https://platform.openai.com/docs/api-reference?lang=node.js) module. * * Note that for logs to work you'll need to set the `DD_API_KEY` environment variable. + * @env DD_API_KEY * You'll also need to adjust any firewall settings to allow the tracer to communicate * with `http-intake.logs.datadoghq.com`. * @@ -2697,6 +2868,7 @@ declare namespace tracer { /** * Controls whether websocket messages should be traced. * This is also configurable via `DD_TRACE_WEBSOCKET_MESSAGES_ENABLED`. + * @env DD_TRACE_WEBSOCKET_MESSAGES_ENABLED */ traceWebsocketMessagesEnabled?: boolean; } @@ -3008,24 +3180,32 @@ declare namespace tracer { /** * Whether to enable IAST. * @default false + * @env DD_IAST_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, /** * Controls the percentage of requests that iast will analyze * @default 30 + * @env DD_IAST_REQUEST_SAMPLING + * Programmatic configuration takes precedence over the environment variables listed above. */ requestSampling?: number, /** * Controls how many request can be analyzing code vulnerabilities at the same time * @default 2 + * @env DD_IAST_MAX_CONCURRENT_REQUESTS + * Programmatic configuration takes precedence over the environment variables listed above. */ maxConcurrentRequests?: number, /** * Controls how many code vulnerabilities can be detected in the same request * @default 2 + * @env DD_IAST_MAX_CONTEXT_OPERATIONS + * Programmatic configuration takes precedence over the environment variables listed above. */ maxContextOperations?: number, @@ -3039,27 +3219,37 @@ declare namespace tracer { /** * Defines the number of rows to taint in data coming from databases * @default 1 + * @env DD_IAST_DB_ROWS_TO_TAINT + * Programmatic configuration takes precedence over the environment variables listed above. */ dbRowsToTaint?: number, /** * Whether to enable vulnerability deduplication + * @env DD_IAST_DEDUPLICATION_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ deduplicationEnabled?: boolean, /** * Whether to enable vulnerability redaction * @default true + * @env DD_IAST_REDACTION_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ redactionEnabled?: boolean, /** * Specifies a regex that will redact sensitive source names in vulnerability reports. + * @env DD_IAST_REDACTION_NAME_PATTERN + * Programmatic configuration takes precedence over the environment variables listed above. */ redactionNamePattern?: string, /** * Specifies a regex that will redact sensitive source values in vulnerability reports. + * @env DD_IAST_REDACTION_VALUE_PATTERN + * Programmatic configuration takes precedence over the environment variables listed above. */ redactionValuePattern?: string, @@ -3068,11 +3258,15 @@ declare namespace tracer { * using ESM. * @deprecated Please use the DD_IAST_SECURITY_CONTROLS_CONFIGURATION * environment variable instead. + * @env DD_IAST_SECURITY_CONTROLS_CONFIGURATION + * Programmatic configuration takes precedence over the environment variables listed above. */ securityControlsConfiguration?: string, /** * Specifies the verbosity of the sent telemetry. Default 'INFORMATION' + * @env DD_IAST_TELEMETRY_VERBOSITY + * Programmatic configuration takes precedence over the environment variables listed above. */ telemetryVerbosity?: string, @@ -3082,6 +3276,8 @@ declare namespace tracer { stackTrace?: { /** Whether to enable stack trace reporting. * @default true + * @env DD_IAST_STACK_TRACE_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ enabled?: boolean, } @@ -3511,6 +3707,7 @@ declare namespace tracer { /** * The name of the ML application that the agent is orchestrating. * If not provided, the default value will be set to mlApp provided during initialization, or `DD_LLMOBS_ML_APP`. + * @env DD_LLMOBS_ML_APP */ mlApp?: string, @@ -3546,11 +3743,15 @@ declare namespace tracer { interface LLMObsEnableOptions { /** * The name of your ML application. + * @env DD_LLMOBS_ML_APP + * Programmatic configuration takes precedence over the environment variables listed above. */ mlApp?: string, /** * Set to `true` to disable sending data that requires a Datadog Agent. + * @env DD_LLMOBS_AGENTLESS_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. */ agentlessEnabled?: boolean, } diff --git a/packages/datadog-instrumentations/src/selenium.js b/packages/datadog-instrumentations/src/selenium.js index 88f54c9debf..a54583e995c 100644 --- a/packages/datadog-instrumentations/src/selenium.js +++ b/packages/datadog-instrumentations/src/selenium.js @@ -17,7 +17,7 @@ if (window.DD_RUM && window.DD_RUM.stopSession) { const IS_RUM_ACTIVE_SCRIPT = 'return !!window.DD_RUM' const DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS = -Number(getValueFromEnvSources('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 500 +Number(getValueFromEnvSources('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 1000 const DD_CIVISIBILITY_TEST_EXECUTION_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id' // TODO: can we increase the supported version range? diff --git a/packages/datadog-plugin-dd-trace-api/test/index.spec.js b/packages/datadog-plugin-dd-trace-api/test/index.spec.js index 2f832a719da..7cda39c13de 100644 --- a/packages/datadog-plugin-dd-trace-api/test/index.spec.js +++ b/packages/datadog-plugin-dd-trace-api/test/index.spec.js @@ -4,10 +4,34 @@ const assert = require('node:assert') const dc = require('dc-polyfill') const { after, before, describe, it } = require('mocha') +const proxyquire = require('proxyquire') const sinon = require('sinon') -const agent = require('../../dd-trace/test/plugins/agent') +const { + supportedConfigurations, +} = require('../../dd-trace/src/config/supported-configurations.json') + const SELF = Symbol('self') +const supportedConfigurationsWithDdTraceApi = { + ...supportedConfigurations, + DD_TRACE_DD_TRACE_API_ENABLED: [ + { + implementation: 'A', + type: 'boolean', + default: 'true', + }, + ], +} + +const configHelperPath = require.resolve('../../dd-trace/src/config/helper') +const reloadedConfigHelper = proxyquire.noPreserveCache()(configHelperPath, { + './supported-configurations.json': { + supportedConfigurations: supportedConfigurationsWithDdTraceApi, + }, +}) +Object.assign(require(configHelperPath), reloadedConfigHelper) + +const agent = require('../../dd-trace/test/plugins/agent') describe('Plugin', () => { describe('dd-trace-api', () => { diff --git a/packages/datadog-plugin-grpc/test/client.spec.js b/packages/datadog-plugin-grpc/test/client.spec.js index 0df41359406..c0f141e0aec 100644 --- a/packages/datadog-plugin-grpc/test/client.spec.js +++ b/packages/datadog-plugin-grpc/test/client.spec.js @@ -11,10 +11,13 @@ const { assertObjectContains } = require('../../../integration-tests/helpers') const loader = require('../../../versions/@grpc/proto-loader').get() const { withNamingSchema, withPeerService, withVersions } = require('../../dd-trace/test/setup/mocha') const agent = require('../../dd-trace/test/plugins/agent') -const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK, GRPC_CLIENT_ERROR_STATUSES } = require('../../dd-trace/src/constants') +const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK } = require('../../dd-trace/src/constants') +const defaults = require('../../dd-trace/src/config/defaults') const { NODE_MAJOR } = require('../../../version') const getService = require('./service') +const GRPC_CLIENT_ERROR_STATUSES = defaults['grpc.client.error.statuses'] + const pkgs = NODE_MAJOR > 14 ? ['@grpc/grpc-js'] : ['grpc', '@grpc/grpc-js'] describe('Plugin', () => { diff --git a/packages/datadog-plugin-grpc/test/server.spec.js b/packages/datadog-plugin-grpc/test/server.spec.js index a5181e58250..1c75183879d 100644 --- a/packages/datadog-plugin-grpc/test/server.spec.js +++ b/packages/datadog-plugin-grpc/test/server.spec.js @@ -10,9 +10,12 @@ const satisfies = require('semifies') const { assertObjectContains } = require('../../../integration-tests/helpers') const { withNamingSchema, withVersions } = require('../../dd-trace/test/setup/mocha') const agent = require('../../dd-trace/test/plugins/agent') -const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK, GRPC_SERVER_ERROR_STATUSES } = require('../../dd-trace/src/constants') +const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK } = require('../../dd-trace/src/constants') +const defaults = require('../../dd-trace/src/config/defaults') const { NODE_MAJOR } = require('../../../version') +const GRPC_SERVER_ERROR_STATUSES = defaults['grpc.server.error.statuses'] + const pkgs = NODE_MAJOR > 14 ? ['@grpc/grpc-js'] : ['grpc', '@grpc/grpc-js'] describe('Plugin', () => { diff --git a/packages/datadog-plugin-vitest/src/index.js b/packages/datadog-plugin-vitest/src/index.js index de559b828d0..af2f8a1d62a 100644 --- a/packages/datadog-plugin-vitest/src/index.js +++ b/packages/datadog-plugin-vitest/src/index.js @@ -275,9 +275,11 @@ class VitestPlugin extends CiPlugin { this.addBind('ci:vitest:test-suite:start', (ctx) => { const { testSuiteAbsolutePath, frameworkVersion } = ctx + // TODO: Handle case where the command is not set this.command = getValueFromEnvSources('DD_CIVISIBILITY_TEST_COMMAND') this.frameworkVersion = frameworkVersion const testSessionSpanContext = this.tracer.extract('text_map', { + // TODO: Handle case where the session ID or module ID is not set 'x-datadog-trace-id': getValueFromEnvSources('DD_CIVISIBILITY_TEST_SESSION_ID'), 'x-datadog-parent-id': getValueFromEnvSources('DD_CIVISIBILITY_TEST_MODULE_ID'), }) diff --git a/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js b/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js index 75452303a5e..5039f2bb544 100644 --- a/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +++ b/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js @@ -3,6 +3,7 @@ const log = require('../../../../log') const vulnerabilities = require('../../vulnerabilities') +const defaults = require('../../../../config/defaults') const { contains, intersects, remove } = require('./range-utils') @@ -14,14 +15,12 @@ const sqlSensitiveAnalyzer = require('./sensitive-analyzers/sql-sensitive-analyz const taintedRangeBasedSensitiveAnalyzer = require('./sensitive-analyzers/tainted-range-based-sensitive-analyzer') const urlSensitiveAnalyzer = require('./sensitive-analyzers/url-sensitive-analyzer') -const { DEFAULT_IAST_REDACTION_NAME_PATTERN, DEFAULT_IAST_REDACTION_VALUE_PATTERN } = require('./sensitive-regex') - const REDACTED_SOURCE_BUFFER = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' class SensitiveHandler { constructor () { - this._namePattern = new RegExp(DEFAULT_IAST_REDACTION_NAME_PATTERN, 'gmi') - this._valuePattern = new RegExp(DEFAULT_IAST_REDACTION_VALUE_PATTERN, 'gmi') + this._namePattern = new RegExp(/** @type {string} */ (defaults['iast.redactionNamePattern']), 'gmi') + this._valuePattern = new RegExp(/** @type {string} */ (defaults['iast.redactionValuePattern']), 'gmi') this._sensitiveAnalyzers = new Map() this._sensitiveAnalyzers.set(vulnerabilities.CODE_INJECTION, taintedRangeBasedSensitiveAnalyzer) diff --git a/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js b/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js deleted file mode 100644 index 293859952df..00000000000 --- a/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -// eslint-disable-next-line @stylistic/max-len -const DEFAULT_IAST_REDACTION_NAME_PATTERN = '(?: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)?|(?:sur|last)name|user(?:name)?|address|e?mail)' -// eslint-disable-next-line @stylistic/max-len -const DEFAULT_IAST_REDACTION_VALUE_PATTERN = String.raw`(?:bearer\s+[a-z0-9\._\-]+|glpat-[\w\-]{20}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L][\w=\-]+\.ey[I-L][\w=\-]+(?:\.[\w.+/=\-]+)?|(?:[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}[^\-]+[\-]{5}END[a-z\s]+PRIVATE\sKEY[\-]{5}|ssh-rsa\s*[a-z0-9/\.+]{100,})|[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,})` - -module.exports = { - DEFAULT_IAST_REDACTION_NAME_PATTERN, - DEFAULT_IAST_REDACTION_VALUE_PATTERN, -} diff --git a/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js b/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js index ce26619bbfa..6e1c483a967 100644 --- a/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +++ b/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js @@ -1,7 +1,8 @@ 'use strict' const crypto = require('crypto') -const { DEFAULT_IAST_REDACTION_VALUE_PATTERN } = require('./evidence-redaction/sensitive-regex') + +const defaults = require('../../../config/defaults') const STRINGIFY_RANGE_KEY = 'DD_' + crypto.randomBytes(20).toString('hex') const STRINGIFY_SENSITIVE_KEY = STRINGIFY_RANGE_KEY + 'SENSITIVE' @@ -11,7 +12,7 @@ const STRINGIFY_SENSITIVE_NOT_STRING_KEY = STRINGIFY_SENSITIVE_KEY + 'NOTSTRING' const KEYS_REGEX_WITH_SENSITIVE_RANGES = new RegExp(String.raw`(?:"(${STRINGIFY_RANGE_KEY}_\d+_))|(?:"(${STRINGIFY_SENSITIVE_KEY}_\d+_(\d+)_))|("${STRINGIFY_SENSITIVE_NOT_STRING_KEY}_\d+_([\s0-9.a-zA-Z]*)")`, 'gm') const KEYS_REGEX_WITHOUT_SENSITIVE_RANGES = new RegExp(String.raw`"(${STRINGIFY_RANGE_KEY}_\d+_)`, 'gm') -const sensitiveValueRegex = new RegExp(DEFAULT_IAST_REDACTION_VALUE_PATTERN, 'gmi') +const sensitiveValueRegex = new RegExp(/** @type {string} */ (defaults['iast.redactionValuePattern']), 'gmi') function iterateObject (target, fn, levelKeys = [], depth = 10, visited = new Set()) { for (const key of Object.keys(target)) { diff --git a/packages/dd-trace/src/azure_metadata.js b/packages/dd-trace/src/azure_metadata.js index 37daf202d3a..a94943809e1 100644 --- a/packages/dd-trace/src/azure_metadata.js +++ b/packages/dd-trace/src/azure_metadata.js @@ -58,7 +58,6 @@ function buildMetadata () { WEBSITE_SITE_NAME, } = getEnvironmentVariables() - const DD_AAS_DOTNET_EXTENSION_VERSION = getValueFromEnvSources('DD_AAS_DOTNET_EXTENSION_VERSION') const DD_AZURE_RESOURCE_GROUP = getValueFromEnvSources('DD_AZURE_RESOURCE_GROUP') const subscriptionID = extractSubscriptionID(WEBSITE_OWNER_NAME) @@ -77,7 +76,6 @@ function buildMetadata () { : (WEBSITE_RESOURCE_GROUP ?? extractResourceGroup(WEBSITE_OWNER_NAME)) return trimObject({ - extensionVersion: DD_AAS_DOTNET_EXTENSION_VERSION, functionRuntimeVersion: FUNCTIONS_EXTENSION_VERSION, instanceID: WEBSITE_INSTANCE_ID, instanceName: COMPUTERNAME, diff --git a/packages/dd-trace/src/config/defaults.js b/packages/dd-trace/src/config/defaults.js index 29e034f8f4d..90c0c39b67b 100644 --- a/packages/dd-trace/src/config/defaults.js +++ b/packages/dd-trace/src/config/defaults.js @@ -1,15 +1,12 @@ 'use strict' const pkg = require('../pkg') -const { GRPC_CLIENT_ERROR_STATUSES, GRPC_SERVER_ERROR_STATUSES } = require('../constants') +const { isFalse, isTrue } = require('../util') const { getEnvironmentVariable: getEnv } = require('./helper') -// eslint-disable-next-line @stylistic/max-len -const qsRegex = String.raw`(?: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,}` -// eslint-disable-next-line @stylistic/max-len -const defaultWafObfuscatorKeyRegex = String.raw`(?i)pass|pw(?:or)?d|secret|(?:api|private|public|access)[_-]?key|token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization|jsessionid|phpsessid|asp\.net[_-]sessionid|sid|jwt` -// eslint-disable-next-line @stylistic/max-len -const defaultWafObfuscatorValueRegex = String.raw`(?i)(?:p(?:ass)?w(?:or)?d|pass(?:[_-]?phrase)?|secret(?:[_-]?key)?|(?:(?:api|private|public|access)[_-]?)key(?:[_-]?id)?|(?:(?:auth|access|id|refresh)[_-]?)?token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?|jsessionid|phpsessid|asp\.net(?:[_-]|-)sessionid|sid|jwt)(?:\s*=([^;&]+)|"\s*:\s*("[^"]+"|\d+))|bearer\s+([a-z0-9\._\-]+)|token\s*:\s*([a-z0-9]{13})|gh[opsu]_([0-9a-zA-Z]{36})|ey[I-L][\w=-]+\.(ey[I-L][\w=-]+(?:\.[\w.+\/=-]+)?)|[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}([^\-]+)[\-]{5}END[a-z\s]+PRIVATE\sKEY|ssh-rsa\s*([a-z0-9\/\.+]{100,})` +const { + supportedConfigurations, +} = /** @type {import('./helper').SupportedConfigurationsJson} */ (require('./supported-configurations.json')) const service = getEnv('AWS_LAMBDA_FUNCTION_NAME') || getEnv('FUNCTION_NAME') || // Google Cloud Function Name set by deprecated runtimes @@ -18,207 +15,137 @@ const service = getEnv('AWS_LAMBDA_FUNCTION_NAME') || pkg.name || 'node' -module.exports = { - apiKey: undefined, - appKey: undefined, - apmTracingEnabled: true, - 'appsec.apiSecurity.enabled': true, - 'appsec.apiSecurity.sampleDelay': 30, - 'appsec.apiSecurity.endpointCollectionEnabled': true, - 'appsec.apiSecurity.endpointCollectionMessageLimit': 300, - 'appsec.apiSecurity.downstreamBodyAnalysisSampleRate': 0.5, - 'appsec.apiSecurity.maxDownstreamRequestBodyAnalysis': 1, - 'appsec.blockedTemplateGraphql': undefined, - 'appsec.blockedTemplateHtml': undefined, - 'appsec.blockedTemplateJson': undefined, - 'appsec.enabled': undefined, - 'appsec.eventTracking.mode': 'identification', - // TODO appsec.extendedHeadersCollection is deprecated, to delete in a major - 'appsec.extendedHeadersCollection.enabled': false, - 'appsec.extendedHeadersCollection.redaction': true, - 'appsec.extendedHeadersCollection.maxHeaders': 50, - 'appsec.obfuscatorKeyRegex': defaultWafObfuscatorKeyRegex, - 'appsec.obfuscatorValueRegex': defaultWafObfuscatorValueRegex, - 'appsec.rasp.enabled': true, - // TODO Deprecated, to delete in a major - 'appsec.rasp.bodyCollection': false, - 'appsec.rateLimit': 100, - 'appsec.rules': undefined, - 'appsec.sca.enabled': null, - 'appsec.stackTrace.enabled': true, - 'appsec.stackTrace.maxDepth': 32, - 'appsec.stackTrace.maxStackTraces': 2, - 'appsec.wafTimeout': 5e3, // µs - baggageMaxBytes: 8192, - baggageMaxItems: 64, - baggageTagKeys: 'user.id,session.id,account.id', - clientIpEnabled: false, - clientIpHeader: null, +/** + * @param {string|null} raw + * @param {string} type + * @returns {string|number|boolean|Record|unknown[]|undefined} + */ +function parseDefaultByType (raw, type) { + if (raw === null) { + return + } + + switch (type) { + case 'boolean': + if (isTrue(raw)) return true + if (isFalse(raw)) return false + // TODO: What should we do with these? + return + case 'int': + case 'decimal': { + return Number(raw) + } + case 'array': { + if (raw.length === 0) return [] + let parsedAsJson + try { + parsedAsJson = JSON.parse(raw) + } catch {} + if (Array.isArray(parsedAsJson)) return parsedAsJson + // TODO: Make the parsing a helper that is reused. + return raw.split(',').map(item => { + const colonIndex = item.indexOf(':') + if (colonIndex === -1) { + return item.trim() + } + const key = item.slice(0, colonIndex).trim() + const value = item.slice(colonIndex + 1).trim() + return `${key}:${value}` + }) + } + case 'map': { + if (raw.length === 0) return {} + let parsedAsJson + try { + parsedAsJson = JSON.parse(raw) + } catch {} + if (parsedAsJson && typeof parsedAsJson === 'object') { + return parsedAsJson + } + + // TODO: Make the parsing a helper that is reused. + /** @type {Record} */ + const entries = {} + for (const item of raw.split(',')) { + const colonIndex = item.indexOf(':') + if (colonIndex === -1) { + const key = item.trim() + if (key.length > 0) { + entries[key] = '' + } + continue + } + const key = item.slice(0, colonIndex).trim() + const value = item.slice(colonIndex + 1).trim() + if (key.length > 0) { + entries[key] = value + } + } + return entries + } + default: + return raw + } +} + +/** @type {Record} */ +const metadataDefaults = {} +for (const entries of Object.values(supportedConfigurations)) { + for (const entry of entries) { + // TODO: Replace $dynamic with method names that would be called and that + // are also called when the user passes through the value. That way the + // handling is unified and methods can be declared as default. + // The name of that method should be expressive for users. + // TODO: Add handling for all environment variable names. They should not + // need a configuration name for being listed with their default. + if (!Array.isArray(entry.configurationNames)) { + continue + } + + const parsedValue = parseDefaultByType(entry.default, entry.type) + for (const configurationName of entry.configurationNames) { + metadataDefaults[configurationName] = entry.default === null ? undefined : parsedValue + } + } +} + +// Defaults required by JS config merge/applyCalculated that are not represented in supported-configurations. +const defaultsWithoutSupportedConfigurationEntry = { + 'cloudPayloadTagging.rules': [], 'cloudPayloadTagging.requestsEnabled': false, 'cloudPayloadTagging.responsesEnabled': false, - 'cloudPayloadTagging.maxDepth': 10, - 'cloudPayloadTagging.rules': [], - 'crashtracking.enabled': true, - 'codeOriginForSpans.enabled': true, - 'codeOriginForSpans.experimental.exit_spans.enabled': false, - dbmPropagationMode: 'disabled', - 'dbm.injectSqlBaseHash': false, - 'dogstatsd.hostname': '127.0.0.1', - 'dogstatsd.port': '8125', - dsmEnabled: false, - 'dynamicInstrumentation.captureTimeoutMs': 15, - 'dynamicInstrumentation.enabled': false, - 'dynamicInstrumentation.probeFile': undefined, - 'dynamicInstrumentation.redactedIdentifiers': [], - 'dynamicInstrumentation.redactionExcludedIdentifiers': [], - 'dynamicInstrumentation.uploadIntervalSeconds': 1, - env: undefined, - 'experimental.aiguard.enabled': false, - 'experimental.aiguard.endpoint': undefined, - 'experimental.aiguard.maxMessagesLength': 16, - 'experimental.aiguard.maxContentSize': 512 * 1024, - 'experimental.aiguard.timeout': 10_000, // ms - 'experimental.enableGetRumData': false, - 'experimental.exporter': undefined, - 'experimental.flaggingProvider.enabled': false, - 'experimental.flaggingProvider.initializationTimeoutMs': 30_000, - flushInterval: 2000, - flushMinSpans: 1000, - gitMetadataEnabled: true, - graphqlErrorExtensions: [], - 'grpc.client.error.statuses': GRPC_CLIENT_ERROR_STATUSES, - 'grpc.server.error.statuses': GRPC_SERVER_ERROR_STATUSES, - headerTags: [], - 'heapSnapshot.count': 0, - 'heapSnapshot.destination': '', - 'heapSnapshot.interval': 3600, - hostname: '127.0.0.1', - 'iast.dbRowsToTaint': 1, - 'iast.deduplicationEnabled': true, - 'iast.enabled': false, - 'iast.maxConcurrentRequests': 2, - 'iast.maxContextOperations': 2, - 'iast.redactionEnabled': true, - 'iast.redactionNamePattern': null, - 'iast.redactionValuePattern': null, - 'iast.requestSampling': 30, - 'iast.securityControlsConfiguration': null, - 'iast.telemetryVerbosity': 'INFORMATION', - 'iast.stackTrace.enabled': true, - injectionEnabled: [], - 'installSignature.id': null, - 'installSignature.time': null, - 'installSignature.type': null, - instrumentationSource: 'manual', - injectForce: null, isAzureFunction: false, isCiVisibility: false, - isEarlyFlakeDetectionEnabled: false, - isFlakyTestRetriesEnabled: false, - flakyTestRetriesCount: 5, isGCPFunction: false, - isGCPPubSubPushSubscriptionEnabled: true, + instrumentationSource: 'manual', + isServiceUserProvided: false, + lookup: undefined, + plugins: true, +} + +// These values are documented in supported-configurations as CI Visibility +// defaults. Keep startup baseline false and let #applyCalculated() switch them +// when CI Visibility is active. +// TODO: These entries should be removed. They are off by default +// because they rely on other configs. +const defaultsWithConditionalRuntimeBehavior = { isGitUploadEnabled: false, + isImpactedTestsEnabled: false, isIntelligentTestRunnerEnabled: false, isManualApiEnabled: false, - 'langchain.spanCharLimit': 128, - 'langchain.spanPromptCompletionSampleRate': 1, - 'llmobs.agentlessEnabled': undefined, - 'llmobs.enabled': false, - 'llmobs.mlApp': undefined, - ciVisibilityTestSessionName: '', - ciVisAgentlessLogSubmissionEnabled: false, - legacyBaggageEnabled: true, - isTestDynamicInstrumentationEnabled: false, - isServiceUserProvided: false, - testManagementAttemptToFixRetries: 20, isTestManagementEnabled: false, - isImpactedTestsEnabled: false, - logInjection: true, - otelLogsEnabled: false, - otelUrl: undefined, - otelLogsUrl: undefined, // Will be computed using agent host - otelHeaders: undefined, - otelLogsHeaders: '', - otelProtocol: 'http/protobuf', - otelLogsProtocol: 'http/protobuf', - otelLogsTimeout: 10_000, - otelTimeout: 10_000, - otelBatchTimeout: 5000, - otelMaxExportBatchSize: 512, - otelMaxQueueSize: 2048, - otelMetricsEnabled: false, - otelMetricsUrl: undefined, // Will be computed using agent host - otelMetricsHeaders: '', - otelMetricsProtocol: 'http/protobuf', - otelMetricsTimeout: 10_000, - otelMetricsExportTimeout: 7500, - otelMetricsExportInterval: 10_000, - otelMetricsTemporalityPreference: 'DELTA', // DELTA, CUMULATIVE, or LOWMEMORY - lookup: undefined, - inferredProxyServicesEnabled: false, - memcachedCommandEnabled: false, - middlewareTracingEnabled: true, - openAiLogsEnabled: false, - 'openai.spanCharLimit': 128, - peerServiceMapping: {}, - plugins: true, + // TODO: These are not conditional, they would just be of type number. + 'dogstatsd.port': '8125', port: '8126', - 'profiling.enabled': undefined, - 'propagateProcessTags.enabled': undefined, - 'profiling.exporters': 'agent', - 'profiling.sourceMap': true, - 'profiling.longLivedThreshold': undefined, - protocolVersion: '0.4', - queryStringObfuscation: qsRegex, - 'remoteConfig.enabled': true, - 'remoteConfig.pollInterval': 5, // seconds - reportHostname: false, - resourceRenamingEnabled: false, - 'runtimeMetrics.enabled': false, - 'runtimeMetrics.eventLoop': true, - 'runtimeMetrics.gc': true, - runtimeMetricsRuntimeId: false, - sampleRate: undefined, - 'sampler.rateLimit': 100, - 'sampler.rules': [], - 'sampler.spanSamplingRules': [], - scope: undefined, +} + +/** @type {Record} */ +const defaults = { + ...defaultsWithoutSupportedConfigurationEntry, + ...metadataDefaults, + ...defaultsWithConditionalRuntimeBehavior, service, - serviceMapping: {}, - site: 'datadoghq.com', - spanAttributeSchema: 'v0', - spanComputePeerService: false, - spanLeakDebug: 0, - spanRemoveIntegrationFromService: false, - startupLogs: false, - 'stats.enabled': false, - tags: {}, - tagsHeaderMaxLength: 512, - 'telemetry.debug': false, - 'telemetry.dependencyCollection': true, - 'telemetry.enabled': true, - 'telemetry.heartbeatInterval': 60_000, - 'telemetry.logCollection': true, - 'telemetry.metrics': true, - traceEnabled: true, - traceId128BitGenerationEnabled: true, - traceId128BitLoggingEnabled: true, - tracePropagationExtractFirst: false, - tracePropagationBehaviorExtract: 'continue', - 'tracePropagationStyle.inject': ['datadog', 'tracecontext', 'baggage'], - 'tracePropagationStyle.extract': ['datadog', 'tracecontext', 'baggage'], - 'tracePropagationStyle.otelPropagators': false, - traceWebsocketMessagesEnabled: true, - traceWebsocketMessagesInheritSampling: true, - traceWebsocketMessagesSeparateTraces: true, - tracing: true, - url: undefined, version: pkg.version, - instrumentation_config_id: undefined, - 'vertexai.spanCharLimit': 128, - 'vertexai.spanPromptCompletionSampleRate': 1, - 'trace.aws.addSpanPointers': true, - 'trace.dynamoDb.tablePrimaryKeys': undefined, - 'trace.nativeSpanEvents': false, } + +module.exports = defaults diff --git a/packages/dd-trace/src/config/helper.js b/packages/dd-trace/src/config/helper.js index 647755d4ccb..0ba7b197758 100644 --- a/packages/dd-trace/src/config/helper.js +++ b/packages/dd-trace/src/config/helper.js @@ -2,8 +2,25 @@ /* eslint-disable eslint-rules/eslint-process-env */ +/** + * @typedef {object} SupportedConfigurationEntry + * @property {string} implementation + * @property {string} type + * @property {string|number|boolean|null|object|unknown[]} default + * @property {string[]} [aliases] + * @property {string[]} [configurationNames] + * @property {string|boolean} [deprecated] + */ + +/** + * @typedef {object} SupportedConfigurationsJson + * @property {Record<`DD_${string}` | `OTEL_${string}`, SupportedConfigurationEntry[]>} supportedConfigurations + */ + const { deprecate } = require('util') -const { supportedConfigurations, aliases, deprecations } = require('./supported-configurations.json') +const { + supportedConfigurations, +} = /** @type {SupportedConfigurationsJson} */ (require('./supported-configurations.json')) /** * Types for environment variable handling. @@ -12,6 +29,31 @@ const { supportedConfigurations, aliases, deprecations } = require('./supported- * @typedef {Partial & Partial>} TracerEnv */ +// Backwards-compatible views for old helper logic: +// - `aliases`: Record +// - `deprecations`: Record (message suffix) +const aliases = {} +const deprecations = {} + +for (const [canonical, configuration] of Object.entries(supportedConfigurations)) { + for (const implementation of configuration) { + if (implementation.deprecated) { + deprecations[canonical] = implementation.deprecated + // Deprecated entries with an alias may not be listed in the supported configurations map + if (implementation.aliases) { + delete supportedConfigurations[canonical] + continue + } + } + if (Array.isArray(implementation.aliases)) { + for (const alias of implementation.aliases) { + aliases[canonical] ??= new Set() + aliases[canonical].add(alias) + } + } + } +} + const aliasToCanonical = {} for (const canonical of Object.keys(aliases)) { for (const alias of aliases[canonical]) { diff --git a/packages/dd-trace/src/config/index.js b/packages/dd-trace/src/config/index.js index cde21de7809..1bd423b3840 100644 --- a/packages/dd-trace/src/config/index.js +++ b/packages/dd-trace/src/config/index.js @@ -62,7 +62,7 @@ module.exports = getConfig class Config { /** * parsed DD_TAGS, usable as a standalone tag set across products - * @type {Record | undefined} + * @type {Record} */ #parsedDdTags = {} #envUnprocessed = {} @@ -89,6 +89,8 @@ class Config { options = { ...options, + // TODO(BridgeAR): Remove the experimental prefix once we have a major version. + // That also applies to index.d.ts appsec: options.appsec == null ? options.experimental?.appsec : options.appsec, iast: options.iast == null ? options.experimental?.iast : options.iast, } @@ -162,7 +164,7 @@ class Config { * Set the configuration with remote config settings. * Applies remote configuration, recalculates derived values, and merges all configuration sources. * - * @param {import('./config/remote_config').RemoteConfigOptions|null} options - Configurations received via Remote + * @param {import('./remote_config').RemoteConfigOptions|null} options - Configurations received via Remote * Config or null to reset all remote configuration */ setRemoteConfig (options) { @@ -369,7 +371,6 @@ class Config { DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED, DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED, DD_TRACE_GIT_METADATA_ENABLED, - DD_TRACE_GLOBAL_TAGS, DD_TRACE_GRAPHQL_ERROR_EXTENSIONS, DD_TRACE_HEADER_TAGS, DD_TRACE_LEGACY_BAGGAGE_ENABLED, @@ -436,13 +437,11 @@ class Config { const tags = {} - const parsedDdTags = parseSpaceSeparatedTags(DD_TAGS) - tagger.add(this.#parsedDdTags, parsedDdTags) - tagger.add(tags, parseSpaceSeparatedTags(handleOtel(OTEL_RESOURCE_ATTRIBUTES))) - tagger.add(tags, parsedDdTags) + tagger.add(tags, parseSpaceSeparatedTags(DD_TAGS)) tagger.add(tags, DD_TRACE_TAGS) - tagger.add(tags, DD_TRACE_GLOBAL_TAGS) + + Object.assign(this.#parsedDdTags, tags) setString(target, 'apiKey', DD_API_KEY) setBoolean(target, 'otelLogsEnabled', DD_LOGS_OTEL_ENABLED) @@ -549,7 +548,7 @@ class Config { maybeInt(DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS) target.baggageMaxBytes = DD_TRACE_BAGGAGE_MAX_BYTES target.baggageMaxItems = DD_TRACE_BAGGAGE_MAX_ITEMS - target.baggageTagKeys = DD_TRACE_BAGGAGE_TAG_KEYS + setArray(target, 'baggageTagKeys', DD_TRACE_BAGGAGE_TAG_KEYS) setBoolean(target, 'clientIpEnabled', DD_TRACE_CLIENT_IP_ENABLED) setString(target, 'clientIpHeader', DD_TRACE_CLIENT_IP_HEADER?.toLowerCase()) if (DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING || DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING) { @@ -650,6 +649,7 @@ class Config { setString(target, 'installSignature.id', DD_INSTRUMENTATION_INSTALL_ID) setString(target, 'installSignature.time', DD_INSTRUMENTATION_INSTALL_TIME) setString(target, 'installSignature.type', DD_INSTRUMENTATION_INSTALL_TYPE) + // TODO: Why is DD_INJECTION_ENABLED a comma separated list? setArray(target, 'injectionEnabled', DD_INJECTION_ENABLED) if (DD_INJECTION_ENABLED !== undefined) { setString(target, 'instrumentationSource', DD_INJECTION_ENABLED ? 'ssi' : 'manual') @@ -709,8 +709,11 @@ class Config { maybeJsonFile(DD_SPAN_SAMPLING_RULES_FILE) ?? safeJsonParse(DD_SPAN_SAMPLING_RULES) )) - setUnit(target, 'sampleRate', DD_TRACE_SAMPLE_RATE || - getFromOtelSamplerMap(OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG)) + setUnit( + target, + 'sampleRate', + DD_TRACE_SAMPLE_RATE || getFromOtelSamplerMap(OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG) + ) target['sampler.rateLimit'] = DD_TRACE_RATE_LIMIT setSamplingRule(target, 'sampler.rules', safeJsonParse(DD_TRACE_SAMPLING_RULES)) unprocessedTarget['sampler.rules'] = DD_TRACE_SAMPLING_RULES @@ -751,7 +754,7 @@ class Config { setBoolean(target, 'telemetry.debug', DD_TELEMETRY_DEBUG) setBoolean(target, 'telemetry.dependencyCollection', DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED) target['telemetry.heartbeatInterval'] = maybeInt(Math.floor(DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000)) - unprocessedTarget['telemetry.heartbeatInterval'] = DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000 + unprocessedTarget['telemetry.heartbeatInterval'] = DD_TELEMETRY_HEARTBEAT_INTERVAL setBoolean(target, 'telemetry.logCollection', DD_TELEMETRY_LOG_COLLECTION_ENABLED) setBoolean(target, 'telemetry.metrics', DD_TELEMETRY_METRICS_ENABLED) setBoolean(target, 'traceId128BitGenerationEnabled', DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED) @@ -894,7 +897,7 @@ class Config { opts['cloudPayloadTagging.maxDepth'] = maybeInt(options.cloudPayloadTagging?.maxDepth) opts.baggageMaxBytes = options.baggageMaxBytes opts.baggageMaxItems = options.baggageMaxItems - opts.baggageTagKeys = options.baggageTagKeys + setArray(opts, 'baggageTagKeys', options.baggageTagKeys) setBoolean(opts, 'codeOriginForSpans.enabled', options.codeOriginForSpans?.enabled) setBoolean( opts, @@ -1132,6 +1135,7 @@ class Config { calc.otelLogsUrl = `http://${agentHostname}:${DEFAULT_OTLP_PORT}` calc.otelMetricsUrl = `http://${agentHostname}:${DEFAULT_OTLP_PORT}/v1/metrics` calc.otelUrl = `http://${agentHostname}:${DEFAULT_OTLP_PORT}` + calc['telemetry.heartbeatInterval'] = maybeInt(Math.floor(this.#defaults['telemetry.heartbeatInterval'] * 1000)) setBoolean(calc, 'isGitUploadEnabled', calc.isIntelligentTestRunnerEnabled && !isFalse(getEnv('DD_CIVISIBILITY_GIT_UPLOAD_ENABLED'))) @@ -1159,7 +1163,7 @@ class Config { /** * Applies remote configuration options from APM_TRACING configs. * - * @param {import('./config/remote_config').RemoteConfigOptions} options - Configurations received via Remote Config + * @param {import('./remote_config').RemoteConfigOptions} options - Configurations received via Remote Config */ #applyRemoteConfig (options) { const opts = this.#remote diff --git a/packages/dd-trace/src/config/supported-configurations.json b/packages/dd-trace/src/config/supported-configurations.json index bec954421d2..e748fd0f06a 100644 --- a/packages/dd-trace/src/config/supported-configurations.json +++ b/packages/dd-trace/src/config/supported-configurations.json @@ -1,517 +1,4110 @@ { + "version": "2", "supportedConfigurations": { - "DD_AAS_DOTNET_EXTENSION_VERSION": ["A"], - "DD_ACTION_EXECUTION_ID": ["A"], - "DD_AGENT_HOST": ["A"], - "DD_AGENTLESS_LOG_SUBMISSION_ENABLED": ["A"], - "DD_AGENTLESS_LOG_SUBMISSION_URL": ["A"], - "DD_AI_GUARD_ENABLED": ["A"], - "DD_AI_GUARD_ENDPOINT": ["A"], - "DD_AI_GUARD_MAX_CONTENT_SIZE": ["A"], - "DD_AI_GUARD_MAX_MESSAGES_LENGTH": ["A"], - "DD_AI_GUARD_TIMEOUT": ["A"], - "DD_API_KEY": ["A"], - "DD_API_SECURITY_ENABLED": ["A"], - "DD_API_SECURITY_SAMPLE_DELAY": ["A"], - "DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED": ["A"], - "DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT": ["A"], - "DD_API_SECURITY_DOWNSTREAM_BODY_ANALYSIS_SAMPLE_RATE": ["A"], - "DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS": ["A"], - "DD_APM_FLUSH_DEADLINE_MILLISECONDS": ["A"], - "DD_APM_TRACING_ENABLED": ["A"], - "DD_APP_KEY": ["A"], - "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE": ["A"], - "DD_APPSEC_COLLECT_ALL_HEADERS": ["A"], - "DD_APPSEC_ENABLED": ["A"], - "DD_APPSEC_GRAPHQL_BLOCKED_TEMPLATE_JSON": ["A"], - "DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED": ["A"], - "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML": ["A"], - "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON": ["A"], - "DD_APPSEC_MAX_COLLECTED_HEADERS": ["A"], - "DD_APPSEC_MAX_STACK_TRACE_DEPTH": ["A"], - "DD_APPSEC_MAX_STACK_TRACES": ["A"], - "DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP": ["A"], - "DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP": ["A"], - "DD_APPSEC_RASP_COLLECT_REQUEST_BODY": ["A"], - "DD_APPSEC_RASP_ENABLED": ["A"], - "DD_APPSEC_RULES": ["A"], - "DD_APPSEC_SCA_ENABLED": ["A"], - "DD_APPSEC_STACK_TRACE_ENABLED": ["A"], - "DD_APPSEC_TRACE_RATE_LIMIT": ["A"], - "DD_APPSEC_WAF_TIMEOUT": ["A"], - "DD_AZURE_RESOURCE_GROUP": ["A"], - "DD_CIVISIBILITY_AGENTLESS_ENABLED": ["A"], - "DD_CIVISIBILITY_AGENTLESS_URL": ["A"], - "DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER": ["A"], - "DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE": ["A"], - "DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING": ["A"], - "DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED": ["A"], - "DD_CIVISIBILITY_ENABLED": ["A"], - "DD_CIVISIBILITY_FLAKY_RETRY_COUNT": ["A"], - "DD_CIVISIBILITY_FLAKY_RETRY_ENABLED": ["A"], - "DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED": ["A"], - "DD_CIVISIBILITY_GIT_UPLOAD_ENABLED": ["A"], - "DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED": ["A"], - "DD_CIVISIBILITY_ITR_ENABLED": ["A"], - "DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS": ["A"], - "DD_CIVISIBILITY_MANUAL_API_ENABLED": ["A"], - "DD_CIVISIBILITY_TEST_COMMAND": ["A"], - "DD_CIVISIBILITY_TEST_MODULE_ID": ["A"], - "DD_CIVISIBILITY_TEST_SESSION_ID": ["A"], - "DD_CODE_ORIGIN_FOR_SPANS_ENABLED": ["A"], - "DD_CODE_ORIGIN_FOR_SPANS_EXPERIMENTAL_EXIT_SPANS_ENABLED": ["A"], - "DD_CRASHTRACKING_ENABLED": ["A"], - "DD_CUSTOM_TRACE_ID": ["A"], - "DD_DATA_STREAMS_ENABLED": ["A"], - "DD_DBM_PROPAGATION_MODE": ["A"], - "DD_DBM_INJECT_SQL_BASEHASH": ["A"], - "DD_DOGSTATSD_HOST": ["A"], - "DD_DOGSTATSD_PORT": ["A"], - "DD_DYNAMIC_INSTRUMENTATION_CAPTURE_TIMEOUT_MS": ["A"], - "DD_DYNAMIC_INSTRUMENTATION_ENABLED": ["A"], - "DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE": ["A"], - "DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS": ["A"], - "DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS": ["A"], - "DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS": ["A"], - "DD_ENV": ["A"], - "DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED": ["A"], - "DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED": ["A"], - "DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS": ["A"], - "DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED": ["A"], - "DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED": ["A"], - "DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR": ["A"], - "DD_EXTERNAL_ENV": ["A"], - "DD_GIT_BRANCH": ["A"], - "DD_GIT_COMMIT_AUTHOR_DATE": ["A"], - "DD_GIT_COMMIT_AUTHOR_EMAIL": ["A"], - "DD_GIT_COMMIT_AUTHOR_NAME": ["A"], - "DD_GIT_COMMIT_COMMITTER_DATE": ["A"], - "DD_GIT_COMMIT_COMMITTER_EMAIL": ["A"], - "DD_GIT_COMMIT_COMMITTER_NAME": ["A"], - "DD_GIT_COMMIT_MESSAGE": ["A"], - "DD_GIT_COMMIT_SHA": ["A"], - "DD_GIT_PROPERTIES_FILE": ["A"], - "DD_GIT_FOLDER_PATH": ["A"], - "DD_GIT_REPOSITORY_URL": ["A"], - "DD_GIT_TAG": ["A"], - "DD_GIT_PULL_REQUEST_BASE_BRANCH": ["A"], - "DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA": ["A"], - "DD_GIT_COMMIT_HEAD_SHA": ["A"], - "DD_GRPC_CLIENT_ERROR_STATUSES": ["A"], - "DD_GRPC_SERVER_ERROR_STATUSES": ["A"], - "DD_HEAP_SNAPSHOT_COUNT": ["A"], - "DD_HEAP_SNAPSHOT_INTERVAL": ["A"], - "DD_HEAP_SNAPSHOT_DESTINATION": ["A"], - "DD_IAST_DB_ROWS_TO_TAINT": ["A"], - "DD_IAST_DEDUPLICATION_ENABLED": ["A"], - "DD_IAST_ENABLED": ["A"], - "DD_IAST_MAX_CONCURRENT_REQUESTS": ["A"], - "DD_IAST_MAX_CONTEXT_OPERATIONS": ["A"], - "DD_IAST_REDACTION_ENABLED": ["A"], - "DD_IAST_REDACTION_NAME_PATTERN": ["A"], - "DD_IAST_REDACTION_VALUE_PATTERN": ["A"], - "DD_IAST_REQUEST_SAMPLING": ["A"], - "DD_IAST_SECURITY_CONTROLS_CONFIGURATION": ["A"], - "DD_IAST_STACK_TRACE_ENABLED": ["A"], - "DD_IAST_TELEMETRY_VERBOSITY": ["A"], - "DD_INJECT_FORCE": ["A"], - "DD_INJECTION_ENABLED": ["A"], - "DD_ENABLE_NX_SERVICE_NAME": ["A"], - "DD_INSTRUMENTATION_CONFIG_ID": ["A"], - "DD_INSTRUMENTATION_INSTALL_ID": ["A"], - "DD_INSTRUMENTATION_INSTALL_TIME": ["A"], - "DD_INSTRUMENTATION_INSTALL_TYPE": ["A"], - "DD_INSTRUMENTATION_TELEMETRY_ENABLED": ["A"], - "DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD": ["A"], - "DD_INTERNAL_PROFILING_TIMELINE_SAMPLING_ENABLED": ["A"], - "DD_LAMBDA_HANDLER": ["A"], - "DD_LANGCHAIN_SPAN_CHAR_LIMIT": ["A"], - "DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE": ["A"], - "DD_LLMOBS_AGENTLESS_ENABLED": ["A"], - "DD_LLMOBS_ENABLED": ["A"], - "DD_LLMOBS_ML_APP": ["A"], - "DD_LOG_LEVEL": ["A"], - "DD_LOGS_INJECTION": ["A"], - "DD_LOGS_OTEL_ENABLED": ["A"], - "DD_METRICS_OTEL_ENABLED": ["A"], - "DD_MINI_AGENT_PATH": ["A"], - "DD_OPENAI_LOGS_ENABLED": ["A"], - "DD_OPENAI_SPAN_CHAR_LIMIT": ["A"], - "DD_PIPELINE_EXECUTION_ID": ["A"], - "DD_PLAYWRIGHT_WORKER": ["A"], - "DD_PROFILING_ASYNC_CONTEXT_FRAME_ENABLED": ["A"], - "DD_PROFILING_CODEHOTSPOTS_ENABLED": ["A"], - "DD_PROFILING_CPU_ENABLED": ["A"], - "DD_PROFILING_DEBUG_SOURCE_MAPS": ["A"], - "DD_PROFILING_DEBUG_UPLOAD_COMPRESSION": ["A"], - "DD_PROFILING_ENABLED": ["A"], - "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED": ["A"], - "DD_PROFILING_EXPERIMENTAL_OOM_EXPORT_STRATEGIES": ["A"], - "DD_PROFILING_EXPERIMENTAL_OOM_HEAP_LIMIT_EXTENSION_SIZE": ["A"], - "DD_PROFILING_EXPERIMENTAL_OOM_MAX_HEAP_EXTENSION_COUNT": ["A"], - "DD_PROFILING_EXPERIMENTAL_OOM_MONITORING_ENABLED": ["A"], - "DD_PROFILING_EXPORTERS": ["A"], - "DD_PROFILING_HEAP_ENABLED": ["A"], - "DD_PROFILING_HEAP_SAMPLING_INTERVAL": ["A"], - "DD_PROFILING_PPROF_PREFIX": ["A"], - "DD_PROFILING_PROFILERS": ["A"], - "DD_PROFILING_SOURCE_MAP": ["A"], - "DD_PROFILING_TIMELINE_ENABLED": ["A"], - "DD_PROFILING_UPLOAD_PERIOD": ["A"], - "DD_PROFILING_UPLOAD_TIMEOUT": ["A"], - "DD_PROFILING_V8_PROFILER_BUG_WORKAROUND": ["A"], - "DD_PROFILING_WALLTIME_ENABLED": ["A"], - "DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS": ["A"], - "DD_REMOTE_CONFIGURATION_ENABLED": ["A"], - "DD_RUNTIME_METRICS_ENABLED": ["A"], - "DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED": ["A"], - "DD_RUNTIME_METRICS_GC_ENABLED": ["A"], - "DD_RUNTIME_METRICS_FLUSH_INTERVAL": ["A"], - "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED": ["A"], - "DD_TRACE_GCP_PUBSUB_PUSH_ENABLED": ["A"], - "DD_SERVICE_MAPPING": ["A"], - "DD_SERVICE": ["A"], - "DD_SITE": ["A"], - "DD_SPAN_SAMPLING_RULES_FILE": ["A"], - "DD_SPAN_SAMPLING_RULES": ["A"], - "DD_TAGS": ["A"], - "DD_TELEMETRY_DEBUG": ["A"], - "DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED": ["A"], - "DD_TELEMETRY_FORWARDER_PATH": ["A"], - "DD_TELEMETRY_HEARTBEAT_INTERVAL": ["A"], - "DD_TELEMETRY_LOG_COLLECTION_ENABLED": ["A"], - "DD_TELEMETRY_METRICS_ENABLED": ["A"], - "DD_TEST_FAILED_TEST_REPLAY_ENABLED": ["A"], - "DD_TEST_FLEET_CONFIG_PATH": ["A"], - "DD_TEST_LOCAL_CONFIG_PATH": ["A"], - "DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES": ["A"], - "DD_TEST_MANAGEMENT_ENABLED": ["A"], - "DD_EXPERIMENTAL_TEST_OPT_SETTINGS_CACHE": ["A"], - "DD_TEST_SESSION_NAME": ["A"], - "DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED": ["A"], - "DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED": ["A"], - "DD_TRACE_AEROSPIKE_ENABLED": ["A"], - "DD_TRACE_AI_ENABLED": ["A"], - "DD_TRACE_ANTHROPIC_ENABLED": ["A"], - "DD_TRACE_AGENT_PORT": ["A"], - "DD_TRACE_AGENT_PROTOCOL_VERSION": ["A"], - "DD_TRACE_AGENT_URL": ["A"], - "DD_TRACE_AMQP10_ENABLED": ["A"], - "DD_TRACE_AMQPLIB_ENABLED": ["A"], - "DD_TRACE_APOLLO_ENABLED": ["A"], - "DD_TRACE_APOLLO_GATEWAY_ENABLED": ["A"], - "DD_TRACE_APOLLO_SERVER_CORE_ENABLED": ["A"], - "DD_TRACE_APOLLO_SERVER_ENABLED": ["A"], - "DD_TRACE_APOLLO_SERVER_EXPRESS_ENABLED": ["A"], - "DD_TRACE_APOLLO_SERVER_FASTIFY_ENABLED": ["A"], - "DD_TRACE_APOLLO_SUBGRAPH_ENABLED": ["A"], - "DD_TRACE_AVSC_ENABLED": ["A"], - "DD_TRACE_AWS_ADD_SPAN_POINTERS": ["A"], - "DD_TRACE_AWS_SDK_AWS_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_AWS_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_BEDROCKRUNTIME_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_BEDROCKRUNTIME_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_CLOUDWATCHLOGS_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_CLOUDWATCHLOGS_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_DYNAMODB_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_DYNAMODB_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_EVENTBRIDGE_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_EVENTBRIDGE_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_KINESIS_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_KINESIS_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_LAMBDA_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_LAMBDA_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_NODE_HTTP_HANDLER_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_REDSHIFT_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_REDSHIFT_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_S3_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_S3_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SFN_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SFN_CLIENT_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SFN_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SMITHY_CLIENT_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SNS_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SNS_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SQS_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_SQS_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_STATES_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_STATES_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_STEPFUNCTIONS_BATCH_PROPAGATION_ENABLED": ["A"], - "DD_TRACE_AWS_SDK_STEPFUNCTIONS_ENABLED": ["A"], - "DD_TRACE_AXIOS_ENABLED": ["A"], - "DD_TRACE_AZURE_EVENT_HUBS_ENABLED": ["A"], - "DD_TRACE_AZURE_EVENTHUBS_BATCH_LINKS_ENABLED": ["A"], - "DD_TRACE_AZURE_FUNCTIONS_ENABLED": ["A"], - "DD_TRACE_AZURE_SERVICE_BUS_ENABLED": ["A"], - "DD_TRACE_AZURE_SERVICEBUS_BATCH_LINKS_ENABLED": ["A"], - "DD_TRACE_BAGGAGE_MAX_BYTES": ["A"], - "DD_TRACE_BAGGAGE_MAX_ITEMS": ["A"], - "DD_TRACE_BAGGAGE_TAG_KEYS": ["A"], - "DD_TRACE_BEAUTIFUL_LOGS": ["A"], - "DD_TRACE_BLUEBIRD_ENABLED": ["A"], - "DD_TRACE_BULLMQ_ENABLED": ["A"], - "DD_TRACE_BODY_PARSER_ENABLED": ["A"], - "DD_TRACE_BSON_ENABLED": ["A"], - "DD_TRACE_BUNYAN_ENABLED": ["A"], - "DD_TRACE_CASSANDRA_DRIVER_ENABLED": ["A"], - "DD_TRACE_CHILD_PROCESS_ENABLED": ["A"], - "DD_TRACE_CLIENT_IP_ENABLED": ["A"], - "DD_TRACE_CLIENT_IP_HEADER": ["A"], - "DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH": ["A"], - "DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING": ["A"], - "DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING": ["A"], - "DD_TRACE_COLLECTIONS_ENABLED": ["A"], - "DD_TRACE_COMMONPLUGIN_ENABLED": ["A"], - "DD_TRACE_CONFLUENTINC_KAFKA_JAVASCRIPT_ENABLED": ["A"], - "DD_TRACE_CONNECT_ENABLED": ["A"], - "DD_TRACE_COOKIE_ENABLED": ["A"], - "DD_TRACE_COOKIE_PARSER_ENABLED": ["A"], - "DD_TRACE_COUCHBASE_ENABLED": ["A"], - "DD_TRACE_CRYPTO_ENABLED": ["A"], - "DD_TRACE_CUCUMBER_CUCUMBER_ENABLED": ["A"], - "DD_TRACE_CUCUMBER_ENABLED": ["A"], - "DD_TRACE_CYPRESS_ENABLED": ["A"], - "DD_TRACE_DD_TRACE_API_ENABLED": ["A"], - "DD_TRACE_DEBUG": ["A"], - "DD_TRACE_DISABLED_INSTRUMENTATIONS": ["A"], - "DD_TRACE_DISABLED_PLUGINS": ["A"], - "DD_TRACE_DNS_ENABLED": ["A"], - "DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS": ["A"], - "DD_TRACE_ELASTIC_ELASTICSEARCH_ENABLED": ["A"], - "DD_TRACE_ELASTIC_TRANSPORT_ENABLED": ["A"], - "DD_TRACE_ELASTICSEARCH_ENABLED": ["A"], - "DD_TRACE_ENABLED": ["A"], - "DD_TRACE_ENCODING_DEBUG": ["A"], - "DD_TRACE_EXPERIMENTAL_B3_ENABLED": ["A"], - "DD_TRACE_EXPERIMENTAL_EXPORTER": ["A"], - "DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED": ["A"], - "DD_TRACE_EXPERIMENTAL_SPAN_COUNTS": ["A"], - "DD_TRACE_EXPERIMENTAL_STATE_TRACKING": ["A"], - "DD_TRACE_EXPRESS_ENABLED": ["A"], - "DD_TRACE_EXPRESS_MONGO_SANITIZE_ENABLED": ["A"], - "DD_TRACE_EXPRESS_SESSION_ENABLED": ["A"], - "DD_TRACE_FASTIFY_ENABLED": ["A"], - "DD_TRACE_FETCH_ENABLED": ["A"], - "DD_TRACE_FIND_MY_WAY_ENABLED": ["A"], - "DD_TRACE_FLUSH_INTERVAL": ["A"], - "DD_TRACE_FS_ENABLED": ["A"], - "DD_TRACE_GENERIC_POOL_ENABLED": ["A"], - "DD_TRACE_GIT_METADATA_ENABLED": ["A"], - "DD_TRACE_GLOBAL_TAGS": ["A"], - "DD_TRACE_GOOGLE_CLOUD_PUBSUB_ENABLED": ["A"], - "DD_TRACE_GOOGLE_CLOUD_VERTEXAI_ENABLED": ["A"], - "DD_TRACE_GOOGLE_GAX_ENABLED": ["A"], - "DD_TRACE_GOOGLE_GENAI_ENABLED": ["A"], - "DD_TRACE_GRAPHQL_ENABLED": ["A"], - "DD_TRACE_GRAPHQL_ERROR_EXTENSIONS": ["A"], - "DD_TRACE_GRAPHQL_TAG_ENABLED": ["A"], - "DD_TRACE_GRAPHQL_TOOLS_ENABLED": ["A"], - "DD_TRACE_GRAPHQL_TOOLS_EXECUTOR_ENABLED": ["A"], - "DD_TRACE_GRAPHQL_YOGA_ENABLED": ["A"], - "DD_TRACE_GRPC_ENABLED": ["A"], - "DD_TRACE_GRPC_GRPC_JS_ENABLED": ["A"], - "DD_TRACE_GRPC_PROTO_LOADER_ENABLED": ["A"], - "DD_TRACE_HANDLEBARS_ENABLED": ["A"], - "DD_TRACE_HAPI_BOOM_ENABLED": ["A"], - "DD_TRACE_HAPI_ENABLED": ["A"], - "DD_TRACE_HAPI_HAPI_ENABLED": ["A"], - "DD_TRACE_HEADER_TAGS": ["A"], - "DD_TRACE_HONO_ENABLED": ["A"], - "DD_TRACE_HTTP_ENABLED": ["A"], - "DD_TRACE_HTTP2_ENABLED": ["A"], - "DD_TRACE_HTTPS_ENABLED": ["A"], - "DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED": ["A"], - "DD_TRACE_IOREDIS_ENABLED": ["A"], - "DD_TRACE_IOVALKEY_ENABLED": ["A"], - "DD_TRACE_JEST_CIRCUS_ENABLED": ["A"], - "DD_TRACE_JEST_CONFIG_ENABLED": ["A"], - "DD_TRACE_JEST_CORE_ENABLED": ["A"], - "DD_TRACE_JEST_ENABLED": ["A"], - "DD_TRACE_JEST_ENVIRONMENT_JSDOM_ENABLED": ["A"], - "DD_TRACE_JEST_ENVIRONMENT_NODE_ENABLED": ["A"], - "DD_TRACE_JEST_GLOBALS_ENABLED": ["A"], - "DD_TRACE_JEST_REPORTERS_ENABLED": ["A"], - "DD_TRACE_JEST_RUNTIME_ENABLED": ["A"], - "DD_TRACE_JEST_TEST_SEQUENCER_ENABLED": ["A"], - "DD_TRACE_JEST_TRANSFORM_ENABLED": ["A"], - "DD_TRACE_JEST_WORKER_ENABLED": ["A"], - "DD_TRACE_KAFKAJS_ENABLED": ["A"], - "DD_TRACE_KNEX_ENABLED": ["A"], - "DD_TRACE_KOA_ENABLED": ["A"], - "DD_TRACE_KOA_ROUTE_ENABLED": ["A"], - "DD_TRACE_KOA_ROUTER_ENABLED": ["A"], - "DD_TRACE_KOA_WEBSOCKET_ENABLED": ["A"], - "DD_TRACE_LANGCHAIN_ANTHROPIC_ENABLED": ["A"], - "DD_TRACE_LANGCHAIN_COHERE_ENABLED": ["A"], - "DD_TRACE_LANGCHAIN_CORE_ENABLED": ["A"], - "DD_TRACE_LANGCHAIN_ENABLED": ["A"], - "DD_TRACE_LANGCHAIN_GOOGLE_GENAI_ENABLED": ["A"], - "DD_TRACE_LANGCHAIN_OPENAI_ENABLED": ["A"], - "DD_TRACE_LDAPJS_ENABLED": ["A"], - "DD_TRACE_LDAPJS_PROMISE_ENABLED": ["A"], - "DD_TRACE_LEGACY_BAGGAGE_ENABLED": ["A"], - "DD_TRACE_LIMITD_CLIENT_ENABLED": ["A"], - "DD_TRACE_LODASH_ENABLED": ["A"], - "DD_TRACE_LOG_LEVEL": ["A"], - "DD_TRACE_LOOPBACK_ENABLED": ["A"], - "DD_TRACE_MARIADB_ENABLED": ["A"], - "DD_TRACE_MEMCACHED_COMMAND_ENABLED": ["A"], - "DD_TRACE_MEMCACHED_ENABLED": ["A"], - "DD_TRACE_MICROGATEWAY_CORE_ENABLED": ["A"], - "DD_TRACE_MIDDIE_ENABLED": ["A"], - "DD_TRACE_MIDDLEWARE_TRACING_ENABLED": ["A"], - "DD_TRACE_MOCHA_EACH_ENABLED": ["A"], - "DD_TRACE_MOCHA_ENABLED": ["A"], - "DD_TRACE_MOLECULER_ENABLED": ["A"], - "DD_TRACE_MONGODB_CORE_ENABLED": ["A"], - "DD_TRACE_MONGODB_ENABLED": ["A"], - "DD_TRACE_MONGODB_HEARTBEAT_ENABLED": ["A"], - "DD_TRACE_MONGOOSE_ENABLED": ["A"], - "DD_TRACE_MQUERY_ENABLED": ["A"], - "DD_TRACE_MULTER_ENABLED": ["A"], - "DD_TRACE_MYSQL_ENABLED": ["A"], - "DD_TRACE_MYSQL2_ENABLED": ["A"], - "DD_TRACE_NATIVE_SPAN_EVENTS": ["A"], - "DD_TRACE_NET_ENABLED": ["A"], - "DD_TRACE_NEXT_ENABLED": ["A"], - "DD_TRACE_NODE_CHILD_PROCESS_ENABLED": ["A"], - "DD_TRACE_NODE_REDIS_CLIENT_ENABLED": ["A"], - "DD_TRACE_NODE_SERIALIZE_ENABLED": ["A"], - "DD_TRACE_NYC_ENABLED": ["A"], - "DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP": ["A"], - "DD_TRACE_OPENAI_ENABLED": ["A"], - "DD_TRACE_OPENSEARCH_ENABLED": ["A"], - "DD_TRACE_OPENSEARCH_PROJECT_OPENSEARCH_ENABLED": ["A"], - "DD_TRACE_OPENTELEMETRY_SDK_TRACE_NODE_ENABLED": ["A"], - "DD_TRACE_ORACLEDB_ENABLED": ["A"], - "DD_TRACE_OTEL_ENABLED": ["A"], - "DD_TRACE_PARTIAL_FLUSH_MIN_SPANS": ["A"], - "DD_TRACE_PASSPORT_ENABLED": ["A"], - "DD_TRACE_PASSPORT_HTTP_ENABLED": ["A"], - "DD_TRACE_PASSPORT_LOCAL_ENABLED": ["A"], - "DD_TRACE_PEER_SERVICE_DEFAULTS_ENABLED": ["A"], - "DD_TRACE_PEER_SERVICE_MAPPING": ["A"], - "DD_TRACE_PG_CURSOR_ENABLED": ["A"], - "DD_TRACE_PG_ENABLED": ["A"], - "DD_TRACE_PG_NATIVE_ENABLED": ["A"], - "DD_TRACE_PG_QUERY_STREAM_ENABLED": ["A"], - "DD_TRACE_PINO_ENABLED": ["A"], - "DD_TRACE_PINO_PRETTY_ENABLED": ["A"], - "DD_TRACE_PLAYWRIGHT_CORE_ENABLED": ["A"], - "DD_TRACE_PLAYWRIGHT_ENABLED": ["A"], - "DD_TRACE_PLAYWRIGHT_TEST_ENABLED": ["A"], - "DD_TRACE_PRISMA_ENABLED": ["A"], - "DD_TRACE_PROCESS_ENABLED": ["A"], - "DD_TRACE_PROMISE_ENABLED": ["A"], - "DD_TRACE_PROMISE_JS_ENABLED": ["A"], - "DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT": ["A"], - "DD_TRACE_PROPAGATION_EXTRACT_FIRST": ["A"], - "DD_TRACE_PROPAGATION_STYLE_EXTRACT": ["A"], - "DD_TRACE_PROPAGATION_STYLE_INJECT": ["A"], - "DD_TRACE_PROPAGATION_STYLE": ["A"], - "DD_TRACE_PROTOBUFJS_ENABLED": ["A"], - "DD_TRACE_PUG_ENABLED": ["A"], - "DD_TRACE_Q_ENABLED": ["A"], - "DD_TRACE_RATE_LIMIT": ["A"], - "DD_TRACE_REACT_DOM_ENABLED": ["A"], - "DD_TRACE_REACT_ENABLED": ["A"], - "DD_TRACE_REDIS_CLIENT_ENABLED": ["A"], - "DD_TRACE_REDIS_ENABLED": ["A"], - "DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED": ["A"], - "DD_TRACE_REPORT_HOSTNAME": ["A"], - "DD_TRACE_REQUEST_ENABLED": ["A"], - "DD_TRACE_RESOURCE_RENAMING_ENABLED": ["A"], - "DD_TRACE_RESTIFY_ENABLED": ["A"], - "DD_TRACE_RHEA_ENABLED": ["A"], - "DD_TRACE_ROUTER_ENABLED": ["A"], - "DD_TRACE_SAMPLE_RATE": ["A"], - "DD_TRACE_SAMPLING_RULES": ["A"], - "DD_TRACE_SCOPE": ["A"], - "DD_TRACE_SELENIUM_ENABLED": ["A"], - "DD_TRACE_SELENIUM_WEBDRIVER_ENABLED": ["A"], - "DD_TRACE_SEQUELIZE_ENABLED": ["A"], - "DD_TRACE_SHAREDB_ENABLED": ["A"], - "DD_TRACE_SMITHY_SMITHY_CLIENT_ENABLED": ["A"], - "DD_TRACE_SPAN_ATTRIBUTE_SCHEMA": ["A"], - "DD_TRACE_SPAN_LEAK_DEBUG": ["A"], - "DD_TRACE_SQLITE3_ENABLED": ["A"], - "DD_TRACE_STARTUP_LOGS": ["A"], - "DD_TRACE_STATS_COMPUTATION_ENABLED": ["A"], - "DD_TRACE_SUFFIXPLUGIN_ENABLED": ["A"], - "DD_TRACE_TAGS": ["A"], - "DD_TRACE_TEDIOUS_ENABLED": ["A"], - "DD_TRACE_UNDICI_ENABLED": ["A"], - "DD_TRACE_URL_ENABLED": ["A"], - "DD_TRACE_VITEST_ENABLED": ["A"], - "DD_TRACE_VITEST_RUNNER_ENABLED": ["A"], - "DD_TRACE_VM_ENABLED": ["A"], - "DD_TRACE_WEBSOCKET_MESSAGES_ENABLED":["A"], - "DD_TRACE_WEBSOCKET_MESSAGES_INHERIT_SAMPLING": ["A"], - "DD_TRACE_WEBSOCKET_MESSAGES_SEPARATE_TRACES":["A"], - "DD_TRACE_WHEN_ENABLED": ["A"], - "DD_TRACE_WINSTON_ENABLED": ["A"], - "DD_TRACE_WORKERPOOL_ENABLED": ["A"], - "DD_TRACE_WS_ENABLED": ["A"], - "DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH": ["A"], - "DD_TRACING_ENABLED": ["A"], - "DD_VERSION": ["A"], - "DD_VERTEXAI_SPAN_CHAR_LIMIT": ["A"], - "DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE": ["A"], - "DD_VITEST_WORKER": ["A"], - "OTEL_LOG_LEVEL": ["A"], - "OTEL_LOGS_EXPORTER": ["A"], - "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": ["A"], - "OTEL_EXPORTER_OTLP_LOGS_HEADERS": ["A"], - "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": ["A"], - "OTEL_EXPORTER_OTLP_LOGS_TIMEOUT": ["A"], - "OTEL_EXPORTER_OTLP_ENDPOINT": ["A"], - "OTEL_EXPORTER_OTLP_HEADERS": ["A"], - "OTEL_EXPORTER_OTLP_PROTOCOL": ["A"], - "OTEL_EXPORTER_OTLP_TIMEOUT": ["A"], - "OTEL_BSP_SCHEDULE_DELAY": ["A"], - "OTEL_BSP_MAX_EXPORT_BATCH_SIZE": ["A"], - "OTEL_BSP_MAX_QUEUE_SIZE": ["A"], - "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": ["A"], - "OTEL_EXPORTER_OTLP_METRICS_HEADERS": ["A"], - "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": ["A"], - "OTEL_EXPORTER_OTLP_METRICS_TIMEOUT": ["A"], - "OTEL_METRIC_EXPORT_INTERVAL": ["A"], - "OTEL_METRIC_EXPORT_TIMEOUT": ["A"], - "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": ["A"], - "OTEL_METRICS_EXPORTER": ["A"], - "OTEL_PROPAGATORS": ["A"], - "OTEL_RESOURCE_ATTRIBUTES": ["A"], - "OTEL_SDK_DISABLED": ["A"], - "OTEL_SERVICE_NAME": ["A"], - "OTEL_TRACES_EXPORTER": ["A"], - "OTEL_TRACES_SAMPLER_ARG": ["A"], - "OTEL_TRACES_SAMPLER": ["A"] - }, - "aliases": { - "DD_AGENT_HOST": ["DD_TRACE_AGENT_HOSTNAME"], - "DD_API_KEY": ["DATADOG_API_KEY"], - "DD_API_SECURITY_ENABLED": ["DD_EXPERIMENTAL_API_SECURITY_ENABLED"], - "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE": ["DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING"], - "DD_DOGSTATSD_HOST": ["DD_DOGSTATSD_HOSTNAME"], - "DD_INSTRUMENTATION_TELEMETRY_ENABLED": ["DD_TRACE_TELEMETRY_ENABLED"], - "DD_PROFILING_CODEHOTSPOTS_ENABLED": ["DD_PROFILING_EXPERIMENTAL_CODEHOTSPOTS_ENABLED"], - "DD_PROFILING_CPU_ENABLED": ["DD_PROFILING_EXPERIMENTAL_CPU_ENABLED"], - "DD_PROFILING_ENABLED": ["DD_EXPERIMENTAL_PROFILING_ENABLED"], - "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED": ["DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED"], - "DD_PROFILING_TIMELINE_ENABLED": ["DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED"], - "DD_REMOTE_CONFIGURATION_ENABLED": ["DD_REMOTE_CONFIG_ENABLED" ], - "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED": ["DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED"], - "DD_SERVICE": ["DD_SERVICE_NAME"], - "DD_TRACE_AGENT_URL": ["DD_TRACE_URL"] - }, - "deprecations": { - "DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED": "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED", - "DD_PROFILING_EXPERIMENTAL_CPU_ENABLED": "DD_PROFILING_CPU_ENABLED", - "DD_EXPERIMENTAL_PROFILING_ENABLED": "DD_PROFILING_ENABLED", - "DD_PROFILING_EXPERIMENTAL_CODEHOTSPOTS_ENABLED": "DD_PROFILING_CODEHOTSPOTS_ENABLED", - "DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED": "DD_PROFILING_TIMELINE_ENABLED", - "DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED": "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED" + "DD_ACTION_EXECUTION_ID": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_AGENTLESS_LOG_SUBMISSION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "ciVisAgentlessLogSubmissionEnabled" + ] + } + ], + "DD_AGENTLESS_LOG_SUBMISSION_URL": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_AGENT_HOST": [ + { + "implementation": "E", + "type": "string", + "configurationNames": [ + "hostname" + ], + "default": "127.0.0.1", + "aliases": [ + "DD_TRACE_AGENT_HOSTNAME" + ] + } + ], + "DD_AI_GUARD_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "experimental.aiguard.enabled" + ], + "default": "false" + } + ], + "DD_AI_GUARD_ENDPOINT": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "experimental.aiguard.endpoint" + ], + "default": null + } + ], + "DD_AI_GUARD_MAX_CONTENT_SIZE": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "experimental.aiguard.maxContentSize" + ], + "default": "524288" + } + ], + "DD_AI_GUARD_MAX_MESSAGES_LENGTH": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "experimental.aiguard.maxMessagesLength" + ], + "default": "16" + } + ], + "DD_AI_GUARD_TIMEOUT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "experimental.aiguard.timeout" + ], + "default": "10000" + } + ], + "DD_API_KEY": [ + { + "implementation": "A", + "type": "string", + "default": null, + "aliases": [ + "DATADOG_API_KEY" + ], + "configurationNames": [ + "apiKey" + ] + } + ], + "DD_API_SECURITY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.apiSecurity.enabled" + ], + "default": "true", + "aliases": [ + "DD_EXPERIMENTAL_API_SECURITY_ENABLED" + ] + } + ], + "DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.apiSecurity.endpointCollectionEnabled" + ], + "default": "true" + } + ], + "DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "appsec.apiSecurity.endpointCollectionMessageLimit" + ], + "default": "300" + } + ], + "DD_API_SECURITY_DOWNSTREAM_BODY_ANALYSIS_SAMPLE_RATE": [ + { + "implementation": "A", + "type": "decimal", + "configurationNames": [ + "appsec.apiSecurity.downstreamBodyAnalysisSampleRate" + ], + "default": "0.5" + } + ], + "DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "appsec.apiSecurity.maxDownstreamRequestBodyAnalysis" + ], + "default": "1" + } + ], + "DD_API_SECURITY_SAMPLE_DELAY": [ + { + "implementation": "A", + "type": "decimal", + "default": "30", + "configurationNames": [ + "appsec.apiSecurity.sampleDelay" + ] + } + ], + "DD_APM_FLUSH_DEADLINE_MILLISECONDS": [ + { + "implementation": "A", + "type": "int", + "default": "100" + } + ], + "DD_APM_TRACING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "apmTracingEnabled" + ], + "default": "true" + } + ], + "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE": [ + { + "implementation": "E", + "type": "string", + "configurationNames": [ + "appsec.eventTracking.mode" + ], + "default": "identification", + "aliases": [ + "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING" + ] + } + ], + "DD_APPSEC_COLLECT_ALL_HEADERS": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.extendedHeadersCollection.enabled" + ], + "default": "false", + "deprecated": true + } + ], + "DD_APPSEC_ENABLED": [ + { + "implementation": "C", + "type": "boolean", + "configurationNames": [ + "appsec.enabled" + ], + "default": null + } + ], + "DD_APPSEC_GRAPHQL_BLOCKED_TEMPLATE_JSON": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "appsec.blockedTemplateGraphql" + ], + "default": null + } + ], + "DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.extendedHeadersCollection.redaction" + ], + "default": "true" + } + ], + "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "appsec.blockedTemplateHtml" + ], + "default": null + } + ], + "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "appsec.blockedTemplateJson" + ], + "default": null + } + ], + "DD_APPSEC_MAX_COLLECTED_HEADERS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "appsec.extendedHeadersCollection.maxHeaders" + ], + "default": "50" + } + ], + "DD_APPSEC_MAX_STACK_TRACES": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "appsec.stackTrace.maxStackTraces" + ], + "default": "2" + } + ], + "DD_APPSEC_MAX_STACK_TRACE_DEPTH": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "appsec.stackTrace.maxDepth" + ], + "default": "32" + } + ], + "DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "appsec.obfuscatorKeyRegex" + ], + "default": "(?i)pass|pw(?:or)?d|secret|(?:api|private|public|access)[_-]?key|token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization|jsessionid|phpsessid|asp\\.net[_-]sessionid|sid|jwt" + } + ], + "DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP": [ + { + "implementation": "G", + "type": "string", + "configurationNames": [ + "appsec.obfuscatorValueRegex" + ], + "default": "(?i)(?:p(?:ass)?w(?:or)?d|pass(?:[_-]?phrase)?|secret(?:[_-]?key)?|(?:(?:api|private|public|access)[_-]?)key(?:[_-]?id)?|(?:(?:auth|access|id|refresh)[_-]?)?token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?|jsessionid|phpsessid|asp\\.net(?:[_-]|-)sessionid|sid|jwt)(?:\\s*=([^;&]+)|\"\\s*:\\s*(\"[^\"]+\"|\\d+))|bearer\\s+([a-z0-9\\._\\-]+)|token\\s*:\\s*([a-z0-9]{13})|gh[opsu]_([0-9a-zA-Z]{36})|ey[I-L][\\w=-]+\\.(ey[I-L][\\w=-]+(?:\\.[\\w.+\\/=-]+)?)|[\\-]{5}BEGIN[a-z\\s]+PRIVATE\\sKEY[\\-]{5}([^\\-]+)[\\-]{5}END[a-z\\s]+PRIVATE\\sKEY|ssh-rsa\\s*([a-z0-9\\/\\.+]{100,})" + } + ], + "DD_APPSEC_RASP_COLLECT_REQUEST_BODY": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.rasp.bodyCollection" + ], + "default": "false", + "deprecated": true + } + ], + "DD_APPSEC_RASP_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.rasp.enabled" + ], + "default": "true" + } + ], + "DD_APPSEC_RULES": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "appsec.rules" + ], + "default": null + } + ], + "DD_APPSEC_SCA_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": null, + "configurationNames": [ + "appsec.sca.enabled" + ] + } + ], + "DD_APPSEC_STACK_TRACE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "appsec.stackTrace.enabled" + ], + "default": "true" + } + ], + "DD_APPSEC_TRACE_RATE_LIMIT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "appsec.rateLimit" + ], + "default": "100" + } + ], + "DD_APPSEC_WAF_TIMEOUT": [ + { + "implementation": "E", + "type": "int", + "configurationNames": [ + "appsec.wafTimeout" + ], + "default": "5000" + } + ], + "DD_APP_KEY": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "appKey" + ] + } + ], + "DD_AZURE_RESOURCE_GROUP": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_CIVISIBILITY_AGENTLESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_CIVISIBILITY_AGENTLESS_URL": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER": [ + { + "implementation": "B", + "type": "boolean", + "default": "false" + } + ], + "DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isEarlyFlakeDetectionEnabled" + ] + } + ], + "DD_CIVISIBILITY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_CIVISIBILITY_FLAKY_RETRY_COUNT": [ + { + "implementation": "A", + "type": "int", + "default": "5", + "configurationNames": [ + "flakyTestRetriesCount" + ] + } + ], + "DD_CIVISIBILITY_FLAKY_RETRY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isFlakyTestRetriesEnabled" + ] + } + ], + "DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_CIVISIBILITY_GIT_UPLOAD_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isGitUploadEnabled" + ] + } + ], + "DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isImpactedTestsEnabled" + ] + } + ], + "DD_CIVISIBILITY_ITR_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isIntelligentTestRunnerEnabled" + ] + } + ], + "DD_CIVISIBILITY_MANUAL_API_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isManualApiEnabled" + ] + } + ], + "DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS": [ + { + "implementation": "B", + "type": "int", + "default": "1000" + } + ], + "DD_CIVISIBILITY_TEST_COMMAND": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_CIVISIBILITY_TEST_MODULE_ID": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_CIVISIBILITY_TEST_SESSION_ID": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_CODE_ORIGIN_FOR_SPANS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "codeOriginForSpans.enabled" + ], + "default": "true" + } + ], + "DD_CODE_ORIGIN_FOR_SPANS_EXPERIMENTAL_EXIT_SPANS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "codeOriginForSpans.experimental.exit_spans.enabled" + ] + } + ], + "DD_CRASHTRACKING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "crashtracking.enabled" + ] + } + ], + "DD_CUSTOM_TRACE_ID": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_DATA_STREAMS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "dsmEnabled" + ] + } + ], + "DD_DBM_INJECT_SQL_BASEHASH": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "dbm.injectSqlBaseHash" + ], + "default": "false" + } + ], + "DD_DBM_PROPAGATION_MODE": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "dbmPropagationMode" + ], + "default": "disabled" + } + ], + "DD_DOGSTATSD_HOST": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "dogstatsd.hostname" + ], + "default": "localhost", + "aliases": [ + "DD_DOGSTATSD_HOSTNAME" + ] + } + ], + "DD_DOGSTATSD_PORT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "dogstatsd.port" + ], + "default": "8125" + } + ], + "DD_DYNAMIC_INSTRUMENTATION_CAPTURE_TIMEOUT_MS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "dynamicInstrumentation.captureTimeoutMs" + ], + "default": "15" + } + ], + "DD_DYNAMIC_INSTRUMENTATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "dynamicInstrumentation.enabled" + ], + "default": "false" + } + ], + "DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "dynamicInstrumentation.probeFile" + ], + "default": null + } + ], + "DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS": [ + { + "implementation": "A", + "type": "array", + "configurationNames": [ + "dynamicInstrumentation.redactedIdentifiers" + ], + "default": "" + } + ], + "DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS": [ + { + "implementation": "A", + "type": "array", + "configurationNames": [ + "dynamicInstrumentation.redactionExcludedIdentifiers" + ], + "default": "[]" + } + ], + "DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "dynamicInstrumentation.uploadIntervalSeconds" + ], + "default": "1" + } + ], + "DD_ENABLE_NX_SERVICE_NAME": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_ENV": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "env" + ], + "default": null + } + ], + "DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "experimental.flaggingProvider.initializationTimeoutMs" + ], + "default": "30000" + } + ], + "DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "experimental.flaggingProvider.enabled" + ], + "default": "false" + } + ], + "DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "propagateProcessTags.enabled" + ] + } + ], + "DD_EXPERIMENTAL_TEST_OPT_SETTINGS_CACHE": [ + { + "implementation": "A", + "type": "string", + "default": "" + } + ], + "DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR": [ + { + "implementation": "A", + "type": "string", + "default": "${os.tmpdir()}/dd-trace-git-cache" + } + ], + "DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_EXTERNAL_ENV": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_BRANCH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_AUTHOR_DATE": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_AUTHOR_EMAIL": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_AUTHOR_NAME": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_COMMITTER_DATE": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_COMMITTER_EMAIL": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_COMMITTER_NAME": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_HEAD_SHA": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_MESSAGE": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_COMMIT_SHA": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_FOLDER_PATH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_PROPERTIES_FILE": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_PULL_REQUEST_BASE_BRANCH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_REPOSITORY_URL": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GIT_TAG": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_GRPC_CLIENT_ERROR_STATUSES": [ + { + "implementation": "A", + "type": "array", + "default": "[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]", + "configurationNames": [ + "grpc.client.error.statuses" + ] + } + ], + "DD_GRPC_SERVER_ERROR_STATUSES": [ + { + "implementation": "A", + "type": "array", + "default": "[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]", + "configurationNames": [ + "grpc.server.error.statuses" + ] + } + ], + "DD_HEAP_SNAPSHOT_COUNT": [ + { + "implementation": "A", + "type": "int", + "default": "0", + "configurationNames": [ + "heapSnapshot.count" + ] + } + ], + "DD_HEAP_SNAPSHOT_DESTINATION": [ + { + "implementation": "A", + "type": "string", + "default": "", + "configurationNames": [ + "heapSnapshot.destination" + ] + } + ], + "DD_HEAP_SNAPSHOT_INTERVAL": [ + { + "implementation": "A", + "type": "int", + "default": "3600", + "configurationNames": [ + "heapSnapshot.interval" + ] + } + ], + "DD_IAST_DB_ROWS_TO_TAINT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "iast.dbRowsToTaint" + ], + "default": "1" + } + ], + "DD_IAST_DEDUPLICATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "iast.deduplicationEnabled" + ], + "default": "true" + } + ], + "DD_IAST_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "configurationNames": [ + "iast.enabled" + ], + "default": "false" + } + ], + "DD_IAST_MAX_CONCURRENT_REQUESTS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "iast.maxConcurrentRequests" + ], + "default": "2" + } + ], + "DD_IAST_MAX_CONTEXT_OPERATIONS": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "iast.maxContextOperations" + ], + "default": "2" + } + ], + "DD_IAST_REDACTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "iast.redactionEnabled" + ], + "default": "true" + } + ], + "DD_IAST_REDACTION_NAME_PATTERN": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "iast.redactionNamePattern" + ], + "default": "(?: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)?|(?:sur|last)name|user(?:name)?|address|e?mail)" + } + ], + "DD_IAST_REDACTION_VALUE_PATTERN": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "iast.redactionValuePattern" + ], + "default": "(?:bearer\\s+[a-z0-9\\._\\-]+|glpat-[\\w\\-]{20}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L][\\w=\\-]+\\.ey[I-L][\\w=\\-]+(?:\\.[\\w.+/=\\-]+)?|(?:[\\-]{5}BEGIN[a-z\\s]+PRIVATE\\sKEY[\\-]{5}[^\\-]+[\\-]{5}END[a-z\\s]+PRIVATE\\sKEY[\\-]{5}|ssh-rsa\\s*[a-z0-9/\\.+]{100,})|[\\w\\.-]+@[a-zA-Z\\d\\.-]+\\.[a-zA-Z]{2,})" + } + ], + "DD_IAST_REQUEST_SAMPLING": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "iast.requestSampling" + ], + "default": "30" + } + ], + "DD_IAST_SECURITY_CONTROLS_CONFIGURATION": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "iast.securityControlsConfiguration" + ], + "default": null + } + ], + "DD_IAST_STACK_TRACE_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "configurationNames": [ + "iast.stackTrace.enabled" + ], + "default": "true" + } + ], + "DD_IAST_TELEMETRY_VERBOSITY": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "iast.telemetryVerbosity" + ], + "default": "INFORMATION" + } + ], + "DD_INJECTION_ENABLED": [ + { + "implementation": "A", + "type": "array", + "default": "", + "configurationNames": [ + "injectionEnabled" + ] + } + ], + "DD_INJECT_FORCE": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "injectForce" + ] + } + ], + "DD_INSTRUMENTATION_CONFIG_ID": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "instrumentation_config_id" + ] + } + ], + "DD_INSTRUMENTATION_INSTALL_ID": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "installSignature.id" + ] + } + ], + "DD_INSTRUMENTATION_INSTALL_TIME": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "installSignature.time" + ] + } + ], + "DD_INSTRUMENTATION_INSTALL_TYPE": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "installSignature.type" + ] + } + ], + "DD_INSTRUMENTATION_TELEMETRY_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_TRACE_TELEMETRY_ENABLED" + ], + "configurationNames": [ + "telemetry.enabled" + ] + } + ], + "DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD": [ + { + "implementation": "A", + "type": "int", + "default": "30000", + "configurationNames": [ + "profiling.longLivedThreshold" + ] + } + ], + "DD_INTERNAL_PROFILING_TIMELINE_SAMPLING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_LAMBDA_HANDLER": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_LANGCHAIN_SPAN_CHAR_LIMIT": [ + { + "implementation": "A", + "type": "int", + "default": "128", + "configurationNames": [ + "langchain.spanCharLimit" + ] + } + ], + "DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE": [ + { + "implementation": "A", + "type": "decimal", + "default": "1", + "configurationNames": [ + "langchain.spanPromptCompletionSampleRate" + ] + } + ], + "DD_LLMOBS_AGENTLESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "llmobs.agentlessEnabled" + ], + "default": null + } + ], + "DD_LLMOBS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "llmobs.enabled" + ] + } + ], + "DD_LLMOBS_ML_APP": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "llmobs.mlApp" + ], + "default": null + } + ], + "DD_LOGS_INJECTION": [ + { + "implementation": "B", + "type": "boolean", + "configurationNames": [ + "logInjection" + ], + "default": "true" + } + ], + "DD_LOGS_OTEL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "otelLogsEnabled" + ] + } + ], + "DD_LOG_LEVEL": [ + { + "implementation": "B", + "type": "string", + "default": null + } + ], + "DD_METRICS_OTEL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "otelMetricsEnabled" + ] + } + ], + "DD_MINI_AGENT_PATH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_OPENAI_LOGS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "openAiLogsEnabled" + ] + } + ], + "DD_OPENAI_SPAN_CHAR_LIMIT": [ + { + "implementation": "A", + "type": "int", + "default": "128", + "configurationNames": [ + "openai.spanCharLimit" + ] + } + ], + "DD_PIPELINE_EXECUTION_ID": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_PLAYWRIGHT_WORKER": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_PROFILING_ASYNC_CONTEXT_FRAME_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_PROFILING_CODEHOTSPOTS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_EXPERIMENTAL_CODEHOTSPOTS_ENABLED" + ] + } + ], + "DD_PROFILING_EXPERIMENTAL_CODEHOTSPOTS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_CODEHOTSPOTS_ENABLED" + ], + "deprecated": true + } + ], + "DD_PROFILING_CPU_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_EXPERIMENTAL_CPU_ENABLED" + ] + } + ], + "DD_PROFILING_EXPERIMENTAL_CPU_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_CPU_ENABLED" + ], + "deprecated": true + } + ], + "DD_PROFILING_DEBUG_SOURCE_MAPS": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_PROFILING_DEBUG_UPLOAD_COMPRESSION": [ + { + "implementation": "A", + "type": "string", + "default": "zstd" + } + ], + "DD_PROFILING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "profiling.enabled" + ], + "default": "false", + "aliases": [ + "DD_EXPERIMENTAL_PROFILING_ENABLED" + ] + } + ], + "DD_EXPERIMENTAL_PROFILING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "profiling.enabled" + ], + "default": "false", + "aliases": [ + "DD_PROFILING_ENABLED" + ], + "deprecated": true + } + ], + "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED" + ] + } + ], + "DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED" + ], + "deprecated": true + } + ], + "DD_PROFILING_EXPERIMENTAL_OOM_EXPORT_STRATEGIES": [ + { + "implementation": "A", + "type": "string", + "default": "process" + } + ], + "DD_PROFILING_EXPERIMENTAL_OOM_HEAP_LIMIT_EXTENSION_SIZE": [ + { + "implementation": "A", + "type": "int", + "default": "0" + } + ], + "DD_PROFILING_EXPERIMENTAL_OOM_MAX_HEAP_EXTENSION_COUNT": [ + { + "implementation": "A", + "type": "int", + "default": "0" + } + ], + "DD_PROFILING_EXPERIMENTAL_OOM_MONITORING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_PROFILING_EXPORTERS": [ + { + "implementation": "A", + "type": "string", + "default": "agent", + "configurationNames": [ + "profiling.exporters" + ] + } + ], + "DD_PROFILING_HEAP_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_PROFILING_HEAP_SAMPLING_INTERVAL": [ + { + "implementation": "A", + "type": "int", + "default": "524288" + } + ], + "DD_PROFILING_PPROF_PREFIX": [ + { + "implementation": "A", + "type": "string", + "default": "" + } + ], + "DD_PROFILING_PROFILERS": [ + { + "implementation": "A", + "type": "string", + "default": "space,wall" + } + ], + "DD_PROFILING_SOURCE_MAP": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "profiling.sourceMap" + ] + } + ], + "DD_PROFILING_TIMELINE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED" + ] + } + ], + "DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_PROFILING_TIMELINE_ENABLED" + ], + "deprecated": true + } + ], + "DD_PROFILING_UPLOAD_PERIOD": [ + { + "implementation": "B", + "type": "int", + "default": "65" + } + ], + "DD_PROFILING_UPLOAD_TIMEOUT": [ + { + "implementation": "D", + "type": "int", + "default": "60000" + } + ], + "DD_PROFILING_V8_PROFILER_BUG_WORKAROUND": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_PROFILING_WALLTIME_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_REMOTE_CONFIGURATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "aliases": [ + "DD_REMOTE_CONFIG_ENABLED" + ], + "configurationNames": [ + "remoteConfig.enabled" + ] + } + ], + "DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS": [ + { + "implementation": "A", + "type": "decimal", + "configurationNames": [ + "remoteConfig.pollInterval" + ], + "default": "5.0" + } + ], + "DD_RUNTIME_METRICS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "runtimeMetrics.enabled" + ], + "default": "false" + } + ], + "DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "runtimeMetrics.eventLoop" + ], + "default": "true" + } + ], + "DD_RUNTIME_METRICS_FLUSH_INTERVAL": [ + { + "implementation": "A", + "type": "int", + "default": "10000" + } + ], + "DD_RUNTIME_METRICS_GC_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "runtimeMetrics.gc" + ], + "default": "true" + } + ], + "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "runtimeMetricsRuntimeId" + ], + "default": "false", + "aliases": [ + "DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED" + ] + } + ], + "DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "false", + "aliases": [ + "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED" + ], + "deprecated": true + } + ], + "DD_SERVICE": [ + { + "implementation": "D", + "type": "string", + "configurationNames": [ + "service" + ], + "default": null, + "aliases": [ + "DD_SERVICE_NAME" + ] + } + ], + "DD_SERVICE_MAPPING": [ + { + "implementation": "C", + "type": "map", + "configurationNames": [ + "serviceMapping" + ], + "default": "" + } + ], + "DD_SITE": [ + { + "implementation": "C", + "type": "string", + "default": "datadoghq.com", + "configurationNames": [ + "site" + ] + } + ], + "DD_SPAN_SAMPLING_RULES": [ + { + "implementation": "A", + "type": "array", + "configurationNames": [ + "spanSamplingRules", + "sampler.spanSamplingRules" + ], + "default": "[]" + } + ], + "DD_SPAN_SAMPLING_RULES_FILE": [ + { + "implementation": "B", + "type": "string", + "default": "" + } + ], + "DD_TAGS": [ + { + "implementation": "A", + "type": "map", + "default": "", + "configurationNames": [ + "tags" + ] + } + ], + "DD_TELEMETRY_DEBUG": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "telemetry.debug" + ] + } + ], + "DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "telemetry.dependencyCollection" + ] + } + ], + "DD_TELEMETRY_FORWARDER_PATH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_TELEMETRY_HEARTBEAT_INTERVAL": [ + { + "implementation": "B", + "type": "decimal", + "default": "60.0", + "configurationNames": [ + "telemetry.heartbeatInterval" + ] + } + ], + "DD_TELEMETRY_LOG_COLLECTION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "telemetry.logCollection" + ] + } + ], + "DD_TELEMETRY_METRICS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "telemetry.metrics" + ] + } + ], + "DD_TEST_FAILED_TEST_REPLAY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isTestDynamicInstrumentationEnabled" + ] + } + ], + "DD_TEST_FLEET_CONFIG_PATH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_TEST_LOCAL_CONFIG_PATH": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES": [ + { + "implementation": "C", + "type": "int", + "default": "20", + "configurationNames": [ + "testManagementAttemptToFixRetries" + ] + } + ], + "DD_TEST_MANAGEMENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isTestManagementEnabled" + ] + } + ], + "DD_TEST_SESSION_NAME": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "ciVisibilityTestSessionName" + ] + } + ], + "DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "traceId128BitGenerationEnabled" + ] + } + ], + "DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "traceId128BitLoggingEnabled" + ] + } + ], + "DD_TRACE_AEROSPIKE_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AGENT_PORT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "port" + ], + "default": "8126" + } + ], + "DD_TRACE_AGENT_PROTOCOL_VERSION": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "protocolVersion" + ], + "default": "0.4" + } + ], + "DD_TRACE_AGENT_URL": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "url" + ], + "default": "", + "aliases": [ + "DD_TRACE_URL" + ] + } + ], + "DD_TRACE_AI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AMQP10_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AMQPLIB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_ANTHROPIC_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_GATEWAY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_SERVER_CORE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_SERVER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_SERVER_EXPRESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_SERVER_FASTIFY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_APOLLO_SUBGRAPH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AVSC_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_ADD_SPAN_POINTERS": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "trace.aws.addSpanPointers" + ] + } + ], + "DD_TRACE_AWS_SDK_AWS_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_AWS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_BEDROCKRUNTIME_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_BEDROCKRUNTIME_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_CLOUDWATCHLOGS_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_CLOUDWATCHLOGS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_DYNAMODB_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_DYNAMODB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_EVENTBRIDGE_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_EVENTBRIDGE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_KINESIS_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_KINESIS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_LAMBDA_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_LAMBDA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_NODE_HTTP_HANDLER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_REDSHIFT_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_REDSHIFT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_S3_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_S3_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SFN_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SFN_CLIENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SFN_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SMITHY_CLIENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SNS_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SNS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SQS_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_SQS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_STATES_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_STATES_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_STEPFUNCTIONS_BATCH_PROPAGATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AWS_SDK_STEPFUNCTIONS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AXIOS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AZURE_EVENTHUBS_BATCH_LINKS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AZURE_EVENT_HUBS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AZURE_FUNCTIONS_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AZURE_SERVICEBUS_BATCH_LINKS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_AZURE_SERVICE_BUS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_BAGGAGE_MAX_BYTES": [ + { + "implementation": "A", + "type": "int", + "default": "8192", + "configurationNames": [ + "baggageMaxBytes" + ] + } + ], + "DD_TRACE_BAGGAGE_MAX_ITEMS": [ + { + "implementation": "A", + "type": "int", + "default": "64", + "configurationNames": [ + "baggageMaxItems" + ] + } + ], + "DD_TRACE_BAGGAGE_TAG_KEYS": [ + { + "implementation": "A", + "type": "array", + "default": "user.id, session.id, account.id", + "configurationNames": [ + "baggageTagKeys" + ] + } + ], + "DD_TRACE_BEAUTIFUL_LOGS": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_TRACE_BLUEBIRD_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_BODY_PARSER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_BSON_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_BULLMQ_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_BUNYAN_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CASSANDRA_DRIVER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CHILD_PROCESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CLIENT_IP_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "clientIpEnabled" + ], + "default": "false" + } + ], + "DD_TRACE_CLIENT_IP_HEADER": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "clientIpHeader" + ], + "default": null + } + ], + "DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "cloudPayloadTagging.maxDepth" + ], + "default": "10" + } + ], + "DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING": [ + { + "implementation": "A", + "type": "array", + "configurationNames": [ + "cloudPayloadTagging.request" + ], + "default": null + } + ], + "DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING": [ + { + "implementation": "A", + "type": "array", + "configurationNames": [ + "cloudPayloadTagging.response" + ], + "default": null + } + ], + "DD_TRACE_COLLECTIONS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_COMMONPLUGIN_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CONFLUENTINC_KAFKA_JAVASCRIPT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CONNECT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_COOKIE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_COOKIE_PARSER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_COUCHBASE_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CRYPTO_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CUCUMBER_CUCUMBER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CUCUMBER_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_CYPRESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_DEBUG": [ + { + "implementation": "B", + "type": "boolean", + "default": "false" + } + ], + "DD_TRACE_DISABLED_INSTRUMENTATIONS": [ + { + "implementation": "A", + "type": "string", + "default": "" + } + ], + "DD_TRACE_DISABLED_PLUGINS": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "DD_TRACE_DNS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "trace.dynamoDb.tablePrimaryKeys" + ] + } + ], + "DD_TRACE_ELASTICSEARCH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_ELASTIC_ELASTICSEARCH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_ELASTIC_TRANSPORT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "traceEnabled" + ] + } + ], + "DD_TRACE_ENCODING_DEBUG": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_TRACE_EXPERIMENTAL_B3_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "experimental.b3" + ], + "default": "false" + } + ], + "DD_TRACE_EXPERIMENTAL_EXPORTER": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "experimental.exporter" + ], + "default": "" + } + ], + "DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "experimental.enableGetRumData" + ], + "default": "false" + } + ], + "DD_TRACE_EXPERIMENTAL_SPAN_COUNTS": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_TRACE_EXPERIMENTAL_STATE_TRACKING": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_TRACE_EXPRESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_EXPRESS_MONGO_SANITIZE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_EXPRESS_SESSION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_FASTIFY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_FETCH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_FIND_MY_WAY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_FLUSH_INTERVAL": [ + { + "implementation": "B", + "type": "int", + "configurationNames": [ + "flushInterval" + ], + "default": "2000" + } + ], + "DD_TRACE_FS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GCP_PUBSUB_PUSH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "isGCPPubSubPushSubscriptionEnabled" + ] + } + ], + "DD_TRACE_GENERIC_POOL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GIT_METADATA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "gitMetadataEnabled" + ] + } + ], + "DD_TRACE_GOOGLE_CLOUD_PUBSUB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GOOGLE_CLOUD_VERTEXAI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GOOGLE_GAX_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GOOGLE_GENAI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRAPHQL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRAPHQL_ERROR_EXTENSIONS": [ + { + "implementation": "A", + "type": "array", + "default": "", + "configurationNames": [ + "graphqlErrorExtensions" + ] + } + ], + "DD_TRACE_GRAPHQL_TAG_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRAPHQL_TOOLS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRAPHQL_TOOLS_EXECUTOR_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRAPHQL_YOGA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRPC_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRPC_GRPC_JS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_GRPC_PROTO_LOADER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HANDLEBARS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HAPI_BOOM_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HAPI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HAPI_HAPI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HEADER_TAGS": [ + { + "implementation": "A", + "type": "array", + "default": "", + "configurationNames": [ + "headerTags" + ] + } + ], + "DD_TRACE_HONO_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HTTP2_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HTTPS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_HTTP_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "inferredProxyServicesEnabled" + ] + } + ], + "DD_TRACE_IOREDIS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_IOVALKEY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_CIRCUS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_CONFIG_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_CORE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_ENVIRONMENT_JSDOM_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_ENVIRONMENT_NODE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_GLOBALS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_REPORTERS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_RUNTIME_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_TEST_SEQUENCER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_TRANSFORM_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_JEST_WORKER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_KAFKAJS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_KNEX_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_KOA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_KOA_ROUTER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_KOA_ROUTE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_KOA_WEBSOCKET_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LANGCHAIN_ANTHROPIC_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LANGCHAIN_COHERE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LANGCHAIN_CORE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LANGCHAIN_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LANGCHAIN_GOOGLE_GENAI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LANGCHAIN_OPENAI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LDAPJS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LDAPJS_PROMISE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LEGACY_BAGGAGE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "legacyBaggageEnabled" + ] + } + ], + "DD_TRACE_LIMITD_CLIENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LODASH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_LOG_LEVEL": [ + { + "implementation": "C", + "type": "string", + "default": "debug" + } + ], + "DD_TRACE_LOOPBACK_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MARIADB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MEMCACHED_COMMAND_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "memcachedCommandEnabled" + ] + } + ], + "DD_TRACE_MEMCACHED_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MICROGATEWAY_CORE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MIDDIE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MIDDLEWARE_TRACING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "middlewareTracingEnabled" + ] + } + ], + "DD_TRACE_MOCHA_EACH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MOCHA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MOLECULER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MONGODB_CORE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MONGODB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MONGODB_HEARTBEAT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MONGOOSE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MQUERY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MULTER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MYSQL2_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_MYSQL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_NATIVE_SPAN_EVENTS": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "trace.nativeSpanEvents" + ] + } + ], + "DD_TRACE_NET_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_NEXT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_NODE_CHILD_PROCESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_NODE_REDIS_CLIENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_NODE_SERIALIZE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_NYC_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP": [ + { + "implementation": "F", + "type": "string", + "default": "(?: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,}", + "configurationNames": [ + "queryStringObfuscation" + ] + } + ], + "DD_TRACE_OPENAI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_OPENSEARCH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_OPENSEARCH_PROJECT_OPENSEARCH_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_OPENTELEMETRY_SDK_TRACE_NODE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_ORACLEDB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_OTEL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false" + } + ], + "DD_TRACE_PARTIAL_FLUSH_MIN_SPANS": [ + { + "implementation": "B", + "type": "int", + "configurationNames": [ + "flushMinSpans" + ], + "default": "1000" + } + ], + "DD_TRACE_PASSPORT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PASSPORT_HTTP_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PASSPORT_LOCAL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PEER_SERVICE_DEFAULTS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "spanComputePeerService" + ], + "default": "false" + } + ], + "DD_TRACE_PEER_SERVICE_MAPPING": [ + { + "implementation": "A", + "type": "map", + "configurationNames": [ + "peerServiceMapping" + ], + "default": "" + } + ], + "DD_TRACE_PG_CURSOR_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PG_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PG_NATIVE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PG_QUERY_STREAM_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PINO_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PINO_PRETTY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PLAYWRIGHT_CORE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PLAYWRIGHT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PLAYWRIGHT_TEST_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PRISMA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PROCESS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PROMISE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PROMISE_JS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT": [ + { + "implementation": "B", + "type": "string", + "default": "continue", + "configurationNames": [ + "tracePropagationBehaviorExtract" + ] + } + ], + "DD_TRACE_PROPAGATION_EXTRACT_FIRST": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "tracePropagationExtractFirst" + ] + } + ], + "DD_TRACE_PROPAGATION_STYLE": [ + { + "implementation": "D", + "type": "array", + "configurationNames": [ + "tracePropagationStyle" + ], + "default": "datadog,tracecontext,baggage" + } + ], + "DD_TRACE_PROPAGATION_STYLE_EXTRACT": [ + { + "implementation": "B", + "type": "array", + "configurationNames": [ + "tracePropagationStyle.extract" + ], + "default": "datadog, tracecontext, baggage" + } + ], + "DD_TRACE_PROPAGATION_STYLE_INJECT": [ + { + "implementation": "B", + "type": "array", + "configurationNames": [ + "tracePropagationStyle.inject" + ], + "default": "datadog, tracecontext, baggage" + } + ], + "DD_TRACE_PROTOBUFJS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_PUG_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_Q_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_RATE_LIMIT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "ingestion.rateLimit", + "sampler.rateLimit" + ], + "default": "100" + } + ], + "DD_TRACE_REACT_DOM_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_REACT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_REDIS_CLIENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_REDIS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "spanRemoveIntegrationFromService" + ] + } + ], + "DD_TRACE_REPORT_HOSTNAME": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "reportHostname" + ], + "default": "false" + } + ], + "DD_TRACE_REQUEST_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_RESOURCE_RENAMING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "false", + "configurationNames": [ + "resourceRenamingEnabled" + ] + } + ], + "DD_TRACE_RESTIFY_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_RHEA_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_ROUTER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_SAMPLE_RATE": [ + { + "implementation": "B", + "type": "decimal", + "configurationNames": [ + "ingestion.sampleRate" + ], + "default": null + } + ], + "DD_TRACE_SAMPLING_RULES": [ + { + "implementation": "A", + "type": "array", + "configurationNames": [ + "samplingRules", + "sampler.rules" + ], + "default": "" + } + ], + "DD_TRACE_SCOPE": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "scope" + ] + } + ], + "DD_TRACE_SELENIUM_ENABLED": [ + { + "implementation": "B", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_SELENIUM_WEBDRIVER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_SEQUELIZE_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_SHAREDB_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_SMITHY_SMITHY_CLIENT_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_SPAN_ATTRIBUTE_SCHEMA": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "spanAttributeSchema" + ], + "default": "v0" + } + ], + "DD_TRACE_SPAN_LEAK_DEBUG": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "spanLeakDebug" + ], + "default": "0" + } + ], + "DD_TRACE_SQLITE3_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_STARTUP_LOGS": [ + { + "implementation": "D", + "type": "boolean", + "configurationNames": [ + "startupLogs" + ], + "default": "false" + } + ], + "DD_TRACE_STATS_COMPUTATION_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "configurationNames": [ + "stats.enabled" + ], + "default": "false" + } + ], + "DD_TRACE_SUFFIXPLUGIN_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_TAGS": [ + { + "implementation": "B", + "type": "map", + "default": null, + "aliases": [ + "DD_TRACE_GLOBAL_TAGS" + ] + } + ], + "DD_TRACE_TEDIOUS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_UNDICI_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_URL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_VITEST_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_VITEST_RUNNER_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_VM_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_WEBSOCKET_MESSAGES_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "traceWebsocketMessagesEnabled" + ] + } + ], + "DD_TRACE_WEBSOCKET_MESSAGES_INHERIT_SAMPLING": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "traceWebsocketMessagesInheritSampling" + ] + } + ], + "DD_TRACE_WEBSOCKET_MESSAGES_SEPARATE_TRACES": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "traceWebsocketMessagesSeparateTraces" + ] + } + ], + "DD_TRACE_WHEN_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_WINSTON_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_WORKERPOOL_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_WS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], + "DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH": [ + { + "implementation": "A", + "type": "int", + "default": "512", + "configurationNames": [ + "tagsHeaderMaxLength" + ] + } + ], + "DD_TRACING_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true", + "configurationNames": [ + "tracing" + ] + } + ], + "DD_VERSION": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "version" + ], + "default": null + } + ], + "DD_VERTEXAI_SPAN_CHAR_LIMIT": [ + { + "implementation": "A", + "type": "int", + "default": "128", + "configurationNames": [ + "vertexai.spanCharLimit" + ] + } + ], + "DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE": [ + { + "implementation": "A", + "type": "decimal", + "default": "1", + "configurationNames": [ + "vertexai.spanPromptCompletionSampleRate" + ] + } + ], + "DD_VITEST_WORKER": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "OTEL_BSP_MAX_EXPORT_BATCH_SIZE": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelMaxExportBatchSize" + ], + "default": "512" + } + ], + "OTEL_BSP_MAX_QUEUE_SIZE": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelMaxQueueSize" + ], + "default": "2048" + } + ], + "OTEL_BSP_SCHEDULE_DELAY": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelBatchTimeout" + ], + "default": "5000" + } + ], + "OTEL_EXPORTER_OTLP_ENDPOINT": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "otelUrl" + ] + } + ], + "OTEL_EXPORTER_OTLP_HEADERS": [ + { + "implementation": "B", + "type": "map", + "default": null, + "configurationNames": [ + "otelHeaders" + ] + } + ], + "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "otelLogsUrl" + ] + } + ], + "OTEL_EXPORTER_OTLP_LOGS_HEADERS": [ + { + "implementation": "B", + "type": "map", + "default": null, + "configurationNames": [ + "otelLogsHeaders" + ] + } + ], + "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": [ + { + "implementation": "D", + "type": "string", + "default": "http/protobuf", + "configurationNames": [ + "otelLogsProtocol" + ] + } + ], + "OTEL_EXPORTER_OTLP_LOGS_TIMEOUT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelLogsTimeout" + ], + "default": "10000" + } + ], + "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": [ + { + "implementation": "A", + "type": "string", + "default": null, + "configurationNames": [ + "otelMetricsUrl" + ] + } + ], + "OTEL_EXPORTER_OTLP_METRICS_HEADERS": [ + { + "implementation": "A", + "type": "map", + "default": null, + "configurationNames": [ + "otelMetricsHeaders" + ] + } + ], + "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": [ + { + "implementation": "B", + "type": "string", + "default": "http/protobuf", + "configurationNames": [ + "otelMetricsProtocol" + ] + } + ], + "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE": [ + { + "implementation": "A", + "type": "string", + "configurationNames": [ + "otelMetricsTemporalityPreference" + ], + "default": "delta" + } + ], + "OTEL_EXPORTER_OTLP_METRICS_TIMEOUT": [ + { + "implementation": "B", + "type": "int", + "configurationNames": [ + "otelMetricsTimeout" + ], + "default": "10000" + } + ], + "OTEL_EXPORTER_OTLP_PROTOCOL": [ + { + "implementation": "A", + "type": "string", + "default": "http/protobuf", + "configurationNames": [ + "otelProtocol" + ] + } + ], + "OTEL_EXPORTER_OTLP_TIMEOUT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelTimeout" + ], + "default": "10000" + } + ], + "OTEL_LOGS_EXPORTER": [ + { + "implementation": "A", + "type": "string", + "default": null + } + ], + "OTEL_LOG_LEVEL": [ + { + "implementation": "C", + "type": "string", + "default": null + } + ], + "OTEL_METRICS_EXPORTER": [ + { + "implementation": "C", + "type": "string", + "default": null + } + ], + "OTEL_METRIC_EXPORT_INTERVAL": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelMetricsExportInterval" + ], + "default": "10000" + } + ], + "OTEL_METRIC_EXPORT_TIMEOUT": [ + { + "implementation": "A", + "type": "int", + "configurationNames": [ + "otelMetricsExportTimeout" + ], + "default": "7500" + } + ], + "OTEL_PROPAGATORS": [ + { + "implementation": "A", + "type": "array", + "default": "", + "configurationNames": [ + "tracePropagationStyle.otelPropagators" + ] + } + ], + "OTEL_RESOURCE_ATTRIBUTES": [ + { + "implementation": "B", + "type": "string", + "default": "" + } + ], + "OTEL_SDK_DISABLED": [ + { + "implementation": "C", + "type": "boolean", + "default": "true" + } + ], + "OTEL_SERVICE_NAME": [ + { + "implementation": "B", + "type": "string", + "configurationNames": [ + "service" + ], + "default": null + } + ], + "OTEL_TRACES_EXPORTER": [ + { + "implementation": "F", + "type": "string", + "default": "otlp" + } + ], + "OTEL_TRACES_SAMPLER": [ + { + "implementation": "E", + "type": "string", + "default": "parentbased_always_on" + } + ], + "OTEL_TRACES_SAMPLER_ARG": [ + { + "implementation": "D", + "type": "decimal", + "configurationNames": [ + "sampleRate" + ], + "default": null + } + ] } } diff --git a/packages/dd-trace/src/constants.js b/packages/dd-trace/src/constants.js index a8a431ba55b..1e7715dda8d 100644 --- a/packages/dd-trace/src/constants.js +++ b/packages/dd-trace/src/constants.js @@ -46,8 +46,6 @@ module.exports = { SCHEMA_TOPIC: 'schema.topic', SCHEMA_OPERATION: 'schema.operation', SCHEMA_NAME: 'schema.name', - GRPC_CLIENT_ERROR_STATUSES: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], - GRPC_SERVER_ERROR_STATUSES: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], DYNAMODB_PTR_KIND: 'aws.dynamodb.item', S3_PTR_KIND: 'aws.s3.object', WEBSOCKET_PTR_KIND: 'websocket', diff --git a/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js b/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js index 822c70ad00d..c5bfc453084 100644 --- a/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +++ b/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js @@ -20,7 +20,7 @@ class OtlpHttpExporterBase { * Creates a new OtlpHttpExporterBase instance. * * @param {string} url - OTLP endpoint URL - * @param {string} headers - Additional HTTP headers as comma-separated key=value string + * @param {string|undefined} headers - Additional HTTP headers as comma-separated key=value string * @param {number} timeout - Request timeout in milliseconds * @param {string} protocol - OTLP protocol (http/protobuf or http/json) * @param {string} defaultPath - Default path to use if URL has no path @@ -117,11 +117,10 @@ class OtlpHttpExporterBase { /** * Parses additional HTTP headers from a comma-separated string. - * @param {string} headersString - Comma-separated key=value pairs + * @param {string} [headersString=''] - Comma-separated key=value pairs * @returns {Record} Parsed headers object - * @private */ - #parseAdditionalHeaders (headersString) { + #parseAdditionalHeaders (headersString = '') { const headers = {} let key = '' let value = '' diff --git a/packages/dd-trace/src/opentracing/propagation/text_map.js b/packages/dd-trace/src/opentracing/propagation/text_map.js index 44bee73c175..861d8a0d388 100644 --- a/packages/dd-trace/src/opentracing/propagation/text_map.js +++ b/packages/dd-trace/src/opentracing/propagation/text_map.js @@ -670,10 +670,8 @@ class TextMapPropagator { if (!this._hasPropagationStyle('extract', 'baggage')) return if (!carrier?.baggage) return const baggages = carrier.baggage.split(',') - const tagAllKeys = this._config.baggageTagKeys === '*' - const keysToSpanTag = tagAllKeys - ? undefined - : new Set(this._config.baggageTagKeys.split(',')) + const baggageTagKeys = new Set(this._config.baggageTagKeys) + const tagAllKeys = baggageTagKeys.has('*') for (const keyValue of baggages) { if (!keyValue) continue @@ -707,7 +705,7 @@ class TextMapPropagator { return } - if (spanContext && (tagAllKeys || keysToSpanTag?.has(key))) { + if (spanContext && (tagAllKeys || baggageTagKeys.has(key))) { spanContext._trace.tags['baggage.' + key] = value } setBaggageItem(key, value) diff --git a/packages/dd-trace/src/opentracing/span.js b/packages/dd-trace/src/opentracing/span.js index 7dbbc63b864..ee4e6b7c8cc 100644 --- a/packages/dd-trace/src/opentracing/span.js +++ b/packages/dd-trace/src/opentracing/span.js @@ -3,7 +3,6 @@ // TODO (new internal tracer): use DC events for lifecycle metrics and test them const { performance } = require('perf_hooks') const now = performance.now.bind(performance) -const dateNow = Date.now const util = require('util') const { channel } = require('dc-polyfill') const id = require('../id') @@ -13,12 +12,15 @@ const log = require('../log') const { storage } = require('../../../datadog-core') const telemetryMetrics = require('../telemetry/metrics') const { getValueFromEnvSources } = require('../config/helper') +const { isTrue } = require('../util') const SpanContext = require('./span_context') +const dateNow = Date.now + const tracerMetrics = telemetryMetrics.manager.namespace('tracers') -const DD_TRACE_EXPERIMENTAL_STATE_TRACKING = getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_STATE_TRACKING') -const DD_TRACE_EXPERIMENTAL_SPAN_COUNTS = getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_SPAN_COUNTS') +const DD_TRACE_EXPERIMENTAL_STATE_TRACKING = isTrue(getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_STATE_TRACKING')) +const DD_TRACE_EXPERIMENTAL_SPAN_COUNTS = isTrue(getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_SPAN_COUNTS')) const unfinishedRegistry = createRegistry('unfinished') const finishedRegistry = createRegistry('finished') @@ -251,7 +253,7 @@ class DatadogSpan { return } - if (DD_TRACE_EXPERIMENTAL_STATE_TRACKING === 'true' && !this._spanContext._tags['service.name']) { + if (DD_TRACE_EXPERIMENTAL_STATE_TRACKING && !this._spanContext._tags['service.name']) { log.error('Finishing invalid span: %s', this) } diff --git a/packages/dd-trace/src/profiling/exporter_cli.js b/packages/dd-trace/src/profiling/exporter_cli.js index 190ca5e9189..cba3d6349b1 100644 --- a/packages/dd-trace/src/profiling/exporter_cli.js +++ b/packages/dd-trace/src/profiling/exporter_cli.js @@ -17,6 +17,7 @@ function exporterFromURL (url) { if (url.protocol === 'file:') { return new FileExporter({ pprofPrefix: fileURLToPath(url) }) } + // TODO: Why is DD_INJECTION_ENABLED a comma separated list? const injectionEnabled = (getValueFromEnvSources('DD_INJECTION_ENABLED') ?? '').split(',') const libraryInjected = injectionEnabled.length > 0 const profilingEnabled = (getValueFromEnvSources('DD_PROFILING_ENABLED') ?? '').toLowerCase() diff --git a/packages/dd-trace/src/startup-log.js b/packages/dd-trace/src/startup-log.js index e8717f50092..47b690ed029 100644 --- a/packages/dd-trace/src/startup-log.js +++ b/packages/dd-trace/src/startup-log.js @@ -74,7 +74,7 @@ function tracerInfo () { runtime_metrics_enabled: !!config.runtimeMetrics, profiling_enabled: config.profiling?.enabled === 'true' || config.profiling?.enabled === 'auto', integrations_loaded: Object.keys(pluginManager._pluginsByName), - appsec_enabled: !!config.appsec.enabled, + appsec_enabled: config.appsec.enabled, data_streams_enabled: !!config.dsmEnabled, } diff --git a/packages/dd-trace/test/appsec/iast/vulnerability-formatter/evidence-redaction/sensitive-handler.spec.js b/packages/dd-trace/test/appsec/iast/vulnerability-formatter/evidence-redaction/sensitive-handler.spec.js index 6d5a77e09dc..a350ac6e801 100644 --- a/packages/dd-trace/test/appsec/iast/vulnerability-formatter/evidence-redaction/sensitive-handler.spec.js +++ b/packages/dd-trace/test/appsec/iast/vulnerability-formatter/evidence-redaction/sensitive-handler.spec.js @@ -4,13 +4,15 @@ const assert = require('node:assert/strict') const { afterEach, beforeEach, describe, it } = require('mocha') const sinon = require('sinon') + const sensitiveHandler = require('../../../../../src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler') -const { DEFAULT_IAST_REDACTION_NAME_PATTERN, DEFAULT_IAST_REDACTION_VALUE_PATTERN } = - require('../../../../../src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex') - +const defaults = require('../../../../../src/config/defaults') const { suite } = require('../resources/evidence-redaction-suite.json') +const DEFAULT_IAST_REDACTION_NAME_PATTERN = /** @type {string} */ (defaults['iast.redactionNamePattern']) +const DEFAULT_IAST_REDACTION_VALUE_PATTERN = /** @type {string} */ (defaults['iast.redactionValuePattern']) + function doTest (testCase, parameter) { const description = testCase.description.split(parameter.name).join(parameter.value) const input = JSON.parse(JSON.stringify(testCase.input).split(parameter.name).join(parameter.value)) diff --git a/packages/dd-trace/test/azure_metadata.spec.js b/packages/dd-trace/test/azure_metadata.spec.js index 4e97575881d..47b38f12fc3 100644 --- a/packages/dd-trace/test/azure_metadata.spec.js +++ b/packages/dd-trace/test/azure_metadata.spec.js @@ -11,7 +11,6 @@ const { getAzureAppMetadata, getAzureTagsFromMetadata, getAzureFunctionMetadata describe('Azure metadata', () => { const AZURE_ENV_KEYS = [ 'COMPUTERNAME', - 'DD_AAS_DOTNET_EXTENSION_VERSION', 'DD_AZURE_RESOURCE_GROUP', 'FUNCTIONS_EXTENSION_VERSION', 'FUNCTIONS_WORKER_RUNTIME', @@ -57,9 +56,7 @@ describe('Azure metadata', () => { process.env.WEBSITE_SITE_NAME = 'website_name' process.env.WEBSITE_OWNER_NAME = 'subscription_id+resource_group-regionwebspace' process.env.WEBSITE_INSTANCE_ID = 'instance_id' - process.env.DD_AAS_DOTNET_EXTENSION_VERSION = '1.0' const expected = { - extensionVersion: '1.0', instanceID: 'instance_id', instanceName: 'boaty_mcboatface', operatingSystem: os.platform(), @@ -84,9 +81,7 @@ describe('Azure metadata', () => { process.env.FUNCTIONS_EXTENSION_VERSION = '20' process.env.FUNCTIONS_WORKER_RUNTIME = 'node' process.env.FUNCTIONS_WORKER_RUNTIME_VERSION = '14' - process.env.DD_AAS_DOTNET_EXTENSION_VERSION = '1.0' const expected = { - extensionVersion: '1.0', functionRuntimeVersion: '20', instanceID: 'instance_id', instanceName: 'boaty_mcboatface', @@ -109,9 +104,7 @@ describe('Azure metadata', () => { process.env.WEBSITE_SITE_NAME = 'website_name' process.env.WEBSITE_OWNER_NAME = 'subscription_id+resource_group-regionwebspace' process.env.WEBSITE_INSTANCE_ID = 'instance_id' - process.env.DD_AAS_DOTNET_EXTENSION_VERSION = '1.0' const expected = { - 'aas.environment.extension_version': '1.0', 'aas.environment.instance_id': 'instance_id', 'aas.environment.instance_name': 'boaty_mcboatface', 'aas.environment.os': os.platform(), diff --git a/packages/dd-trace/test/config/index.spec.js b/packages/dd-trace/test/config/index.spec.js index f4048a13769..798217b31b7 100644 --- a/packages/dd-trace/test/config/index.spec.js +++ b/packages/dd-trace/test/config/index.spec.js @@ -12,12 +12,15 @@ const context = describe const proxyquire = require('proxyquire') require('../setup/core') -const { GRPC_CLIENT_ERROR_STATUSES, GRPC_SERVER_ERROR_STATUSES } = require('../../src/constants') +const defaults = require('../../src/config/defaults') const { getEnvironmentVariable, getEnvironmentVariables } = require('../../src/config/helper') const { assertObjectContains } = require('../../../../integration-tests/helpers') const { DD_MAJOR } = require('../../../../version') const StableConfig = require('../../src/config/stable') +const GRPC_CLIENT_ERROR_STATUSES = defaults['grpc.client.error.statuses'] +const GRPC_SERVER_ERROR_STATUSES = defaults['grpc.server.error.statuses'] + describe('Config', () => { let getConfig let log @@ -52,7 +55,10 @@ describe('Config', () => { // Reload the config module with each call to getConfig to ensure we get a new instance of the config. getConfig = (options) => { - const configHelper = proxyquire.noPreserveCache()('../../src/config/helper', {}) + const supportedConfigurations = proxyquire.noPreserveCache()('../../src/config/supported-configurations.json', {}) + const configHelper = proxyquire.noPreserveCache()('../../src/config/helper', { + './supported-configurations.json': supportedConfigurations, + }) const serverless = proxyquire.noPreserveCache()('../../src/serverless', {}) return proxyquire.noPreserveCache()('../../src/config', { './defaults': configDefaults, @@ -331,7 +337,7 @@ describe('Config', () => { }, rateLimit: 100, sca: { - enabled: null, + enabled: undefined, }, stackTrace: { enabled: true, @@ -341,7 +347,7 @@ describe('Config', () => { wafTimeout: 5e3, }, clientIpEnabled: false, - clientIpHeader: null, + clientIpHeader: undefined, codeOriginForSpans: { enabled: true, experimental: { @@ -372,7 +378,7 @@ describe('Config', () => { timeout: 10_000, maxContentSize: 512 * 1024, }, - exporter: undefined, + exporter: '', enableGetRumData: false, }, flushInterval: 2000, @@ -385,18 +391,18 @@ describe('Config', () => { iast: { enabled: false, redactionEnabled: true, - redactionNamePattern: null, - redactionValuePattern: null, + redactionNamePattern: defaults['iast.redactionNamePattern'], + redactionValuePattern: defaults['iast.redactionValuePattern'], telemetryVerbosity: 'INFORMATION', stackTrace: { enabled: true, }, }, - injectForce: null, + injectForce: false, installSignature: { - id: null, - time: null, - type: null, + id: undefined, + time: undefined, + type: undefined, }, instrumentationSource: 'manual', instrumentation_config_id: undefined, @@ -480,15 +486,15 @@ describe('Config', () => { { name: 'appsec.rasp.enabled', value: true, origin: 'default' }, { name: 'appsec.rateLimit', value: 100, origin: 'default' }, { name: 'appsec.rules', value: undefined, origin: 'default' }, - { name: 'appsec.sca.enabled', value: null, origin: 'default' }, + { name: 'appsec.sca.enabled', value: undefined, origin: 'default' }, { name: 'appsec.stackTrace.enabled', value: true, origin: 'default' }, { name: 'appsec.stackTrace.maxDepth', value: 32, origin: 'default' }, { name: 'appsec.stackTrace.maxStackTraces', value: 2, origin: 'default' }, { name: 'appsec.wafTimeout', value: 5e3, origin: 'default' }, { name: 'ciVisAgentlessLogSubmissionEnabled', value: false, origin: 'default' }, - { name: 'ciVisibilityTestSessionName', value: '', origin: 'default' }, + { name: 'ciVisibilityTestSessionName', value: undefined, origin: 'default' }, { name: 'clientIpEnabled', value: false, origin: 'default' }, - { name: 'clientIpHeader', value: null, origin: 'default' }, + { name: 'clientIpHeader', value: undefined, origin: 'default' }, { name: 'codeOriginForSpans.enabled', value: true, origin: 'default' }, { name: 'codeOriginForSpans.experimental.exit_spans.enabled', value: false, origin: 'default' }, { name: 'dbmPropagationMode', value: 'disabled', origin: 'default' }, @@ -507,7 +513,7 @@ describe('Config', () => { { name: 'experimental.aiguard.maxMessagesLength', value: 16, origin: 'default' }, { name: 'experimental.aiguard.timeout', value: 10_000, origin: 'default' }, { name: 'experimental.enableGetRumData', value: false, origin: 'default' }, - { name: 'experimental.exporter', value: undefined, origin: 'default' }, + { name: 'experimental.exporter', value: '', origin: 'default' }, { name: 'flakyTestRetriesCount', value: 5, origin: 'default' }, { name: 'flushInterval', value: 2000, origin: 'default' }, { name: 'flushMinSpans', value: 1000, origin: 'default' }, @@ -520,18 +526,18 @@ describe('Config', () => { { name: 'iast.maxConcurrentRequests', value: 2, origin: 'default' }, { name: 'iast.maxContextOperations', value: 2, origin: 'default' }, { name: 'iast.redactionEnabled', value: true, origin: 'default' }, - { name: 'iast.redactionNamePattern', value: null, origin: 'default' }, - { name: 'iast.redactionValuePattern', value: null, origin: 'default' }, + { name: 'iast.redactionNamePattern', value: defaults['iast.redactionNamePattern'], origin: 'default' }, + { name: 'iast.redactionValuePattern', value: defaults['iast.redactionValuePattern'], origin: 'default' }, { name: 'iast.requestSampling', value: 30, origin: 'default' }, - { name: 'iast.securityControlsConfiguration', value: null, origin: 'default' }, + { name: 'iast.securityControlsConfiguration', value: undefined, origin: 'default' }, { name: 'iast.stackTrace.enabled', value: true, origin: 'default' }, { name: 'iast.telemetryVerbosity', value: 'INFORMATION', origin: 'default' }, - { name: 'injectForce', value: null, origin: 'default' }, + { name: 'injectForce', value: false, origin: 'default' }, { name: 'injectionEnabled', value: [], origin: 'default' }, { name: 'instrumentationSource', value: 'manual', origin: 'default' }, { name: 'isCiVisibility', value: false, origin: 'default' }, - { name: 'isEarlyFlakeDetectionEnabled', value: false, origin: 'default' }, - { name: 'isFlakyTestRetriesEnabled', value: false, origin: 'default' }, + { name: 'isEarlyFlakeDetectionEnabled', value: true, origin: 'default' }, + { name: 'isFlakyTestRetriesEnabled', value: true, origin: 'default' }, { name: 'isGCPFunction', value: false, origin: 'env_var' }, { name: 'isGitUploadEnabled', value: false, origin: 'default' }, { name: 'isIntelligentTestRunnerEnabled', value: false, origin: 'default' }, @@ -540,7 +546,7 @@ describe('Config', () => { { name: 'langchain.spanPromptCompletionSampleRate', value: 1.0, origin: 'default' }, { name: 'llmobs.agentlessEnabled', value: undefined, origin: 'default' }, { name: 'llmobs.mlApp', value: undefined, origin: 'default' }, - { name: 'isTestDynamicInstrumentationEnabled', value: false, origin: 'default' }, + { name: 'isTestDynamicInstrumentationEnabled', value: true, origin: 'default' }, { name: 'logInjection', value: true, origin: 'default' }, { name: 'lookup', value: undefined, origin: 'default' }, { name: 'middlewareTracingEnabled', value: true, origin: 'default' }, @@ -549,14 +555,13 @@ describe('Config', () => { { name: 'peerServiceMapping', value: {}, origin: 'default' }, { name: 'plugins', value: true, origin: 'default' }, { name: 'port', value: '8126', origin: 'default' }, - { name: 'profiling.enabled', value: undefined, origin: 'default' }, + { name: 'profiling.enabled', value: false, origin: 'default' }, { name: 'profiling.exporters', value: 'agent', origin: 'default' }, { name: 'profiling.sourceMap', value: true, origin: 'default' }, { name: 'protocolVersion', value: '0.4', origin: 'default' }, { name: 'queryStringObfuscation', - // eslint-disable-next-line @stylistic/max-len - value: '(?: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,}', + value: config.queryStringObfuscation, origin: 'default', }, { name: 'remoteConfig.enabled', value: true, origin: 'default' }, @@ -579,14 +584,14 @@ describe('Config', () => { { name: 'telemetry.debug', value: false, origin: 'default' }, { name: 'telemetry.dependencyCollection', value: true, origin: 'default' }, { name: 'telemetry.enabled', value: true, origin: 'default' }, - { name: 'telemetry.heartbeatInterval', value: 60000, origin: 'default' }, + { name: 'telemetry.heartbeatInterval', value: 60, origin: 'default' }, { name: 'telemetry.logCollection', value: true, origin: 'default' }, { name: 'telemetry.metrics', value: true, origin: 'default' }, { name: 'traceEnabled', value: true, origin: 'default' }, { name: 'traceId128BitGenerationEnabled', value: true, origin: 'default' }, { name: 'traceId128BitLoggingEnabled', value: true, origin: 'default' }, { name: 'tracing', value: true, origin: 'default' }, - { name: 'url', value: undefined, origin: 'default' }, + { name: 'url', value: '', origin: 'default' }, { name: 'version', value: '', origin: 'default' }, { name: 'vertexai.spanCharLimit', value: 128, origin: 'default' }, { name: 'vertexai.spanPromptCompletionSampleRate', value: 1.0, origin: 'default' }, @@ -2084,7 +2089,7 @@ describe('Config', () => { rateLimit: 42, rules: undefined, sca: { - enabled: null, + enabled: undefined, }, stackTrace: { enabled: true, @@ -2104,7 +2109,7 @@ describe('Config', () => { redactionNamePattern: 'REDACTION_NAME_PATTERN', redactionValuePattern: 'REDACTION_VALUE_PATTERN', requestSampling: 15, - securityControlsConfiguration: null, + securityControlsConfiguration: undefined, stackTrace: { enabled: false, }, @@ -2490,7 +2495,7 @@ describe('Config', () => { it('should not be used', () => { const config = getConfig() - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') }) }) @@ -2504,7 +2509,7 @@ describe('Config', () => { if (os.type() === 'Windows_NT') { assert.strictEqual(existsSyncParam, undefined) - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') } else { assert.strictEqual(existsSyncParam, '/var/run/datadog/apm.socket') assert.strictEqual(config.url.toString(), 'unix:///var/run/datadog/apm.socket') @@ -2538,13 +2543,13 @@ describe('Config', () => { const config = getConfig() - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') }) it('should not be used when options.port provided', () => { const config = getConfig({ port: 12345 }) - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') }) it('should not be used when DD_TRACE_AGENT_HOSTNAME provided', () => { @@ -2552,7 +2557,7 @@ describe('Config', () => { const config = getConfig() - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') }) it('should not be used when DD_AGENT_HOST provided', () => { @@ -2560,13 +2565,13 @@ describe('Config', () => { const config = getConfig() - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') }) it('should not be used when options.hostname provided', () => { const config = getConfig({ hostname: 'example.com' }) - assert.strictEqual(config.url, undefined) + assert.strictEqual(config.url, '') }) }) }) @@ -3290,7 +3295,7 @@ apm_configuration_default: // Regression test for fields that were previously set directly from environment variables // before they were supported by stable config as well. - it('should support legacy direct-set fields through all stableconfig and env var sources', () => { + it('should support legacy direct-set fields through all stable config and env var sources', () => { // Test 1: Local stable config should work fs.writeFileSync( localConfigPath, diff --git a/packages/dd-trace/test/opentelemetry/metrics.spec.js b/packages/dd-trace/test/opentelemetry/metrics.spec.js index fecd59139e2..5e3b82ad449 100644 --- a/packages/dd-trace/test/opentelemetry/metrics.spec.js +++ b/packages/dd-trace/test/opentelemetry/metrics.spec.js @@ -449,7 +449,7 @@ describe('OpenTelemetry Meter Provider', () => { assert.strictEqual(counter.sum.dataPoints[0].asInt, 5) }) - setupTracer({ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'DELTA' }) + setupTracer({ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'delta' }) const meter = metrics.getMeter('app') meter.createCounter('test').add(5) @@ -477,7 +477,7 @@ describe('OpenTelemetry Meter Provider', () => { assert.strictEqual(counter.sum.dataPoints[0].asInt, 10) }) - setupTracer({ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'LOWMEMORY' }) + setupTracer({ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'lowmemory' }) const meter = metrics.getMeter('app') const obs = meter.createObservableCounter('obs') obs.addCallback((result) => result.observe(10))