dd-trace 5.74.0 → 5.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-3rdparty.csv +1 -0
- package/index.d.ts +11 -7
- package/loader-hook.mjs +52 -1
- package/package.json +5 -16
- package/packages/datadog-esbuild/index.js +1 -0
- package/packages/datadog-instrumentations/src/cookie-parser.js +0 -2
- package/packages/datadog-instrumentations/src/cucumber.js +2 -2
- package/packages/datadog-instrumentations/src/express-session.js +0 -1
- package/packages/datadog-instrumentations/src/mariadb.js +9 -7
- package/packages/datadog-instrumentations/src/playwright.js +116 -37
- package/packages/datadog-instrumentations/src/vitest.js +44 -12
- package/packages/datadog-plugin-aws-sdk/src/base.js +0 -1
- package/packages/datadog-plugin-playwright/src/index.js +74 -31
- package/packages/datadog-shimmer/src/shimmer.js +2 -0
- package/packages/dd-trace/src/aiguard/sdk.js +25 -3
- package/packages/dd-trace/src/aiguard/tags.js +4 -1
- package/packages/dd-trace/src/config-helper.js +1 -0
- package/packages/dd-trace/src/config.js +345 -329
- package/packages/dd-trace/src/config_defaults.js +9 -0
- package/packages/dd-trace/src/proxy.js +1 -1
- package/packages/dd-trace/src/telemetry/logs/log-collector.js +5 -3
- package/register.js +1 -11
|
@@ -19,6 +19,7 @@ const { appendRules } = require('./payload-tagging/config')
|
|
|
19
19
|
const { getEnvironmentVariable: getEnv, getEnvironmentVariables } = require('./config-helper')
|
|
20
20
|
const defaults = require('./config_defaults')
|
|
21
21
|
const path = require('path')
|
|
22
|
+
const { DD_MAJOR } = require('../../../version')
|
|
22
23
|
|
|
23
24
|
const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
|
|
24
25
|
|
|
@@ -83,20 +84,6 @@ function getFromOtelSamplerMap (otelTracesSampler, otelTracesSamplerArg) {
|
|
|
83
84
|
return OTEL_TRACES_SAMPLER_MAPPING[otelTracesSampler]
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
function validateOtelPropagators (propagators) {
|
|
87
|
-
if (!getEnv('PROPAGATION_STYLE_EXTRACT') &&
|
|
88
|
-
!getEnv('PROPAGATION_STYLE_INJECT') &&
|
|
89
|
-
!getEnv('DD_TRACE_PROPAGATION_STYLE') &&
|
|
90
|
-
getEnv('OTEL_PROPAGATORS')) {
|
|
91
|
-
for (const style in propagators) {
|
|
92
|
-
if (!VALID_PROPAGATION_STYLES.has(style)) {
|
|
93
|
-
log.warn('unexpected value for OTEL_PROPAGATORS environment variable')
|
|
94
|
-
getCounter('otel.env.invalid', 'DD_TRACE_PROPAGATION_STYLE', 'OTEL_PROPAGATORS').inc()
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
87
|
/**
|
|
101
88
|
* Validate the type of an environment variable
|
|
102
89
|
* @param {string} envVar - The name of the environment variable
|
|
@@ -210,30 +197,33 @@ function remapify (input, mappings) {
|
|
|
210
197
|
return output
|
|
211
198
|
}
|
|
212
199
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
200
|
+
/**
|
|
201
|
+
* Normalizes propagation style values to a lowercase array.
|
|
202
|
+
* Handles both string (comma-separated) and array inputs.
|
|
203
|
+
*/
|
|
204
|
+
function normalizePropagationStyle (value) {
|
|
205
|
+
if (Array.isArray(value)) {
|
|
206
|
+
return value.map(v => v.toLowerCase())
|
|
217
207
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
if (
|
|
208
|
+
if (typeof value === 'string') {
|
|
209
|
+
return value.split(',')
|
|
210
|
+
.filter(v => v !== '')
|
|
211
|
+
.map(v => v.trim().toLowerCase())
|
|
212
|
+
}
|
|
213
|
+
if (value !== undefined) {
|
|
224
214
|
log.warn('Unexpected input for config.tracePropagationStyle')
|
|
225
215
|
}
|
|
216
|
+
}
|
|
226
217
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
.map(v => v.trim().toLowerCase())
|
|
218
|
+
/**
|
|
219
|
+
* Warns if both DD_TRACE_PROPAGATION_STYLE and specific inject/extract vars are set.
|
|
220
|
+
*/
|
|
221
|
+
function warnIfPropagationStyleConflict (general, inject, extract) {
|
|
222
|
+
if (general && (inject || extract)) {
|
|
223
|
+
log.warn(
|
|
224
|
+
// eslint-disable-next-line @stylistic/max-len
|
|
225
|
+
'Use either the DD_TRACE_PROPAGATION_STYLE environment variable or separate DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT environment variables'
|
|
226
|
+
)
|
|
237
227
|
}
|
|
238
228
|
}
|
|
239
229
|
|
|
@@ -315,36 +305,6 @@ class Config {
|
|
|
315
305
|
|
|
316
306
|
checkIfBothOtelAndDdEnvVarSet()
|
|
317
307
|
|
|
318
|
-
const {
|
|
319
|
-
DD_API_KEY,
|
|
320
|
-
DD_APP_KEY,
|
|
321
|
-
DD_INSTRUMENTATION_INSTALL_ID = null,
|
|
322
|
-
DD_INSTRUMENTATION_INSTALL_TIME = null,
|
|
323
|
-
DD_INSTRUMENTATION_INSTALL_TYPE = null,
|
|
324
|
-
DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH,
|
|
325
|
-
DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING,
|
|
326
|
-
DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING,
|
|
327
|
-
DD_TRACE_PROPAGATION_STYLE_EXTRACT,
|
|
328
|
-
DD_TRACE_PROPAGATION_STYLE_INJECT,
|
|
329
|
-
DD_TRACE_PROPAGATION_STYLE,
|
|
330
|
-
} = envs
|
|
331
|
-
|
|
332
|
-
if (DD_TRACE_PROPAGATION_STYLE && (
|
|
333
|
-
DD_TRACE_PROPAGATION_STYLE_INJECT ||
|
|
334
|
-
DD_TRACE_PROPAGATION_STYLE_EXTRACT
|
|
335
|
-
)) {
|
|
336
|
-
log.warn(
|
|
337
|
-
// eslint-disable-next-line @stylistic/max-len
|
|
338
|
-
'Use either the DD_TRACE_PROPAGATION_STYLE environment variable or separate DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT environment variables'
|
|
339
|
-
)
|
|
340
|
-
}
|
|
341
|
-
const PROPAGATION_STYLE_INJECT = propagationStyle(
|
|
342
|
-
'inject',
|
|
343
|
-
options.tracePropagationStyle
|
|
344
|
-
)
|
|
345
|
-
|
|
346
|
-
validateOtelPropagators(PROPAGATION_STYLE_INJECT)
|
|
347
|
-
|
|
348
308
|
if (typeof options.appsec === 'boolean') {
|
|
349
309
|
options.appsec = {
|
|
350
310
|
enabled: options.appsec
|
|
@@ -357,42 +317,8 @@ class Config {
|
|
|
357
317
|
}
|
|
358
318
|
}
|
|
359
319
|
|
|
360
|
-
const cloudPayloadTaggingRequestRules = splitJSONPathRules(
|
|
361
|
-
DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING ??
|
|
362
|
-
options.cloudPayloadTagging?.request ??
|
|
363
|
-
''
|
|
364
|
-
)
|
|
365
|
-
|
|
366
|
-
const cloudPayloadTaggingResponseRules = splitJSONPathRules(
|
|
367
|
-
DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING ??
|
|
368
|
-
options.cloudPayloadTagging?.response ??
|
|
369
|
-
''
|
|
370
|
-
)
|
|
371
|
-
|
|
372
|
-
const cloudPayloadTaggingMaxDepth = maybeInt(
|
|
373
|
-
DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH ??
|
|
374
|
-
options.cloudPayloadTagging?.maxDepth
|
|
375
|
-
) ?? 10
|
|
376
|
-
|
|
377
|
-
// TODO: refactor
|
|
378
|
-
this.apiKey = DD_API_KEY
|
|
379
|
-
this.appKey = DD_APP_KEY
|
|
380
|
-
|
|
381
|
-
// sent in telemetry event app-started
|
|
382
|
-
this.installSignature = {
|
|
383
|
-
id: DD_INSTRUMENTATION_INSTALL_ID,
|
|
384
|
-
time: DD_INSTRUMENTATION_INSTALL_TIME,
|
|
385
|
-
type: DD_INSTRUMENTATION_INSTALL_TYPE
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
this.cloudPayloadTagging = {
|
|
389
|
-
requestsEnabled: !!cloudPayloadTaggingRequestRules,
|
|
390
|
-
responsesEnabled: !!cloudPayloadTaggingResponseRules,
|
|
391
|
-
maxDepth: cloudPayloadTaggingMaxDepth,
|
|
392
|
-
rules: appendRules(cloudPayloadTaggingRequestRules, cloudPayloadTaggingResponseRules)
|
|
393
|
-
}
|
|
394
|
-
|
|
395
320
|
this.#defaults = defaults
|
|
321
|
+
this.#applyDefaults()
|
|
396
322
|
this.#applyStableConfig(this.stableConfig?.localEntries ?? {}, this.#localStableConfig)
|
|
397
323
|
this.#applyEnvironment(envs)
|
|
398
324
|
this.#applyStableConfig(this.stableConfig?.fleetEntries ?? {}, this.#fleetStableConfig)
|
|
@@ -452,35 +378,32 @@ class Config {
|
|
|
452
378
|
}
|
|
453
379
|
|
|
454
380
|
#applyStableConfig (config, obj) {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
this.#setBoolean(obj, 'iast.enabled', DD_IAST_ENABLED)
|
|
475
|
-
this.#setBoolean(obj, 'logInjection', DD_LOGS_INJECTION)
|
|
476
|
-
const profilingEnabled = normalizeProfilingEnabledValue(DD_PROFILING_ENABLED)
|
|
477
|
-
this.#setString(obj, 'profiling.enabled', profilingEnabled)
|
|
478
|
-
this.#setBoolean(obj, 'runtimeMetrics.enabled', DD_RUNTIME_METRICS_ENABLED)
|
|
479
|
-
this.#setString(obj, 'service', DD_SERVICE)
|
|
480
|
-
this.#setString(obj, 'version', DD_VERSION)
|
|
381
|
+
this.#applyConfigValues(config, obj, {})
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
// Set environment-dependent defaults that can be overridden by users
|
|
385
|
+
#applyDefaults () {
|
|
386
|
+
const defaults = this.#defaults
|
|
387
|
+
|
|
388
|
+
if (isInServerlessEnvironment()) {
|
|
389
|
+
this.#setBoolean(defaults, 'crashtracking.enabled', false)
|
|
390
|
+
this.#setString(defaults, 'profiling.enabled', 'false')
|
|
391
|
+
this.#setBoolean(defaults, 'telemetry.enabled', false)
|
|
392
|
+
this.#setBoolean(defaults, 'remoteConfig.enabled', false)
|
|
393
|
+
} else {
|
|
394
|
+
this.#setBoolean(defaults, 'crashtracking.enabled', true)
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
if (getEnv('JEST_WORKER_ID')) {
|
|
398
|
+
this.#setBoolean(defaults, 'telemetry.enabled', false)
|
|
399
|
+
}
|
|
481
400
|
}
|
|
482
401
|
|
|
483
|
-
#applyEnvironment (
|
|
402
|
+
#applyEnvironment () {
|
|
403
|
+
this.#applyConfigValues(getEnvironmentVariables(), this.#env, this.#envUnprocessed)
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
#applyConfigValues (source, target, unprocessedTarget) {
|
|
484
407
|
const {
|
|
485
408
|
AWS_LAMBDA_FUNCTION_NAME,
|
|
486
409
|
DD_AGENT_HOST,
|
|
@@ -489,11 +412,13 @@ class Config {
|
|
|
489
412
|
DD_AI_GUARD_MAX_CONTENT_SIZE,
|
|
490
413
|
DD_AI_GUARD_MAX_MESSAGES_LENGTH,
|
|
491
414
|
DD_AI_GUARD_TIMEOUT,
|
|
415
|
+
DD_API_KEY,
|
|
492
416
|
DD_API_SECURITY_ENABLED,
|
|
493
417
|
DD_API_SECURITY_SAMPLE_DELAY,
|
|
494
418
|
DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED,
|
|
495
419
|
DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT,
|
|
496
420
|
DD_APM_TRACING_ENABLED,
|
|
421
|
+
DD_APP_KEY,
|
|
497
422
|
DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE,
|
|
498
423
|
DD_APPSEC_COLLECT_ALL_HEADERS,
|
|
499
424
|
DD_APPSEC_ENABLED,
|
|
@@ -530,7 +455,6 @@ class Config {
|
|
|
530
455
|
DD_PROFILING_ENABLED,
|
|
531
456
|
DD_GRPC_CLIENT_ERROR_STATUSES,
|
|
532
457
|
DD_GRPC_SERVER_ERROR_STATUSES,
|
|
533
|
-
JEST_WORKER_ID,
|
|
534
458
|
DD_HEAP_SNAPSHOT_COUNT,
|
|
535
459
|
DD_HEAP_SNAPSHOT_DESTINATION,
|
|
536
460
|
DD_HEAP_SNAPSHOT_INTERVAL,
|
|
@@ -562,6 +486,9 @@ class Config {
|
|
|
562
486
|
DD_PROFILING_EXPORTERS,
|
|
563
487
|
DD_PROFILING_SOURCE_MAP,
|
|
564
488
|
DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD,
|
|
489
|
+
DD_INSTRUMENTATION_INSTALL_ID,
|
|
490
|
+
DD_INSTRUMENTATION_INSTALL_TIME,
|
|
491
|
+
DD_INSTRUMENTATION_INSTALL_TYPE,
|
|
565
492
|
DD_REMOTE_CONFIGURATION_ENABLED,
|
|
566
493
|
DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS,
|
|
567
494
|
DD_RUNTIME_METRICS_ENABLED,
|
|
@@ -588,6 +515,9 @@ class Config {
|
|
|
588
515
|
DD_TRACE_BAGGAGE_TAG_KEYS,
|
|
589
516
|
DD_TRACE_CLIENT_IP_ENABLED,
|
|
590
517
|
DD_TRACE_CLIENT_IP_HEADER,
|
|
518
|
+
DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING,
|
|
519
|
+
DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING,
|
|
520
|
+
DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH,
|
|
591
521
|
DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS,
|
|
592
522
|
DD_TRACE_ENABLED,
|
|
593
523
|
DD_TRACE_EXPERIMENTAL_EXPORTER,
|
|
@@ -646,262 +576,327 @@ class Config {
|
|
|
646
576
|
OTEL_EXPORTER_OTLP_TIMEOUT,
|
|
647
577
|
OTEL_BSP_SCHEDULE_DELAY,
|
|
648
578
|
OTEL_BSP_MAX_EXPORT_BATCH_SIZE
|
|
649
|
-
} =
|
|
579
|
+
} = source
|
|
650
580
|
|
|
651
581
|
const tags = {}
|
|
652
|
-
const env = this.#env
|
|
653
582
|
|
|
654
|
-
|
|
583
|
+
const parsedDdTags = parseSpaceSeparatedTags(DD_TAGS)
|
|
584
|
+
tagger.add(this.#parsedDdTags, parsedDdTags)
|
|
655
585
|
|
|
656
586
|
tagger.add(tags, parseSpaceSeparatedTags(handleOtel(OTEL_RESOURCE_ATTRIBUTES)))
|
|
657
|
-
tagger.add(tags,
|
|
587
|
+
tagger.add(tags, parsedDdTags)
|
|
658
588
|
tagger.add(tags, DD_TRACE_TAGS)
|
|
659
589
|
tagger.add(tags, DD_TRACE_GLOBAL_TAGS)
|
|
660
590
|
|
|
661
|
-
this.#
|
|
591
|
+
this.#setString(target, 'apiKey', DD_API_KEY)
|
|
592
|
+
this.#setBoolean(target, 'otelLogsEnabled', DD_LOGS_OTEL_ENABLED)
|
|
662
593
|
// Set OpenTelemetry logs configuration with specific _LOGS_ vars taking precedence over generic _EXPORTERS_ vars
|
|
663
594
|
if (OTEL_EXPORTER_OTLP_ENDPOINT) {
|
|
664
595
|
// Only set if there's a custom URL, otherwise let calc phase handle the default
|
|
665
|
-
this.#setString(
|
|
596
|
+
this.#setString(target, 'otelUrl', OTEL_EXPORTER_OTLP_ENDPOINT)
|
|
666
597
|
}
|
|
667
598
|
if (OTEL_EXPORTER_OTLP_ENDPOINT || OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) {
|
|
668
|
-
this.#setString(
|
|
599
|
+
this.#setString(target, 'otelLogsUrl', OTEL_EXPORTER_OTLP_LOGS_ENDPOINT || target.otelUrl)
|
|
669
600
|
}
|
|
670
|
-
this.#setString(
|
|
671
|
-
this.#setString(
|
|
672
|
-
this.#setString(
|
|
673
|
-
this.#setString(
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
601
|
+
this.#setString(target, 'otelHeaders', OTEL_EXPORTER_OTLP_HEADERS)
|
|
602
|
+
this.#setString(target, 'otelLogsHeaders', OTEL_EXPORTER_OTLP_LOGS_HEADERS || target.otelHeaders)
|
|
603
|
+
this.#setString(target, 'otelProtocol', OTEL_EXPORTER_OTLP_PROTOCOL)
|
|
604
|
+
this.#setString(target, 'otelLogsProtocol', OTEL_EXPORTER_OTLP_LOGS_PROTOCOL || target.otelProtocol)
|
|
605
|
+
target.otelTimeout = maybeInt(OTEL_EXPORTER_OTLP_TIMEOUT)
|
|
606
|
+
target.otelLogsTimeout = maybeInt(OTEL_EXPORTER_OTLP_LOGS_TIMEOUT) || target.otelTimeout
|
|
607
|
+
target.otelLogsBatchTimeout = maybeInt(OTEL_BSP_SCHEDULE_DELAY)
|
|
608
|
+
target.otelLogsMaxExportBatchSize = maybeInt(OTEL_BSP_MAX_EXPORT_BATCH_SIZE)
|
|
678
609
|
this.#setBoolean(
|
|
679
|
-
|
|
610
|
+
target,
|
|
680
611
|
'apmTracingEnabled',
|
|
681
612
|
DD_APM_TRACING_ENABLED ??
|
|
682
613
|
(DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED && isFalse(DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED))
|
|
683
614
|
)
|
|
684
|
-
this.#
|
|
685
|
-
|
|
686
|
-
|
|
615
|
+
this.#setString(target, 'appKey', DD_APP_KEY)
|
|
616
|
+
this.#setBoolean(target, 'appsec.apiSecurity.enabled', DD_API_SECURITY_ENABLED && isTrue(DD_API_SECURITY_ENABLED))
|
|
617
|
+
target['appsec.apiSecurity.sampleDelay'] = maybeFloat(DD_API_SECURITY_SAMPLE_DELAY)
|
|
618
|
+
this.#setBoolean(target, 'appsec.apiSecurity.endpointCollectionEnabled',
|
|
687
619
|
DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED)
|
|
688
|
-
|
|
620
|
+
target['appsec.apiSecurity.endpointCollectionMessageLimit'] =
|
|
689
621
|
maybeInt(DD_API_SECURITY_ENDPOINT_COLLECTION_MESSAGE_LIMIT)
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
this.#setBoolean(
|
|
696
|
-
this.#setString(
|
|
622
|
+
target['appsec.blockedTemplateGraphql'] = maybeFile(DD_APPSEC_GRAPHQL_BLOCKED_TEMPLATE_JSON)
|
|
623
|
+
target['appsec.blockedTemplateHtml'] = maybeFile(DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML)
|
|
624
|
+
unprocessedTarget['appsec.blockedTemplateHtml'] = DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML
|
|
625
|
+
target['appsec.blockedTemplateJson'] = maybeFile(DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON)
|
|
626
|
+
unprocessedTarget['appsec.blockedTemplateJson'] = DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON
|
|
627
|
+
this.#setBoolean(target, 'appsec.enabled', DD_APPSEC_ENABLED)
|
|
628
|
+
this.#setString(target, 'appsec.eventTracking.mode', DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE)
|
|
697
629
|
// TODO appsec.extendedHeadersCollection are deprecated, to delete in a major
|
|
698
|
-
this.#setBoolean(
|
|
630
|
+
this.#setBoolean(target, 'appsec.extendedHeadersCollection.enabled', DD_APPSEC_COLLECT_ALL_HEADERS)
|
|
699
631
|
this.#setBoolean(
|
|
700
|
-
|
|
632
|
+
target,
|
|
701
633
|
'appsec.extendedHeadersCollection.redaction',
|
|
702
634
|
DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED
|
|
703
635
|
)
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
this.#setString(
|
|
707
|
-
this.#setString(
|
|
708
|
-
this.#setBoolean(
|
|
636
|
+
target['appsec.extendedHeadersCollection.maxHeaders'] = maybeInt(DD_APPSEC_MAX_COLLECTED_HEADERS)
|
|
637
|
+
unprocessedTarget['appsec.extendedHeadersCollection.maxHeaders'] = DD_APPSEC_MAX_COLLECTED_HEADERS
|
|
638
|
+
this.#setString(target, 'appsec.obfuscatorKeyRegex', DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP)
|
|
639
|
+
this.#setString(target, 'appsec.obfuscatorValueRegex', DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP)
|
|
640
|
+
this.#setBoolean(target, 'appsec.rasp.enabled', DD_APPSEC_RASP_ENABLED)
|
|
709
641
|
// TODO Deprecated, to delete in a major
|
|
710
|
-
this.#setBoolean(
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
this.#setString(
|
|
642
|
+
this.#setBoolean(target, 'appsec.rasp.bodyCollection', DD_APPSEC_RASP_COLLECT_REQUEST_BODY)
|
|
643
|
+
target['appsec.rateLimit'] = maybeInt(DD_APPSEC_TRACE_RATE_LIMIT)
|
|
644
|
+
unprocessedTarget['appsec.rateLimit'] = DD_APPSEC_TRACE_RATE_LIMIT
|
|
645
|
+
this.#setString(target, 'appsec.rules', DD_APPSEC_RULES)
|
|
714
646
|
// DD_APPSEC_SCA_ENABLED is never used locally, but only sent to the backend
|
|
715
|
-
this.#setBoolean(
|
|
716
|
-
this.#setBoolean(
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
this.#setBoolean(
|
|
727
|
-
this.#setString(
|
|
728
|
-
|
|
729
|
-
|
|
647
|
+
this.#setBoolean(target, 'appsec.sca.enabled', DD_APPSEC_SCA_ENABLED)
|
|
648
|
+
this.#setBoolean(target, 'appsec.stackTrace.enabled', DD_APPSEC_STACK_TRACE_ENABLED)
|
|
649
|
+
target['appsec.stackTrace.maxDepth'] = maybeInt(DD_APPSEC_MAX_STACK_TRACE_DEPTH)
|
|
650
|
+
unprocessedTarget['appsec.stackTrace.maxDepth'] = DD_APPSEC_MAX_STACK_TRACE_DEPTH
|
|
651
|
+
target['appsec.stackTrace.maxStackTraces'] = maybeInt(DD_APPSEC_MAX_STACK_TRACES)
|
|
652
|
+
unprocessedTarget['appsec.stackTrace.maxStackTraces'] = DD_APPSEC_MAX_STACK_TRACES
|
|
653
|
+
target['appsec.wafTimeout'] = maybeInt(DD_APPSEC_WAF_TIMEOUT)
|
|
654
|
+
unprocessedTarget['appsec.wafTimeout'] = DD_APPSEC_WAF_TIMEOUT
|
|
655
|
+
target.baggageMaxBytes = DD_TRACE_BAGGAGE_MAX_BYTES
|
|
656
|
+
target.baggageMaxItems = DD_TRACE_BAGGAGE_MAX_ITEMS
|
|
657
|
+
target.baggageTagKeys = DD_TRACE_BAGGAGE_TAG_KEYS
|
|
658
|
+
this.#setBoolean(target, 'clientIpEnabled', DD_TRACE_CLIENT_IP_ENABLED)
|
|
659
|
+
this.#setString(target, 'clientIpHeader', DD_TRACE_CLIENT_IP_HEADER?.toLowerCase())
|
|
660
|
+
if (DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING || DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING) {
|
|
661
|
+
if (DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING) {
|
|
662
|
+
this.#setBoolean(target, 'cloudPayloadTagging.requestsEnabled', true)
|
|
663
|
+
}
|
|
664
|
+
if (DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING) {
|
|
665
|
+
this.#setBoolean(target, 'cloudPayloadTagging.responsesEnabled', true)
|
|
666
|
+
}
|
|
667
|
+
target['cloudPayloadTagging.rules'] = appendRules(
|
|
668
|
+
splitJSONPathRules(DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING),
|
|
669
|
+
splitJSONPathRules(DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING)
|
|
670
|
+
)
|
|
671
|
+
}
|
|
672
|
+
if (DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH) {
|
|
673
|
+
target['cloudPayloadTagging.maxDepth'] = maybeInt(DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH)
|
|
674
|
+
}
|
|
675
|
+
this.#setBoolean(target, 'crashtracking.enabled', DD_CRASHTRACKING_ENABLED)
|
|
676
|
+
this.#setBoolean(target, 'codeOriginForSpans.enabled', DD_CODE_ORIGIN_FOR_SPANS_ENABLED)
|
|
730
677
|
this.#setBoolean(
|
|
731
|
-
|
|
678
|
+
target,
|
|
732
679
|
'codeOriginForSpans.experimental.exit_spans.enabled',
|
|
733
680
|
DD_CODE_ORIGIN_FOR_SPANS_EXPERIMENTAL_EXIT_SPANS_ENABLED
|
|
734
681
|
)
|
|
735
|
-
this.#setString(
|
|
736
|
-
this.#setString(
|
|
737
|
-
this.#setString(
|
|
738
|
-
this.#setBoolean(
|
|
739
|
-
this.#setBoolean(
|
|
740
|
-
this.#setString(
|
|
741
|
-
this.#setArray(
|
|
682
|
+
this.#setString(target, 'dbmPropagationMode', DD_DBM_PROPAGATION_MODE)
|
|
683
|
+
this.#setString(target, 'dogstatsd.hostname', DD_DOGSTATSD_HOST)
|
|
684
|
+
this.#setString(target, 'dogstatsd.port', DD_DOGSTATSD_PORT)
|
|
685
|
+
this.#setBoolean(target, 'dsmEnabled', DD_DATA_STREAMS_ENABLED)
|
|
686
|
+
this.#setBoolean(target, 'dynamicInstrumentation.enabled', DD_DYNAMIC_INSTRUMENTATION_ENABLED)
|
|
687
|
+
this.#setString(target, 'dynamicInstrumentation.probeFile', DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE)
|
|
688
|
+
this.#setArray(target, 'dynamicInstrumentation.redactedIdentifiers',
|
|
689
|
+
DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS)
|
|
742
690
|
this.#setArray(
|
|
743
|
-
|
|
691
|
+
target,
|
|
744
692
|
'dynamicInstrumentation.redactionExcludedIdentifiers',
|
|
745
693
|
DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS
|
|
746
694
|
)
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
this.#
|
|
751
|
-
this.#setBoolean(
|
|
752
|
-
this.#setBoolean(
|
|
753
|
-
this.#
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
this.#
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
this.#
|
|
771
|
-
|
|
772
|
-
this.#
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
this.#
|
|
776
|
-
|
|
777
|
-
this.#
|
|
778
|
-
|
|
779
|
-
this.#
|
|
780
|
-
this.#setBoolean(
|
|
781
|
-
|
|
782
|
-
|
|
695
|
+
target['dynamicInstrumentation.uploadIntervalSeconds'] =
|
|
696
|
+
maybeFloat(DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS)
|
|
697
|
+
unprocessedTarget['dynamicInstrumentation.uploadInterval'] = DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS
|
|
698
|
+
this.#setString(target, 'env', DD_ENV || tags.env)
|
|
699
|
+
this.#setBoolean(target, 'experimental.flaggingProvider.enabled', DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED)
|
|
700
|
+
this.#setBoolean(target, 'traceEnabled', DD_TRACE_ENABLED)
|
|
701
|
+
this.#setBoolean(target, 'experimental.aiguard.enabled', DD_AI_GUARD_ENABLED)
|
|
702
|
+
this.#setString(target, 'experimental.aiguard.endpoint', DD_AI_GUARD_ENDPOINT)
|
|
703
|
+
target['experimental.aiguard.maxContentSize'] = maybeInt(DD_AI_GUARD_MAX_CONTENT_SIZE)
|
|
704
|
+
unprocessedTarget['experimental.aiguard.maxContentSize'] = DD_AI_GUARD_MAX_CONTENT_SIZE
|
|
705
|
+
target['experimental.aiguard.maxMessagesLength'] = maybeInt(DD_AI_GUARD_MAX_MESSAGES_LENGTH)
|
|
706
|
+
unprocessedTarget['experimental.aiguard.maxMessagesLength'] = DD_AI_GUARD_MAX_MESSAGES_LENGTH
|
|
707
|
+
target['experimental.aiguard.timeout'] = maybeInt(DD_AI_GUARD_TIMEOUT)
|
|
708
|
+
unprocessedTarget['experimental.aiguard.timeout'] = DD_AI_GUARD_TIMEOUT
|
|
709
|
+
this.#setBoolean(target, 'experimental.enableGetRumData', DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED)
|
|
710
|
+
this.#setString(target, 'experimental.exporter', DD_TRACE_EXPERIMENTAL_EXPORTER)
|
|
711
|
+
if (AWS_LAMBDA_FUNCTION_NAME) {
|
|
712
|
+
target.flushInterval = 0
|
|
713
|
+
} else if (DD_TRACE_FLUSH_INTERVAL) {
|
|
714
|
+
target.flushInterval = maybeInt(DD_TRACE_FLUSH_INTERVAL)
|
|
715
|
+
}
|
|
716
|
+
target.flushMinSpans = maybeInt(DD_TRACE_PARTIAL_FLUSH_MIN_SPANS)
|
|
717
|
+
unprocessedTarget.flushMinSpans = DD_TRACE_PARTIAL_FLUSH_MIN_SPANS
|
|
718
|
+
this.#setBoolean(target, 'gitMetadataEnabled', DD_TRACE_GIT_METADATA_ENABLED)
|
|
719
|
+
this.#setIntegerRangeSet(target, 'grpc.client.error.statuses', DD_GRPC_CLIENT_ERROR_STATUSES)
|
|
720
|
+
this.#setIntegerRangeSet(target, 'grpc.server.error.statuses', DD_GRPC_SERVER_ERROR_STATUSES)
|
|
721
|
+
this.#setArray(target, 'headerTags', DD_TRACE_HEADER_TAGS)
|
|
722
|
+
target['heapSnapshot.count'] = maybeInt(DD_HEAP_SNAPSHOT_COUNT)
|
|
723
|
+
this.#setString(target, 'heapSnapshot.destination', DD_HEAP_SNAPSHOT_DESTINATION)
|
|
724
|
+
target['heapSnapshot.interval'] = maybeInt(DD_HEAP_SNAPSHOT_INTERVAL)
|
|
725
|
+
this.#setString(target, 'hostname', DD_AGENT_HOST)
|
|
726
|
+
target['iast.dbRowsToTaint'] = maybeInt(DD_IAST_DB_ROWS_TO_TAINT)
|
|
727
|
+
this.#setBoolean(target, 'iast.deduplicationEnabled', DD_IAST_DEDUPLICATION_ENABLED)
|
|
728
|
+
this.#setBoolean(target, 'iast.enabled', DD_IAST_ENABLED)
|
|
729
|
+
target['iast.maxConcurrentRequests'] = maybeInt(DD_IAST_MAX_CONCURRENT_REQUESTS)
|
|
730
|
+
unprocessedTarget['iast.maxConcurrentRequests'] = DD_IAST_MAX_CONCURRENT_REQUESTS
|
|
731
|
+
target['iast.maxContextOperations'] = maybeInt(DD_IAST_MAX_CONTEXT_OPERATIONS)
|
|
732
|
+
unprocessedTarget['iast.maxContextOperations'] = DD_IAST_MAX_CONTEXT_OPERATIONS
|
|
733
|
+
this.#setBoolean(target, 'iast.redactionEnabled', DD_IAST_REDACTION_ENABLED && !isFalse(DD_IAST_REDACTION_ENABLED))
|
|
734
|
+
this.#setString(target, 'iast.redactionNamePattern', DD_IAST_REDACTION_NAME_PATTERN)
|
|
735
|
+
this.#setString(target, 'iast.redactionValuePattern', DD_IAST_REDACTION_VALUE_PATTERN)
|
|
783
736
|
const iastRequestSampling = maybeInt(DD_IAST_REQUEST_SAMPLING)
|
|
784
737
|
if (iastRequestSampling !== undefined && iastRequestSampling > -1 && iastRequestSampling < 101) {
|
|
785
|
-
|
|
738
|
+
target['iast.requestSampling'] = iastRequestSampling
|
|
786
739
|
}
|
|
787
|
-
|
|
788
|
-
this.#setString(
|
|
789
|
-
this.#setString(
|
|
790
|
-
this.#setBoolean(
|
|
791
|
-
this.#
|
|
792
|
-
this.#setString(
|
|
793
|
-
this.#
|
|
794
|
-
this.#
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
this.#setBoolean(
|
|
799
|
-
this.#setBoolean(
|
|
800
|
-
this.#setBoolean(
|
|
801
|
-
|
|
802
|
-
|
|
740
|
+
unprocessedTarget['iast.requestSampling'] = DD_IAST_REQUEST_SAMPLING
|
|
741
|
+
this.#setString(target, 'iast.securityControlsConfiguration', DD_IAST_SECURITY_CONTROLS_CONFIGURATION)
|
|
742
|
+
this.#setString(target, 'iast.telemetryVerbosity', DD_IAST_TELEMETRY_VERBOSITY)
|
|
743
|
+
this.#setBoolean(target, 'iast.stackTrace.enabled', DD_IAST_STACK_TRACE_ENABLED)
|
|
744
|
+
this.#setString(target, 'installSignature.id', DD_INSTRUMENTATION_INSTALL_ID)
|
|
745
|
+
this.#setString(target, 'installSignature.time', DD_INSTRUMENTATION_INSTALL_TIME)
|
|
746
|
+
this.#setString(target, 'installSignature.type', DD_INSTRUMENTATION_INSTALL_TYPE)
|
|
747
|
+
this.#setArray(target, 'injectionEnabled', DD_INJECTION_ENABLED)
|
|
748
|
+
if (DD_INJECTION_ENABLED !== undefined) {
|
|
749
|
+
this.#setString(target, 'instrumentationSource', DD_INJECTION_ENABLED ? 'ssi' : 'manual')
|
|
750
|
+
}
|
|
751
|
+
this.#setBoolean(target, 'injectForce', DD_INJECT_FORCE)
|
|
752
|
+
this.#setBoolean(target, 'isAzureFunction', getIsAzureFunction())
|
|
753
|
+
this.#setBoolean(target, 'isGCPFunction', getIsGCPFunction())
|
|
754
|
+
target['langchain.spanCharLimit'] = maybeInt(DD_LANGCHAIN_SPAN_CHAR_LIMIT)
|
|
755
|
+
target['langchain.spanPromptCompletionSampleRate'] = maybeFloat(DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
|
|
756
|
+
this.#setBoolean(target, 'legacyBaggageEnabled', DD_TRACE_LEGACY_BAGGAGE_ENABLED)
|
|
757
|
+
this.#setBoolean(target, 'llmobs.agentlessEnabled', DD_LLMOBS_AGENTLESS_ENABLED)
|
|
758
|
+
this.#setBoolean(target, 'llmobs.enabled', DD_LLMOBS_ENABLED)
|
|
759
|
+
this.#setString(target, 'llmobs.mlApp', DD_LLMOBS_ML_APP)
|
|
760
|
+
this.#setBoolean(target, 'logInjection', DD_LOGS_INJECTION)
|
|
803
761
|
// Requires an accompanying DD_APM_OBFUSCATION_MEMCACHED_KEEP_COMMAND=true in the agent
|
|
804
|
-
this.#setBoolean(
|
|
805
|
-
this.#setBoolean(
|
|
806
|
-
this.#setBoolean(
|
|
807
|
-
|
|
808
|
-
|
|
762
|
+
this.#setBoolean(target, 'memcachedCommandEnabled', DD_TRACE_MEMCACHED_COMMAND_ENABLED)
|
|
763
|
+
this.#setBoolean(target, 'middlewareTracingEnabled', DD_TRACE_MIDDLEWARE_TRACING_ENABLED)
|
|
764
|
+
this.#setBoolean(target, 'openAiLogsEnabled', DD_OPENAI_LOGS_ENABLED)
|
|
765
|
+
target['openai.spanCharLimit'] = maybeInt(DD_OPENAI_SPAN_CHAR_LIMIT)
|
|
766
|
+
unprocessedTarget.openaiSpanCharLimit = DD_OPENAI_SPAN_CHAR_LIMIT
|
|
809
767
|
if (DD_TRACE_PEER_SERVICE_MAPPING) {
|
|
810
|
-
|
|
768
|
+
target.peerServiceMapping = Object.fromEntries(
|
|
811
769
|
DD_TRACE_PEER_SERVICE_MAPPING.split(',').map(x => x.trim().split(':'))
|
|
812
770
|
)
|
|
813
|
-
|
|
771
|
+
unprocessedTarget.peerServiceMapping = DD_TRACE_PEER_SERVICE_MAPPING
|
|
814
772
|
}
|
|
815
|
-
this.#setString(
|
|
816
|
-
const profilingEnabled = normalizeProfilingEnabledValue(
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
)
|
|
820
|
-
this.#setString(env, 'profiling.enabled', profilingEnabled)
|
|
821
|
-
this.#setString(env, 'profiling.exporters', DD_PROFILING_EXPORTERS)
|
|
822
|
-
this.#setBoolean(env, 'profiling.sourceMap', DD_PROFILING_SOURCE_MAP && !isFalse(DD_PROFILING_SOURCE_MAP))
|
|
773
|
+
this.#setString(target, 'port', DD_TRACE_AGENT_PORT)
|
|
774
|
+
const profilingEnabled = normalizeProfilingEnabledValue(DD_PROFILING_ENABLED)
|
|
775
|
+
this.#setString(target, 'profiling.enabled', profilingEnabled)
|
|
776
|
+
this.#setString(target, 'profiling.exporters', DD_PROFILING_EXPORTERS)
|
|
777
|
+
this.#setBoolean(target, 'profiling.sourceMap', DD_PROFILING_SOURCE_MAP && !isFalse(DD_PROFILING_SOURCE_MAP))
|
|
823
778
|
if (DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD) {
|
|
824
779
|
// This is only used in testing to not have to wait 30s
|
|
825
|
-
|
|
780
|
+
target['profiling.longLivedThreshold'] = Number(DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD)
|
|
826
781
|
}
|
|
827
782
|
|
|
828
|
-
this.#setString(
|
|
829
|
-
this.#setString(
|
|
830
|
-
this.#setBoolean(
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
this.#setBoolean(
|
|
783
|
+
this.#setString(target, 'protocolVersion', DD_TRACE_AGENT_PROTOCOL_VERSION)
|
|
784
|
+
this.#setString(target, 'queryStringObfuscation', DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP)
|
|
785
|
+
this.#setBoolean(target, 'remoteConfig.enabled', DD_REMOTE_CONFIGURATION_ENABLED)
|
|
786
|
+
target['remoteConfig.pollInterval'] = maybeFloat(DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS)
|
|
787
|
+
unprocessedTarget['remoteConfig.pollInterval'] = DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS
|
|
788
|
+
this.#setBoolean(target, 'reportHostname', DD_TRACE_REPORT_HOSTNAME)
|
|
834
789
|
// only used to explicitly set runtimeMetrics to false
|
|
835
790
|
const otelSetRuntimeMetrics = String(OTEL_METRICS_EXPORTER).toLowerCase() === 'none'
|
|
836
791
|
? false
|
|
837
792
|
: undefined
|
|
838
|
-
this.#setBoolean(
|
|
793
|
+
this.#setBoolean(target, 'runtimeMetrics.enabled', DD_RUNTIME_METRICS_ENABLED ||
|
|
839
794
|
otelSetRuntimeMetrics)
|
|
840
|
-
this.#setBoolean(
|
|
841
|
-
this.#setBoolean(
|
|
842
|
-
this.#setBoolean(
|
|
843
|
-
this.#setArray(
|
|
795
|
+
this.#setBoolean(target, 'runtimeMetrics.eventLoop', DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED)
|
|
796
|
+
this.#setBoolean(target, 'runtimeMetrics.gc', DD_RUNTIME_METRICS_GC_ENABLED)
|
|
797
|
+
this.#setBoolean(target, 'runtimeMetricsRuntimeId', DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED)
|
|
798
|
+
this.#setArray(target, 'sampler.spanSamplingRules', reformatSpanSamplingRules(
|
|
844
799
|
maybeJsonFile(DD_SPAN_SAMPLING_RULES_FILE) ??
|
|
845
800
|
safeJsonParse(DD_SPAN_SAMPLING_RULES)
|
|
846
801
|
))
|
|
847
|
-
this.#setUnit(
|
|
802
|
+
this.#setUnit(target, 'sampleRate', DD_TRACE_SAMPLE_RATE ||
|
|
848
803
|
getFromOtelSamplerMap(OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG))
|
|
849
|
-
|
|
850
|
-
this.#setSamplingRule(
|
|
851
|
-
|
|
852
|
-
this.#setString(
|
|
853
|
-
this.#setString(
|
|
804
|
+
target['sampler.rateLimit'] = DD_TRACE_RATE_LIMIT
|
|
805
|
+
this.#setSamplingRule(target, 'sampler.rules', safeJsonParse(DD_TRACE_SAMPLING_RULES))
|
|
806
|
+
unprocessedTarget['sampler.rules'] = DD_TRACE_SAMPLING_RULES
|
|
807
|
+
this.#setString(target, 'scope', DD_TRACE_SCOPE)
|
|
808
|
+
this.#setString(target, 'service', DD_SERVICE || tags.service || OTEL_SERVICE_NAME)
|
|
854
809
|
if (DD_SERVICE_MAPPING) {
|
|
855
|
-
|
|
810
|
+
target.serviceMapping = Object.fromEntries(
|
|
856
811
|
DD_SERVICE_MAPPING.split(',').map(x => x.trim().split(':'))
|
|
857
812
|
)
|
|
858
813
|
}
|
|
859
|
-
this.#setString(
|
|
814
|
+
this.#setString(target, 'site', DD_SITE)
|
|
860
815
|
if (DD_TRACE_SPAN_ATTRIBUTE_SCHEMA) {
|
|
861
|
-
this.#setString(
|
|
862
|
-
|
|
816
|
+
this.#setString(target, 'spanAttributeSchema', validateNamingVersion(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA))
|
|
817
|
+
unprocessedTarget.spanAttributeSchema = DD_TRACE_SPAN_ATTRIBUTE_SCHEMA
|
|
863
818
|
}
|
|
864
819
|
// 0: disabled, 1: logging, 2: garbage collection + logging
|
|
865
|
-
|
|
866
|
-
this.#setBoolean(
|
|
867
|
-
this.#setBoolean(
|
|
868
|
-
this.#setTags(
|
|
869
|
-
|
|
870
|
-
this.#setBoolean(
|
|
871
|
-
|
|
872
|
-
this.#
|
|
873
|
-
this.#setBoolean(
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
this.#
|
|
877
|
-
this.#setBoolean(
|
|
878
|
-
this.#setBoolean(
|
|
879
|
-
this.#setBoolean(
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
env.tracePropagationBehaviorExtract =
|
|
884
|
-
VALID_PROPAGATION_BEHAVIOR_EXTRACT.has(stringPropagationBehaviorExtract)
|
|
885
|
-
? stringPropagationBehaviorExtract
|
|
886
|
-
: 'continue'
|
|
887
|
-
this.#setBoolean(env, 'tracePropagationStyle.otelPropagators',
|
|
888
|
-
DD_TRACE_PROPAGATION_STYLE ||
|
|
889
|
-
DD_TRACE_PROPAGATION_STYLE_INJECT ||
|
|
820
|
+
target.spanLeakDebug = maybeInt(DD_TRACE_SPAN_LEAK_DEBUG)
|
|
821
|
+
this.#setBoolean(target, 'spanRemoveIntegrationFromService', DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED)
|
|
822
|
+
this.#setBoolean(target, 'startupLogs', DD_TRACE_STARTUP_LOGS)
|
|
823
|
+
this.#setTags(target, 'tags', tags)
|
|
824
|
+
target.tagsHeaderMaxLength = DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH
|
|
825
|
+
this.#setBoolean(target, 'telemetry.enabled', DD_INSTRUMENTATION_TELEMETRY_ENABLED)
|
|
826
|
+
this.#setString(target, 'instrumentation_config_id', DD_INSTRUMENTATION_CONFIG_ID)
|
|
827
|
+
this.#setBoolean(target, 'telemetry.debug', DD_TELEMETRY_DEBUG)
|
|
828
|
+
this.#setBoolean(target, 'telemetry.dependencyCollection', DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED)
|
|
829
|
+
target['telemetry.heartbeatInterval'] = maybeInt(Math.floor(DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000))
|
|
830
|
+
unprocessedTarget['telemetry.heartbeatInterval'] = DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000
|
|
831
|
+
this.#setBoolean(target, 'telemetry.logCollection', DD_TELEMETRY_LOG_COLLECTION_ENABLED)
|
|
832
|
+
this.#setBoolean(target, 'telemetry.metrics', DD_TELEMETRY_METRICS_ENABLED)
|
|
833
|
+
this.#setBoolean(target, 'traceId128BitGenerationEnabled', DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED)
|
|
834
|
+
this.#setBoolean(target, 'traceId128BitLoggingEnabled', DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED)
|
|
835
|
+
warnIfPropagationStyleConflict(
|
|
836
|
+
DD_TRACE_PROPAGATION_STYLE,
|
|
837
|
+
DD_TRACE_PROPAGATION_STYLE_INJECT,
|
|
890
838
|
DD_TRACE_PROPAGATION_STYLE_EXTRACT
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
839
|
+
)
|
|
840
|
+
if (DD_TRACE_PROPAGATION_STYLE !== undefined) {
|
|
841
|
+
this.#setArray(target, 'tracePropagationStyle.inject', normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE))
|
|
842
|
+
this.#setArray(target, 'tracePropagationStyle.extract', normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE))
|
|
843
|
+
}
|
|
844
|
+
if (DD_TRACE_PROPAGATION_STYLE_INJECT !== undefined) {
|
|
845
|
+
this.#setArray(target, 'tracePropagationStyle.inject',
|
|
846
|
+
normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE_INJECT))
|
|
847
|
+
}
|
|
848
|
+
if (DD_TRACE_PROPAGATION_STYLE_EXTRACT !== undefined) {
|
|
849
|
+
this.#setArray(target, 'tracePropagationStyle.extract',
|
|
850
|
+
normalizePropagationStyle(DD_TRACE_PROPAGATION_STYLE_EXTRACT))
|
|
851
|
+
}
|
|
852
|
+
this.#setBoolean(target, 'tracePropagationExtractFirst', DD_TRACE_PROPAGATION_EXTRACT_FIRST)
|
|
853
|
+
if (DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT !== undefined) {
|
|
854
|
+
const stringPropagationBehaviorExtract = String(DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT)
|
|
855
|
+
target.tracePropagationBehaviorExtract =
|
|
856
|
+
VALID_PROPAGATION_BEHAVIOR_EXTRACT.has(stringPropagationBehaviorExtract)
|
|
857
|
+
? stringPropagationBehaviorExtract
|
|
858
|
+
: 'continue'
|
|
859
|
+
}
|
|
860
|
+
if (DD_TRACE_PROPAGATION_STYLE !== undefined ||
|
|
861
|
+
DD_TRACE_PROPAGATION_STYLE_INJECT !== undefined ||
|
|
862
|
+
DD_TRACE_PROPAGATION_STYLE_EXTRACT !== undefined ||
|
|
863
|
+
OTEL_PROPAGATORS !== undefined) {
|
|
864
|
+
// At least one var is defined, calculate value using truthy logic
|
|
865
|
+
const useDdStyle = DD_TRACE_PROPAGATION_STYLE ||
|
|
866
|
+
DD_TRACE_PROPAGATION_STYLE_INJECT ||
|
|
867
|
+
DD_TRACE_PROPAGATION_STYLE_EXTRACT
|
|
868
|
+
this.#setBoolean(target, 'tracePropagationStyle.otelPropagators',
|
|
869
|
+
useDdStyle ? false : !!OTEL_PROPAGATORS)
|
|
870
|
+
|
|
871
|
+
// Use OTEL_PROPAGATORS if no DD-specific vars are set
|
|
872
|
+
if (!useDdStyle && OTEL_PROPAGATORS) {
|
|
873
|
+
const otelStyles = normalizePropagationStyle(OTEL_PROPAGATORS)
|
|
874
|
+
// Validate OTEL propagators
|
|
875
|
+
for (const style of otelStyles || []) {
|
|
876
|
+
if (!VALID_PROPAGATION_STYLES.has(style)) {
|
|
877
|
+
log.warn('unexpected value %s for OTEL_PROPAGATORS environment variable', style)
|
|
878
|
+
getCounter('otel.env.invalid', 'DD_TRACE_PROPAGATION_STYLE', 'OTEL_PROPAGATORS').inc()
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
// Set inject/extract from OTEL_PROPAGATORS
|
|
882
|
+
if (otelStyles) {
|
|
883
|
+
this.#setArray(target, 'tracePropagationStyle.inject', otelStyles)
|
|
884
|
+
this.#setArray(target, 'tracePropagationStyle.extract', otelStyles)
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
this.#setBoolean(target, 'traceWebsocketMessagesEnabled', DD_TRACE_WEBSOCKET_MESSAGES_ENABLED)
|
|
889
|
+
this.#setBoolean(target, 'traceWebsocketMessagesInheritSampling', DD_TRACE_WEBSOCKET_MESSAGES_INHERIT_SAMPLING)
|
|
890
|
+
this.#setBoolean(target, 'traceWebsocketMessagesSeparateTraces', DD_TRACE_WEBSOCKET_MESSAGES_SEPARATE_TRACES)
|
|
891
|
+
this.#setBoolean(target, 'tracing', DD_TRACING_ENABLED)
|
|
892
|
+
this.#setString(target, 'version', DD_VERSION || tags.version)
|
|
893
|
+
this.#setBoolean(target, 'inferredProxyServicesEnabled', DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED)
|
|
894
|
+
this.#setBoolean(target, 'trace.aws.addSpanPointers', DD_TRACE_AWS_ADD_SPAN_POINTERS)
|
|
895
|
+
this.#setString(target, 'trace.dynamoDb.tablePrimaryKeys', DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS)
|
|
896
|
+
this.#setArray(target, 'graphqlErrorExtensions', DD_TRACE_GRAPHQL_ERROR_EXTENSIONS)
|
|
897
|
+
this.#setBoolean(target, 'trace.nativeSpanEvents', DD_TRACE_NATIVE_SPAN_EVENTS)
|
|
898
|
+
target['vertexai.spanPromptCompletionSampleRate'] = maybeFloat(DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
|
|
899
|
+
target['vertexai.spanCharLimit'] = maybeInt(DD_VERTEXAI_SPAN_CHAR_LIMIT)
|
|
905
900
|
}
|
|
906
901
|
|
|
907
902
|
#applyOptions (options) {
|
|
@@ -954,6 +949,25 @@ class Config {
|
|
|
954
949
|
this.#optsUnprocessed['appsec.wafTimeout'] = options.appsec?.wafTimeout
|
|
955
950
|
this.#setBoolean(opts, 'clientIpEnabled', options.clientIpEnabled)
|
|
956
951
|
this.#setString(opts, 'clientIpHeader', options.clientIpHeader?.toLowerCase())
|
|
952
|
+
if (options.cloudPayloadTagging?.request || options.cloudPayloadTagging?.response) {
|
|
953
|
+
if (options.cloudPayloadTagging.request) {
|
|
954
|
+
this.#setBoolean(opts, 'cloudPayloadTagging.requestsEnabled', true)
|
|
955
|
+
}
|
|
956
|
+
if (options.cloudPayloadTagging.response) {
|
|
957
|
+
this.#setBoolean(opts, 'cloudPayloadTagging.responsesEnabled', true)
|
|
958
|
+
}
|
|
959
|
+
opts['cloudPayloadTagging.rules'] = appendRules(
|
|
960
|
+
splitJSONPathRules(options.cloudPayloadTagging.request),
|
|
961
|
+
splitJSONPathRules(options.cloudPayloadTagging.response)
|
|
962
|
+
)
|
|
963
|
+
}
|
|
964
|
+
if (options.cloudPayloadTagging?.requestsEnabled !== undefined) {
|
|
965
|
+
this.#setBoolean(opts, 'cloudPayloadTagging.requestsEnabled', options.cloudPayloadTagging.requestsEnabled)
|
|
966
|
+
}
|
|
967
|
+
if (options.cloudPayloadTagging?.responsesEnabled !== undefined) {
|
|
968
|
+
this.#setBoolean(opts, 'cloudPayloadTagging.responsesEnabled', options.cloudPayloadTagging.responsesEnabled)
|
|
969
|
+
}
|
|
970
|
+
opts['cloudPayloadTagging.maxDepth'] = maybeInt(options.cloudPayloadTagging?.maxDepth)
|
|
957
971
|
opts.baggageMaxBytes = options.baggageMaxBytes
|
|
958
972
|
opts.baggageMaxItems = options.baggageMaxItems
|
|
959
973
|
opts.baggageTagKeys = options.baggageTagKeys
|
|
@@ -1019,7 +1033,9 @@ class Config {
|
|
|
1019
1033
|
opts['iast.requestSampling'] = iastRequestSampling
|
|
1020
1034
|
this.#optsUnprocessed['iast.requestSampling'] = options.iast?.requestSampling
|
|
1021
1035
|
}
|
|
1022
|
-
|
|
1036
|
+
if (DD_MAJOR < 6) {
|
|
1037
|
+
opts['iast.securityControlsConfiguration'] = options.iast?.securityControlsConfiguration
|
|
1038
|
+
}
|
|
1023
1039
|
this.#setBoolean(opts, 'iast.stackTrace.enabled', options.iast?.stackTrace?.enabled)
|
|
1024
1040
|
this.#setString(opts, 'iast.telemetryVerbosity', options.iast && options.iast.telemetryVerbosity)
|
|
1025
1041
|
this.#setBoolean(opts, 'isCiVisibility', options.isCiVisibility)
|
|
@@ -1070,6 +1086,12 @@ class Config {
|
|
|
1070
1086
|
this.#setBoolean(opts, 'inferredProxyServicesEnabled', options.inferredProxyServicesEnabled)
|
|
1071
1087
|
this.#setBoolean(opts, 'graphqlErrorExtensions', options.graphqlErrorExtensions)
|
|
1072
1088
|
this.#setBoolean(opts, 'trace.nativeSpanEvents', options.trace?.nativeSpanEvents)
|
|
1089
|
+
if (options.tracePropagationStyle) {
|
|
1090
|
+
this.#setArray(opts, 'tracePropagationStyle.inject',
|
|
1091
|
+
normalizePropagationStyle(options.tracePropagationStyle.inject ?? options.tracePropagationStyle))
|
|
1092
|
+
this.#setArray(opts, 'tracePropagationStyle.extract',
|
|
1093
|
+
normalizePropagationStyle(options.tracePropagationStyle.extract ?? options.tracePropagationStyle))
|
|
1094
|
+
}
|
|
1073
1095
|
|
|
1074
1096
|
// For LLMObs, we want the environment variable to take precedence over the options.
|
|
1075
1097
|
// This is reliant on environment config being set before options.
|
|
@@ -1189,17 +1211,11 @@ class Config {
|
|
|
1189
1211
|
this.#setBoolean(calc, 'spanComputePeerService', this.#getSpanComputePeerService())
|
|
1190
1212
|
this.#setBoolean(calc, 'stats.enabled', this.#isTraceStatsComputationEnabled())
|
|
1191
1213
|
const defaultPropagationStyle = this.#getDefaultPropagationStyle(this.#optionsArg)
|
|
1192
|
-
calc['tracePropagationStyle.inject'] = propagationStyle(
|
|
1193
|
-
'inject',
|
|
1194
|
-
this.#optionsArg.tracePropagationStyle
|
|
1195
|
-
)
|
|
1196
|
-
calc['tracePropagationStyle.extract'] = propagationStyle(
|
|
1197
|
-
'extract',
|
|
1198
|
-
this.#optionsArg.tracePropagationStyle
|
|
1199
|
-
)
|
|
1200
1214
|
if (defaultPropagationStyle.length > 2) {
|
|
1201
|
-
|
|
1202
|
-
|
|
1215
|
+
// b3 was added, so update defaults to include it
|
|
1216
|
+
// This will only be used if no other source (options, env, stable config) set the value
|
|
1217
|
+
calc['tracePropagationStyle.inject'] = defaultPropagationStyle
|
|
1218
|
+
calc['tracePropagationStyle.extract'] = defaultPropagationStyle
|
|
1203
1219
|
}
|
|
1204
1220
|
}
|
|
1205
1221
|
|