dd-trace 5.56.0 → 5.57.1
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/index.d.ts +44 -2
- package/init.js +4 -1
- package/package.json +20 -20
- package/packages/datadog-esbuild/index.js +22 -0
- package/packages/datadog-instrumentations/src/cassandra-driver.js +43 -60
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +12 -12
- package/packages/datadog-instrumentations/src/cucumber.js +4 -6
- package/packages/datadog-instrumentations/src/elasticsearch.js +16 -19
- package/packages/datadog-instrumentations/src/fastify.js +91 -9
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +20 -5
- package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +2 -2
- package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/register.js +17 -5
- package/packages/datadog-instrumentations/src/ioredis.js +8 -13
- package/packages/datadog-instrumentations/src/iovalkey.js +10 -14
- package/packages/datadog-instrumentations/src/jest.js +28 -6
- package/packages/datadog-instrumentations/src/memcached.js +17 -24
- package/packages/datadog-instrumentations/src/mocha/main.js +7 -6
- package/packages/datadog-instrumentations/src/moleculer/client.js +9 -10
- package/packages/datadog-instrumentations/src/moleculer/server.js +12 -13
- package/packages/datadog-instrumentations/src/openai.js +30 -2
- package/packages/datadog-instrumentations/src/playwright.js +4 -1
- package/packages/datadog-instrumentations/src/prisma.js +116 -0
- package/packages/datadog-instrumentations/src/redis.js +32 -43
- package/packages/datadog-instrumentations/src/router.js +1 -1
- package/packages/datadog-instrumentations/src/sharedb.js +10 -16
- package/packages/datadog-instrumentations/src/vitest.js +4 -4
- package/packages/datadog-plugin-aws-sdk/src/base.js +6 -1
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +9 -4
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +3 -2
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +2 -1
- package/packages/datadog-plugin-aws-sdk/src/util.js +2 -2
- package/packages/datadog-plugin-bunyan/src/index.js +2 -2
- package/packages/datadog-plugin-cassandra-driver/src/index.js +6 -2
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/batch-consumer.js +1 -1
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/consumer.js +1 -1
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/producer.js +1 -1
- package/packages/datadog-plugin-cucumber/src/index.js +4 -2
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +9 -5
- package/packages/datadog-plugin-elasticsearch/src/index.js +12 -4
- package/packages/datadog-plugin-http/src/client.js +1 -0
- package/packages/datadog-plugin-http/src/server.js +2 -1
- package/packages/datadog-plugin-http2/src/client.js +1 -0
- package/packages/datadog-plugin-http2/src/server.js +1 -0
- package/packages/datadog-plugin-jest/src/index.js +4 -3
- package/packages/datadog-plugin-memcached/src/index.js +6 -2
- package/packages/datadog-plugin-mocha/src/index.js +3 -2
- package/packages/datadog-plugin-moleculer/src/client.js +15 -9
- package/packages/datadog-plugin-moleculer/src/server.js +9 -5
- package/packages/datadog-plugin-next/src/index.js +2 -1
- package/packages/datadog-plugin-openai/src/tracing.js +127 -80
- package/packages/datadog-plugin-pino/src/index.js +2 -2
- package/packages/datadog-plugin-prisma/src/client.js +62 -0
- package/packages/datadog-plugin-prisma/src/engine.js +81 -0
- package/packages/datadog-plugin-prisma/src/index.js +22 -0
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +1 -1
- package/packages/datadog-plugin-redis/src/index.js +9 -3
- package/packages/datadog-plugin-router/src/index.js +1 -0
- package/packages/datadog-plugin-sharedb/src/index.js +13 -5
- package/packages/datadog-plugin-winston/src/index.js +2 -2
- package/packages/dd-trace/src/appsec/channels.js +26 -21
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +13 -20
- package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +0 -1
- package/packages/dd-trace/src/appsec/index.js +16 -1
- package/packages/dd-trace/src/appsec/rasp/utils.js +0 -5
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +3 -3
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -6
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -3
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +3 -3
- package/packages/dd-trace/src/config.js +286 -270
- package/packages/dd-trace/src/constants.js +2 -1
- package/packages/dd-trace/src/crashtracking/crashtracker.js +12 -14
- package/packages/dd-trace/src/datastreams/context.js +1 -1
- package/packages/dd-trace/src/datastreams/processor.js +1 -1
- package/packages/dd-trace/src/datastreams/writer.js +3 -3
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +6 -3
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +2 -3
- package/packages/dd-trace/src/debugger/devtools_client/state.js +7 -4
- package/packages/dd-trace/src/dogstatsd.js +3 -3
- package/packages/dd-trace/src/exporters/agent/index.js +10 -5
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -1
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -2
- package/packages/dd-trace/src/exporters/log/index.js +1 -1
- package/packages/dd-trace/src/exporters/span-stats/writer.js +2 -2
- package/packages/dd-trace/src/guardrails/index.js +3 -1
- package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
- package/packages/dd-trace/src/llmobs/index.js +11 -5
- package/packages/dd-trace/src/llmobs/plugins/base.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +1 -1
- package/packages/dd-trace/src/llmobs/tagger.js +13 -13
- package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
- package/packages/dd-trace/src/llmobs/writers/spans.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +1 -1
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +4 -4
- package/packages/dd-trace/src/opentracing/span.js +1 -0
- package/packages/dd-trace/src/plugin_manager.js +3 -3
- package/packages/dd-trace/src/plugins/cache.js +2 -2
- package/packages/dd-trace/src/plugins/ci_plugin.js +11 -7
- package/packages/dd-trace/src/plugins/database.js +3 -1
- package/packages/dd-trace/src/plugins/index.js +1 -0
- package/packages/dd-trace/src/plugins/log_plugin.js +5 -1
- package/packages/dd-trace/src/plugins/outbound.js +8 -6
- package/packages/dd-trace/src/plugins/structured_log_plugin.js +9 -0
- package/packages/dd-trace/src/plugins/tracing.js +1 -1
- package/packages/dd-trace/src/plugins/util/ci.js +83 -30
- package/packages/dd-trace/src/plugins/util/git.js +1 -0
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +3 -2
- package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -0
- package/packages/dd-trace/src/plugins/util/tags.js +4 -1
- package/packages/dd-trace/src/plugins/util/test.js +80 -10
- package/packages/dd-trace/src/plugins/util/web.js +1 -0
- package/packages/dd-trace/src/profiler.js +0 -2
- package/packages/dd-trace/src/profiling/exporter_cli.js +1 -3
- package/packages/dd-trace/src/profiling/ssi-heuristics.js +18 -126
- package/packages/dd-trace/src/proxy.js +12 -27
- package/packages/dd-trace/src/runtime_metrics/index.js +1 -1
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +14 -45
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +2 -2
- package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +4 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +2 -2
- package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -0
- package/packages/dd-trace/src/supported-configurations.json +12 -3
- package/packages/dd-trace/src/telemetry/telemetry.js +5 -1
- package/packages/dd-trace/src/tracer.js +11 -0
- package/packages/dd-trace/src/tracer_metadata.js +25 -0
- package/packages/dd-trace/src/util.js +11 -4
- package/version.js +3 -1
- package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +0 -30
|
@@ -15,7 +15,9 @@ const { getGitMetadataFromGitProperties, removeUserSensitiveInfo } = require('./
|
|
|
15
15
|
const { updateConfig } = require('./telemetry')
|
|
16
16
|
const telemetryMetrics = require('./telemetry/metrics')
|
|
17
17
|
const { isInServerlessEnvironment, getIsGCPFunction, getIsAzureFunction } = require('./serverless')
|
|
18
|
-
const {
|
|
18
|
+
const {
|
|
19
|
+
ORIGIN_KEY, GRPC_CLIENT_ERROR_STATUSES, GRPC_SERVER_ERROR_STATUSES, INSTRUMENTED_BY_SSI
|
|
20
|
+
} = require('./constants')
|
|
19
21
|
const { appendRules } = require('./payload-tagging/config')
|
|
20
22
|
const { getEnvironmentVariable, getEnvironmentVariables } = require('./config-helper')
|
|
21
23
|
|
|
@@ -121,12 +123,12 @@ function validateEnvVarType (envVar) {
|
|
|
121
123
|
function checkIfBothOtelAndDdEnvVarSet () {
|
|
122
124
|
for (const [otelEnvVar, ddEnvVar] of Object.entries(otelDdEnvMapping)) {
|
|
123
125
|
if (ddEnvVar && getEnvironmentVariable(ddEnvVar) && getEnvironmentVariable(otelEnvVar)) {
|
|
124
|
-
log.warn(
|
|
126
|
+
log.warn('both %s and %s environment variables are set', ddEnvVar, otelEnvVar)
|
|
125
127
|
getCounter('otel.env.hiding', ddEnvVar, otelEnvVar).inc()
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
if (getEnvironmentVariable(otelEnvVar) && !validateEnvVarType(otelEnvVar)) {
|
|
129
|
-
log.warn(
|
|
131
|
+
log.warn('unexpected value for %s environment variable', otelEnvVar)
|
|
130
132
|
getCounter('otel.env.invalid', ddEnvVar, otelEnvVar).inc()
|
|
131
133
|
}
|
|
132
134
|
}
|
|
@@ -149,6 +151,16 @@ function maybeFile (filepath) {
|
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
153
|
|
|
154
|
+
function maybeJsonFile (filepath) {
|
|
155
|
+
const file = maybeFile(filepath)
|
|
156
|
+
if (!file) return
|
|
157
|
+
try {
|
|
158
|
+
return JSON.parse(file)
|
|
159
|
+
} catch (e) {
|
|
160
|
+
log.error('Error parsing JSON file %s', filepath, e)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
152
164
|
function safeJsonParse (input) {
|
|
153
165
|
try {
|
|
154
166
|
return JSON.parse(input)
|
|
@@ -163,9 +175,7 @@ function validateNamingVersion (versionString) {
|
|
|
163
175
|
return defaultNamingVersion
|
|
164
176
|
}
|
|
165
177
|
if (!namingVersions.has(versionString)) {
|
|
166
|
-
log.warn(
|
|
167
|
-
`Unexpected input for config.spanAttributeSchema, picked default ${defaultNamingVersion}`
|
|
168
|
-
)
|
|
178
|
+
log.warn('Unexpected input for config.spanAttributeSchema, picked default', defaultNamingVersion)
|
|
169
179
|
return defaultNamingVersion
|
|
170
180
|
}
|
|
171
181
|
return versionString
|
|
@@ -284,9 +294,8 @@ class Config {
|
|
|
284
294
|
getEnvironmentVariable('DD_TRACE_PROPAGATION_STYLE_EXTRACT')
|
|
285
295
|
)) {
|
|
286
296
|
log.warn(
|
|
287
|
-
|
|
288
|
-
'DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT '
|
|
289
|
-
'environment variables'
|
|
297
|
+
// eslint-disable-next-line @stylistic/max-len
|
|
298
|
+
'Use either the DD_TRACE_PROPAGATION_STYLE environment variable or separate DD_TRACE_PROPAGATION_STYLE_INJECT and DD_TRACE_PROPAGATION_STYLE_EXTRACT environment variables'
|
|
290
299
|
)
|
|
291
300
|
}
|
|
292
301
|
const PROPAGATION_STYLE_INJECT = propagationStyle(
|
|
@@ -302,6 +311,18 @@ class Config {
|
|
|
302
311
|
}
|
|
303
312
|
}
|
|
304
313
|
|
|
314
|
+
if (typeof options.runtimeMetrics === 'boolean') {
|
|
315
|
+
options.runtimeMetrics = {
|
|
316
|
+
enabled: options.runtimeMetrics
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
if (typeof options.runtimeMetrics?.gc === 'boolean') {
|
|
321
|
+
options.runtimeMetrics.gc = {
|
|
322
|
+
enabled: options.runtimeMetrics.gc
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
305
326
|
const DD_INSTRUMENTATION_INSTALL_ID = coalesce(
|
|
306
327
|
getEnvironmentVariable('DD_INSTRUMENTATION_INSTALL_ID'),
|
|
307
328
|
null
|
|
@@ -459,151 +480,155 @@ class Config {
|
|
|
459
480
|
|
|
460
481
|
const defaults = setHiddenProperty(this, '_defaults', {})
|
|
461
482
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
483
|
+
defaults.apmTracingEnabled = true
|
|
484
|
+
defaults['appsec.apiSecurity.enabled'] = true
|
|
485
|
+
defaults['appsec.apiSecurity.sampleDelay'] = 30
|
|
486
|
+
defaults['appsec.blockedTemplateGraphql'] = undefined
|
|
487
|
+
defaults['appsec.blockedTemplateHtml'] = undefined
|
|
488
|
+
defaults['appsec.blockedTemplateJson'] = undefined
|
|
489
|
+
defaults['appsec.enabled'] = undefined
|
|
490
|
+
defaults['appsec.eventTracking.mode'] = 'identification'
|
|
491
|
+
defaults['appsec.extendedHeadersCollection.enabled'] = false
|
|
492
|
+
defaults['appsec.extendedHeadersCollection.redaction'] = true
|
|
493
|
+
defaults['appsec.extendedHeadersCollection.maxHeaders'] = 50
|
|
494
|
+
defaults['appsec.obfuscatorKeyRegex'] = defaultWafObfuscatorKeyRegex
|
|
495
|
+
defaults['appsec.obfuscatorValueRegex'] = defaultWafObfuscatorValueRegex
|
|
496
|
+
defaults['appsec.rasp.enabled'] = true
|
|
497
|
+
defaults['appsec.rasp.bodyCollection'] = false
|
|
498
|
+
defaults['appsec.rateLimit'] = 100
|
|
499
|
+
defaults['appsec.rules'] = undefined
|
|
500
|
+
defaults['appsec.sca.enabled'] = null
|
|
501
|
+
defaults['appsec.stackTrace.enabled'] = true
|
|
502
|
+
defaults['appsec.stackTrace.maxDepth'] = 32
|
|
503
|
+
defaults['appsec.stackTrace.maxStackTraces'] = 2
|
|
504
|
+
defaults['appsec.wafTimeout'] = 5e3 // µs
|
|
505
|
+
defaults.baggageMaxBytes = 8192
|
|
506
|
+
defaults.baggageMaxItems = 64
|
|
507
|
+
defaults.baggageTagKeys = 'user.id,session.id,account.id'
|
|
508
|
+
defaults.ciVisibilityTestSessionName = ''
|
|
509
|
+
defaults.clientIpEnabled = false
|
|
510
|
+
defaults.clientIpHeader = null
|
|
511
|
+
defaults['crashtracking.enabled'] = true
|
|
512
|
+
defaults['codeOriginForSpans.enabled'] = true
|
|
513
|
+
defaults['codeOriginForSpans.experimental.exit_spans.enabled'] = false
|
|
514
|
+
defaults.dbmPropagationMode = 'disabled'
|
|
515
|
+
defaults['dogstatsd.hostname'] = '127.0.0.1'
|
|
516
|
+
defaults['dogstatsd.port'] = '8125'
|
|
517
|
+
defaults.dsmEnabled = false
|
|
518
|
+
defaults['dynamicInstrumentation.enabled'] = false
|
|
519
|
+
defaults['dynamicInstrumentation.redactedIdentifiers'] = []
|
|
520
|
+
defaults['dynamicInstrumentation.redactionExcludedIdentifiers'] = []
|
|
521
|
+
defaults['dynamicInstrumentation.uploadIntervalSeconds'] = 1
|
|
522
|
+
defaults.env = undefined
|
|
523
|
+
defaults['experimental.enableGetRumData'] = false
|
|
524
|
+
defaults['experimental.exporter'] = undefined
|
|
525
|
+
defaults.flushInterval = 2000
|
|
526
|
+
defaults.flushMinSpans = 1000
|
|
527
|
+
defaults.gitMetadataEnabled = true
|
|
528
|
+
defaults.graphqlErrorExtensions = []
|
|
529
|
+
defaults['grpc.client.error.statuses'] = GRPC_CLIENT_ERROR_STATUSES
|
|
530
|
+
defaults['grpc.server.error.statuses'] = GRPC_SERVER_ERROR_STATUSES
|
|
531
|
+
defaults.headerTags = []
|
|
532
|
+
defaults.hostname = '127.0.0.1'
|
|
533
|
+
defaults['iast.dbRowsToTaint'] = 1
|
|
534
|
+
defaults['iast.deduplicationEnabled'] = true
|
|
535
|
+
defaults['iast.enabled'] = false
|
|
536
|
+
defaults['iast.maxConcurrentRequests'] = 2
|
|
537
|
+
defaults['iast.maxContextOperations'] = 2
|
|
538
|
+
defaults['iast.redactionEnabled'] = true
|
|
539
|
+
defaults['iast.redactionNamePattern'] = null
|
|
540
|
+
defaults['iast.redactionValuePattern'] = null
|
|
541
|
+
defaults['iast.requestSampling'] = 30
|
|
542
|
+
defaults['iast.securityControlsConfiguration'] = null
|
|
543
|
+
defaults['iast.telemetryVerbosity'] = 'INFORMATION'
|
|
544
|
+
defaults['iast.stackTrace.enabled'] = true
|
|
545
|
+
defaults.injectionEnabled = []
|
|
546
|
+
defaults.instrumentationSource = 'manual'
|
|
547
|
+
defaults.injectForce = null
|
|
548
|
+
defaults.isAzureFunction = false
|
|
549
|
+
defaults.isCiVisibility = false
|
|
550
|
+
defaults.isEarlyFlakeDetectionEnabled = false
|
|
551
|
+
defaults.isFlakyTestRetriesEnabled = false
|
|
552
|
+
defaults.flakyTestRetriesCount = 5
|
|
553
|
+
defaults.isGCPFunction = false
|
|
554
|
+
defaults.isGitUploadEnabled = false
|
|
555
|
+
defaults.isIntelligentTestRunnerEnabled = false
|
|
556
|
+
defaults.isManualApiEnabled = false
|
|
557
|
+
defaults['langchain.spanCharLimit'] = 128
|
|
558
|
+
defaults['langchain.spanPromptCompletionSampleRate'] = 1
|
|
559
|
+
defaults['llmobs.agentlessEnabled'] = undefined
|
|
560
|
+
defaults['llmobs.enabled'] = false
|
|
561
|
+
defaults['llmobs.mlApp'] = undefined
|
|
562
|
+
defaults.ciVisibilityTestSessionName = ''
|
|
563
|
+
defaults.ciVisAgentlessLogSubmissionEnabled = false
|
|
564
|
+
defaults.legacyBaggageEnabled = true
|
|
565
|
+
defaults.isTestDynamicInstrumentationEnabled = false
|
|
566
|
+
defaults.isServiceUserProvided = false
|
|
567
|
+
defaults.testManagementAttemptToFixRetries = 20
|
|
568
|
+
defaults.isTestManagementEnabled = false
|
|
569
|
+
defaults.isImpactedTestsEnabled = false
|
|
570
|
+
defaults.logInjection = 'structured'
|
|
571
|
+
defaults.lookup = undefined
|
|
572
|
+
defaults.inferredProxyServicesEnabled = false
|
|
573
|
+
defaults.memcachedCommandEnabled = false
|
|
574
|
+
defaults.middlewareTracingEnabled = true
|
|
575
|
+
defaults.openAiLogsEnabled = false
|
|
576
|
+
defaults['openai.spanCharLimit'] = 128
|
|
577
|
+
defaults.peerServiceMapping = {}
|
|
578
|
+
defaults.plugins = true
|
|
579
|
+
defaults.port = '8126'
|
|
580
|
+
defaults['profiling.enabled'] = undefined
|
|
581
|
+
defaults['profiling.exporters'] = 'agent'
|
|
582
|
+
defaults['profiling.sourceMap'] = true
|
|
583
|
+
defaults['profiling.longLivedThreshold'] = undefined
|
|
584
|
+
defaults.protocolVersion = '0.4'
|
|
585
|
+
defaults.queryStringObfuscation = qsRegex
|
|
586
|
+
defaults['remoteConfig.enabled'] = true
|
|
587
|
+
defaults['remoteConfig.pollInterval'] = 5 // seconds
|
|
588
|
+
defaults.reportHostname = false
|
|
589
|
+
defaults['runtimeMetrics.enabled'] = false
|
|
590
|
+
defaults['runtimeMetrics.eventLoop'] = true
|
|
591
|
+
defaults['runtimeMetrics.gc'] = true
|
|
592
|
+
defaults.runtimeMetricsRuntimeId = false
|
|
593
|
+
defaults.sampleRate = undefined
|
|
594
|
+
defaults['sampler.rateLimit'] = 100
|
|
595
|
+
defaults['sampler.rules'] = []
|
|
596
|
+
defaults['sampler.spanSamplingRules'] = []
|
|
597
|
+
defaults.scope = undefined
|
|
598
|
+
defaults.service = service
|
|
599
|
+
defaults.serviceMapping = {}
|
|
600
|
+
defaults.site = 'datadoghq.com'
|
|
601
|
+
defaults.spanAttributeSchema = 'v0'
|
|
602
|
+
defaults.spanComputePeerService = false
|
|
603
|
+
defaults.spanLeakDebug = 0
|
|
604
|
+
defaults.spanRemoveIntegrationFromService = false
|
|
605
|
+
defaults.startupLogs = false
|
|
606
|
+
defaults['stats.enabled'] = false
|
|
607
|
+
defaults.tags = {}
|
|
608
|
+
defaults.tagsHeaderMaxLength = 512
|
|
609
|
+
defaults['telemetry.debug'] = false
|
|
610
|
+
defaults['telemetry.dependencyCollection'] = true
|
|
611
|
+
defaults['telemetry.enabled'] = true
|
|
612
|
+
defaults['telemetry.heartbeatInterval'] = 60_000
|
|
613
|
+
defaults['telemetry.logCollection'] = true
|
|
614
|
+
defaults['telemetry.metrics'] = true
|
|
615
|
+
defaults.traceEnabled = true
|
|
616
|
+
defaults.traceId128BitGenerationEnabled = true
|
|
617
|
+
defaults.traceId128BitLoggingEnabled = true
|
|
618
|
+
defaults.tracePropagationExtractFirst = false
|
|
619
|
+
defaults.tracePropagationBehaviorExtract = 'continue'
|
|
620
|
+
defaults['tracePropagationStyle.inject'] = ['datadog', 'tracecontext', 'baggage']
|
|
621
|
+
defaults['tracePropagationStyle.extract'] = ['datadog', 'tracecontext', 'baggage']
|
|
622
|
+
defaults['tracePropagationStyle.otelPropagators'] = false
|
|
623
|
+
defaults.tracing = true
|
|
624
|
+
defaults.url = undefined
|
|
625
|
+
defaults.version = pkg.version
|
|
626
|
+
defaults.instrumentation_config_id = undefined
|
|
627
|
+
defaults['vertexai.spanCharLimit'] = 128
|
|
628
|
+
defaults['vertexai.spanPromptCompletionSampleRate'] = 1
|
|
629
|
+
defaults['trace.aws.addSpanPointers'] = true
|
|
630
|
+
defaults['trace.dynamoDb.tablePrimaryKeys'] = undefined
|
|
631
|
+
defaults['trace.nativeSpanEvents'] = false
|
|
607
632
|
}
|
|
608
633
|
|
|
609
634
|
_applyLocalStableConfig () {
|
|
@@ -640,7 +665,7 @@ class Config {
|
|
|
640
665
|
this._setBoolean(obj, 'logInjection', DD_LOGS_INJECTION)
|
|
641
666
|
const profilingEnabled = normalizeProfilingEnabledValue(DD_PROFILING_ENABLED)
|
|
642
667
|
this._setString(obj, 'profiling.enabled', profilingEnabled)
|
|
643
|
-
this._setBoolean(obj, 'runtimeMetrics', DD_RUNTIME_METRICS_ENABLED)
|
|
668
|
+
this._setBoolean(obj, 'runtimeMetrics.enabled', DD_RUNTIME_METRICS_ENABLED)
|
|
644
669
|
this._setString(obj, 'service', DD_SERVICE)
|
|
645
670
|
this._setString(obj, 'version', DD_VERSION)
|
|
646
671
|
}
|
|
@@ -701,6 +726,7 @@ class Config {
|
|
|
701
726
|
DD_IAST_TELEMETRY_VERBOSITY,
|
|
702
727
|
DD_IAST_STACK_TRACE_ENABLED,
|
|
703
728
|
DD_INJECTION_ENABLED,
|
|
729
|
+
DD_INJECT_FORCE,
|
|
704
730
|
DD_INSTRUMENTATION_TELEMETRY_ENABLED,
|
|
705
731
|
DD_INSTRUMENTATION_CONFIG_ID,
|
|
706
732
|
DD_LOGS_INJECTION,
|
|
@@ -717,6 +743,8 @@ class Config {
|
|
|
717
743
|
DD_REMOTE_CONFIGURATION_ENABLED,
|
|
718
744
|
DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS,
|
|
719
745
|
DD_RUNTIME_METRICS_ENABLED,
|
|
746
|
+
DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED,
|
|
747
|
+
DD_RUNTIME_METRICS_GC_ENABLED,
|
|
720
748
|
DD_SERVICE,
|
|
721
749
|
DD_SERVICE_MAPPING,
|
|
722
750
|
DD_SITE,
|
|
@@ -742,7 +770,7 @@ class Config {
|
|
|
742
770
|
DD_TRACE_ENABLED,
|
|
743
771
|
DD_TRACE_EXPERIMENTAL_EXPORTER,
|
|
744
772
|
DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED,
|
|
745
|
-
|
|
773
|
+
DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED,
|
|
746
774
|
DD_TRACE_GIT_METADATA_ENABLED,
|
|
747
775
|
DD_TRACE_GLOBAL_TAGS,
|
|
748
776
|
DD_TRACE_GRAPHQL_ERROR_EXTENSIONS,
|
|
@@ -797,11 +825,11 @@ class Config {
|
|
|
797
825
|
DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED && isFalse(DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED)
|
|
798
826
|
))
|
|
799
827
|
this._setBoolean(env, 'appsec.apiSecurity.enabled', DD_API_SECURITY_ENABLED && isTrue(DD_API_SECURITY_ENABLED))
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
828
|
+
env['appsec.apiSecurity.sampleDelay'] = maybeFloat(DD_API_SECURITY_SAMPLE_DELAY)
|
|
829
|
+
env['appsec.blockedTemplateGraphql'] = maybeFile(DD_APPSEC_GRAPHQL_BLOCKED_TEMPLATE_JSON)
|
|
830
|
+
env['appsec.blockedTemplateHtml'] = maybeFile(DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML)
|
|
803
831
|
this._envUnprocessed['appsec.blockedTemplateHtml'] = DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML
|
|
804
|
-
|
|
832
|
+
env['appsec.blockedTemplateJson'] = maybeFile(DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON)
|
|
805
833
|
this._envUnprocessed['appsec.blockedTemplateJson'] = DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON
|
|
806
834
|
this._setBoolean(env, 'appsec.enabled', DD_APPSEC_ENABLED)
|
|
807
835
|
this._setString(env, 'appsec.eventTracking.mode', DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE)
|
|
@@ -811,27 +839,27 @@ class Config {
|
|
|
811
839
|
'appsec.extendedHeadersCollection.redaction',
|
|
812
840
|
DD_APPSEC_HEADER_COLLECTION_REDACTION_ENABLED
|
|
813
841
|
)
|
|
814
|
-
|
|
842
|
+
env['appsec.extendedHeadersCollection.maxHeaders'] = maybeInt(DD_APPSEC_MAX_COLLECTED_HEADERS)
|
|
815
843
|
this._envUnprocessed['appsec.extendedHeadersCollection.maxHeaders'] = DD_APPSEC_MAX_COLLECTED_HEADERS
|
|
816
844
|
this._setString(env, 'appsec.obfuscatorKeyRegex', DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP)
|
|
817
845
|
this._setString(env, 'appsec.obfuscatorValueRegex', DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP)
|
|
818
846
|
this._setBoolean(env, 'appsec.rasp.enabled', DD_APPSEC_RASP_ENABLED)
|
|
819
847
|
this._setBoolean(env, 'appsec.rasp.bodyCollection', DD_APPSEC_RASP_COLLECT_REQUEST_BODY)
|
|
820
|
-
|
|
848
|
+
env['appsec.rateLimit'] = maybeInt(DD_APPSEC_TRACE_RATE_LIMIT)
|
|
821
849
|
this._envUnprocessed['appsec.rateLimit'] = DD_APPSEC_TRACE_RATE_LIMIT
|
|
822
850
|
this._setString(env, 'appsec.rules', DD_APPSEC_RULES)
|
|
823
851
|
// DD_APPSEC_SCA_ENABLED is never used locally, but only sent to the backend
|
|
824
852
|
this._setBoolean(env, 'appsec.sca.enabled', DD_APPSEC_SCA_ENABLED)
|
|
825
853
|
this._setBoolean(env, 'appsec.stackTrace.enabled', DD_APPSEC_STACK_TRACE_ENABLED)
|
|
826
|
-
|
|
854
|
+
env['appsec.stackTrace.maxDepth'] = maybeInt(DD_APPSEC_MAX_STACK_TRACE_DEPTH)
|
|
827
855
|
this._envUnprocessed['appsec.stackTrace.maxDepth'] = DD_APPSEC_MAX_STACK_TRACE_DEPTH
|
|
828
|
-
|
|
856
|
+
env['appsec.stackTrace.maxStackTraces'] = maybeInt(DD_APPSEC_MAX_STACK_TRACES)
|
|
829
857
|
this._envUnprocessed['appsec.stackTrace.maxStackTraces'] = DD_APPSEC_MAX_STACK_TRACES
|
|
830
|
-
|
|
858
|
+
env['appsec.wafTimeout'] = maybeInt(DD_APPSEC_WAF_TIMEOUT)
|
|
831
859
|
this._envUnprocessed['appsec.wafTimeout'] = DD_APPSEC_WAF_TIMEOUT
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
860
|
+
env.baggageMaxBytes = DD_TRACE_BAGGAGE_MAX_BYTES
|
|
861
|
+
env.baggageMaxItems = DD_TRACE_BAGGAGE_MAX_ITEMS
|
|
862
|
+
env.baggageTagKeys = DD_TRACE_BAGGAGE_TAG_KEYS
|
|
835
863
|
this._setBoolean(env, 'clientIpEnabled', DD_TRACE_CLIENT_IP_ENABLED)
|
|
836
864
|
this._setString(env, 'clientIpHeader', DD_TRACE_CLIENT_IP_HEADER?.toLowerCase())
|
|
837
865
|
this._setBoolean(env, 'crashtracking.enabled', coalesce(
|
|
@@ -855,50 +883,44 @@ class Config {
|
|
|
855
883
|
'dynamicInstrumentation.redactionExcludedIdentifiers',
|
|
856
884
|
DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS
|
|
857
885
|
)
|
|
858
|
-
|
|
859
|
-
env,
|
|
860
|
-
'dynamicInstrumentation.uploadIntervalSeconds',
|
|
861
|
-
maybeFloat(DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS)
|
|
862
|
-
)
|
|
886
|
+
env['dynamicInstrumentation.uploadIntervalSeconds'] = maybeFloat(DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS)
|
|
863
887
|
this._envUnprocessed['dynamicInstrumentation.uploadInterval'] = DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS
|
|
864
888
|
this._setString(env, 'env', DD_ENV || tags.env)
|
|
865
889
|
this._setBoolean(env, 'traceEnabled', DD_TRACE_ENABLED)
|
|
866
890
|
this._setBoolean(env, 'experimental.enableGetRumData', DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED)
|
|
867
891
|
this._setString(env, 'experimental.exporter', DD_TRACE_EXPERIMENTAL_EXPORTER)
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
this._setValue(env, 'flushMinSpans', maybeInt(DD_TRACE_PARTIAL_FLUSH_MIN_SPANS))
|
|
892
|
+
if (AWS_LAMBDA_FUNCTION_NAME) env.flushInterval = 0
|
|
893
|
+
env.flushMinSpans = maybeInt(DD_TRACE_PARTIAL_FLUSH_MIN_SPANS)
|
|
871
894
|
this._envUnprocessed.flushMinSpans = DD_TRACE_PARTIAL_FLUSH_MIN_SPANS
|
|
872
895
|
this._setBoolean(env, 'gitMetadataEnabled', DD_TRACE_GIT_METADATA_ENABLED)
|
|
873
896
|
this._setIntegerRangeSet(env, 'grpc.client.error.statuses', DD_GRPC_CLIENT_ERROR_STATUSES)
|
|
874
897
|
this._setIntegerRangeSet(env, 'grpc.server.error.statuses', DD_GRPC_SERVER_ERROR_STATUSES)
|
|
875
898
|
this._setArray(env, 'headerTags', DD_TRACE_HEADER_TAGS)
|
|
876
899
|
this._setString(env, 'hostname', DD_AGENT_HOST)
|
|
877
|
-
|
|
900
|
+
env['iast.dbRowsToTaint'] = maybeInt(DD_IAST_DB_ROWS_TO_TAINT)
|
|
878
901
|
this._setBoolean(env, 'iast.deduplicationEnabled', DD_IAST_DEDUPLICATION_ENABLED)
|
|
879
902
|
this._setBoolean(env, 'iast.enabled', DD_IAST_ENABLED)
|
|
880
|
-
|
|
903
|
+
env['iast.maxConcurrentRequests'] = maybeInt(DD_IAST_MAX_CONCURRENT_REQUESTS)
|
|
881
904
|
this._envUnprocessed['iast.maxConcurrentRequests'] = DD_IAST_MAX_CONCURRENT_REQUESTS
|
|
882
|
-
|
|
905
|
+
env['iast.maxContextOperations'] = maybeInt(DD_IAST_MAX_CONTEXT_OPERATIONS)
|
|
883
906
|
this._envUnprocessed['iast.maxContextOperations'] = DD_IAST_MAX_CONTEXT_OPERATIONS
|
|
884
907
|
this._setBoolean(env, 'iast.redactionEnabled', DD_IAST_REDACTION_ENABLED && !isFalse(DD_IAST_REDACTION_ENABLED))
|
|
885
908
|
this._setString(env, 'iast.redactionNamePattern', DD_IAST_REDACTION_NAME_PATTERN)
|
|
886
909
|
this._setString(env, 'iast.redactionValuePattern', DD_IAST_REDACTION_VALUE_PATTERN)
|
|
887
910
|
const iastRequestSampling = maybeInt(DD_IAST_REQUEST_SAMPLING)
|
|
888
911
|
if (iastRequestSampling > -1 && iastRequestSampling < 101) {
|
|
889
|
-
|
|
912
|
+
env['iast.requestSampling'] = iastRequestSampling
|
|
890
913
|
}
|
|
891
914
|
this._envUnprocessed['iast.requestSampling'] = DD_IAST_REQUEST_SAMPLING
|
|
892
915
|
this._setString(env, 'iast.securityControlsConfiguration', DD_IAST_SECURITY_CONTROLS_CONFIGURATION)
|
|
893
916
|
this._setString(env, 'iast.telemetryVerbosity', DD_IAST_TELEMETRY_VERBOSITY)
|
|
894
917
|
this._setBoolean(env, 'iast.stackTrace.enabled', DD_IAST_STACK_TRACE_ENABLED)
|
|
895
918
|
this._setArray(env, 'injectionEnabled', DD_INJECTION_ENABLED)
|
|
919
|
+
this._setBoolean(env, 'injectForce', DD_INJECT_FORCE)
|
|
896
920
|
this._setBoolean(env, 'isAzureFunction', getIsAzureFunction())
|
|
897
921
|
this._setBoolean(env, 'isGCPFunction', getIsGCPFunction())
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
env, 'langchain.spanPromptCompletionSampleRate', maybeFloat(DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
|
|
901
|
-
)
|
|
922
|
+
env['langchain.spanCharLimit'] = maybeInt(DD_LANGCHAIN_SPAN_CHAR_LIMIT)
|
|
923
|
+
env['langchain.spanPromptCompletionSampleRate'] = maybeFloat(DD_LANGCHAIN_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
|
|
902
924
|
this._setBoolean(env, 'legacyBaggageEnabled', DD_TRACE_LEGACY_BAGGAGE_ENABLED)
|
|
903
925
|
this._setBoolean(env, 'llmobs.agentlessEnabled', DD_LLMOBS_AGENTLESS_ENABLED)
|
|
904
926
|
this._setBoolean(env, 'llmobs.enabled', DD_LLMOBS_ENABLED)
|
|
@@ -908,12 +930,12 @@ class Config {
|
|
|
908
930
|
this._setBoolean(env, 'memcachedCommandEnabled', DD_TRACE_MEMCACHED_COMMAND_ENABLED)
|
|
909
931
|
this._setBoolean(env, 'middlewareTracingEnabled', DD_TRACE_MIDDLEWARE_TRACING_ENABLED)
|
|
910
932
|
this._setBoolean(env, 'openAiLogsEnabled', DD_OPENAI_LOGS_ENABLED)
|
|
911
|
-
|
|
933
|
+
env['openai.spanCharLimit'] = maybeInt(DD_OPENAI_SPAN_CHAR_LIMIT)
|
|
912
934
|
this._envUnprocessed.openaiSpanCharLimit = DD_OPENAI_SPAN_CHAR_LIMIT
|
|
913
935
|
if (DD_TRACE_PEER_SERVICE_MAPPING) {
|
|
914
|
-
|
|
936
|
+
env.peerServiceMapping = Object.fromEntries(
|
|
915
937
|
DD_TRACE_PEER_SERVICE_MAPPING.split(',').map(x => x.trim().split(':'))
|
|
916
|
-
)
|
|
938
|
+
)
|
|
917
939
|
this._envUnprocessed.peerServiceMapping = DD_TRACE_PEER_SERVICE_MAPPING
|
|
918
940
|
}
|
|
919
941
|
this._setString(env, 'port', DD_TRACE_AGENT_PORT)
|
|
@@ -928,7 +950,7 @@ class Config {
|
|
|
928
950
|
this._setBoolean(env, 'profiling.sourceMap', DD_PROFILING_SOURCE_MAP && !isFalse(DD_PROFILING_SOURCE_MAP))
|
|
929
951
|
if (DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD) {
|
|
930
952
|
// This is only used in testing to not have to wait 30s
|
|
931
|
-
|
|
953
|
+
env['profiling.longLivedThreshold'] = Number(DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD)
|
|
932
954
|
}
|
|
933
955
|
|
|
934
956
|
this._setString(env, 'protocolVersion', DD_TRACE_AGENT_PROTOCOL_VERSION)
|
|
@@ -937,30 +959,33 @@ class Config {
|
|
|
937
959
|
DD_REMOTE_CONFIGURATION_ENABLED,
|
|
938
960
|
!this._isInServerlessEnvironment()
|
|
939
961
|
))
|
|
940
|
-
|
|
962
|
+
env['remoteConfig.pollInterval'] = maybeFloat(DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS)
|
|
941
963
|
this._envUnprocessed['remoteConfig.pollInterval'] = DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS
|
|
942
964
|
this._setBoolean(env, 'reportHostname', DD_TRACE_REPORT_HOSTNAME)
|
|
943
965
|
// only used to explicitly set runtimeMetrics to false
|
|
944
966
|
const otelSetRuntimeMetrics = String(OTEL_METRICS_EXPORTER).toLowerCase() === 'none'
|
|
945
967
|
? false
|
|
946
968
|
: undefined
|
|
947
|
-
this._setBoolean(env, 'runtimeMetrics', DD_RUNTIME_METRICS_ENABLED ||
|
|
969
|
+
this._setBoolean(env, 'runtimeMetrics.enabled', DD_RUNTIME_METRICS_ENABLED ||
|
|
948
970
|
otelSetRuntimeMetrics)
|
|
971
|
+
this._setBoolean(env, 'runtimeMetrics.eventLoop', DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED)
|
|
972
|
+
this._setBoolean(env, 'runtimeMetrics.gc', DD_RUNTIME_METRICS_GC_ENABLED)
|
|
973
|
+
this._setBoolean(env, 'runtimeMetricsRuntimeId', DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED)
|
|
949
974
|
this._setArray(env, 'sampler.spanSamplingRules', reformatSpanSamplingRules(coalesce(
|
|
950
|
-
|
|
975
|
+
maybeJsonFile(DD_SPAN_SAMPLING_RULES_FILE),
|
|
951
976
|
safeJsonParse(DD_SPAN_SAMPLING_RULES)
|
|
952
977
|
)))
|
|
953
978
|
this._setUnit(env, 'sampleRate', DD_TRACE_SAMPLE_RATE ||
|
|
954
979
|
getFromOtelSamplerMap(OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG))
|
|
955
|
-
|
|
980
|
+
env['sampler.rateLimit'] = DD_TRACE_RATE_LIMIT
|
|
956
981
|
this._setSamplingRule(env, 'sampler.rules', safeJsonParse(DD_TRACE_SAMPLING_RULES))
|
|
957
982
|
this._envUnprocessed['sampler.rules'] = DD_TRACE_SAMPLING_RULES
|
|
958
983
|
this._setString(env, 'scope', DD_TRACE_SCOPE)
|
|
959
984
|
this._setString(env, 'service', DD_SERVICE || tags.service || OTEL_SERVICE_NAME)
|
|
960
985
|
if (DD_SERVICE_MAPPING) {
|
|
961
|
-
|
|
986
|
+
env.serviceMapping = Object.fromEntries(
|
|
962
987
|
DD_SERVICE_MAPPING.split(',').map(x => x.trim().split(':'))
|
|
963
|
-
)
|
|
988
|
+
)
|
|
964
989
|
}
|
|
965
990
|
this._setString(env, 'site', DD_SITE)
|
|
966
991
|
if (DD_TRACE_SPAN_ATTRIBUTE_SCHEMA) {
|
|
@@ -968,11 +993,11 @@ class Config {
|
|
|
968
993
|
this._envUnprocessed.spanAttributeSchema = DD_TRACE_SPAN_ATTRIBUTE_SCHEMA
|
|
969
994
|
}
|
|
970
995
|
// 0: disabled, 1: logging, 2: garbage collection + logging
|
|
971
|
-
|
|
996
|
+
env.spanLeakDebug = maybeInt(DD_TRACE_SPAN_LEAK_DEBUG)
|
|
972
997
|
this._setBoolean(env, 'spanRemoveIntegrationFromService', DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED)
|
|
973
998
|
this._setBoolean(env, 'startupLogs', DD_TRACE_STARTUP_LOGS)
|
|
974
999
|
this._setTags(env, 'tags', tags)
|
|
975
|
-
|
|
1000
|
+
env.tagsHeaderMaxLength = DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH
|
|
976
1001
|
this._setBoolean(env, 'telemetry.enabled', coalesce(
|
|
977
1002
|
DD_INSTRUMENTATION_TELEMETRY_ENABLED,
|
|
978
1003
|
!(this._isInServerlessEnvironment() || JEST_WORKER_ID)
|
|
@@ -980,7 +1005,7 @@ class Config {
|
|
|
980
1005
|
this._setString(env, 'instrumentation_config_id', DD_INSTRUMENTATION_CONFIG_ID)
|
|
981
1006
|
this._setBoolean(env, 'telemetry.debug', DD_TELEMETRY_DEBUG)
|
|
982
1007
|
this._setBoolean(env, 'telemetry.dependencyCollection', DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED)
|
|
983
|
-
|
|
1008
|
+
env['telemetry.heartbeatInterval'] = maybeInt(Math.floor(DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000))
|
|
984
1009
|
this._envUnprocessed['telemetry.heartbeatInterval'] = DD_TELEMETRY_HEARTBEAT_INTERVAL * 1000
|
|
985
1010
|
this._setBoolean(env, 'telemetry.logCollection', DD_TELEMETRY_LOG_COLLECTION_ENABLED)
|
|
986
1011
|
this._setBoolean(env, 'telemetry.metrics', DD_TELEMETRY_METRICS_ENABLED)
|
|
@@ -988,10 +1013,10 @@ class Config {
|
|
|
988
1013
|
this._setBoolean(env, 'traceId128BitLoggingEnabled', DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED)
|
|
989
1014
|
this._setBoolean(env, 'tracePropagationExtractFirst', DD_TRACE_PROPAGATION_EXTRACT_FIRST)
|
|
990
1015
|
const stringPropagationBehaviorExtract = String(DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT)
|
|
991
|
-
|
|
1016
|
+
env.tracePropagationBehaviorExtract =
|
|
992
1017
|
VALID_PROPAGATION_BEHAVIOR_EXTRACT.has(stringPropagationBehaviorExtract)
|
|
993
1018
|
? stringPropagationBehaviorExtract
|
|
994
|
-
: 'continue'
|
|
1019
|
+
: 'continue'
|
|
995
1020
|
this._setBoolean(env, 'tracePropagationStyle.otelPropagators',
|
|
996
1021
|
DD_TRACE_PROPAGATION_STYLE ||
|
|
997
1022
|
DD_TRACE_PROPAGATION_STYLE_INJECT ||
|
|
@@ -1005,12 +1030,8 @@ class Config {
|
|
|
1005
1030
|
this._setString(env, 'trace.dynamoDb.tablePrimaryKeys', DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS)
|
|
1006
1031
|
this._setArray(env, 'graphqlErrorExtensions', DD_TRACE_GRAPHQL_ERROR_EXTENSIONS)
|
|
1007
1032
|
this._setBoolean(env, 'trace.nativeSpanEvents', DD_TRACE_NATIVE_SPAN_EVENTS)
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
'vertexai.spanPromptCompletionSampleRate',
|
|
1011
|
-
maybeFloat(DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
|
|
1012
|
-
)
|
|
1013
|
-
this._setValue(env, 'vertexai.spanCharLimit', maybeInt(DD_VERTEXAI_SPAN_CHAR_LIMIT))
|
|
1033
|
+
env['vertexai.spanPromptCompletionSampleRate'] = maybeFloat(DD_VERTEXAI_SPAN_PROMPT_COMPLETION_SAMPLE_RATE)
|
|
1034
|
+
env['vertexai.spanCharLimit'] = maybeInt(DD_VERTEXAI_SPAN_CHAR_LIMIT)
|
|
1014
1035
|
}
|
|
1015
1036
|
|
|
1016
1037
|
_applyOptions (options) {
|
|
@@ -1027,10 +1048,10 @@ class Config {
|
|
|
1027
1048
|
options.experimental?.appsec?.standalone && !options.experimental.appsec.standalone.enabled
|
|
1028
1049
|
))
|
|
1029
1050
|
this._setBoolean(opts, 'appsec.apiSecurity.enabled', options.appsec?.apiSecurity?.enabled)
|
|
1030
|
-
|
|
1031
|
-
|
|
1051
|
+
opts['appsec.blockedTemplateGraphql'] = maybeFile(options.appsec?.blockedTemplateGraphql)
|
|
1052
|
+
opts['appsec.blockedTemplateHtml'] = maybeFile(options.appsec?.blockedTemplateHtml)
|
|
1032
1053
|
this._optsUnprocessed['appsec.blockedTemplateHtml'] = options.appsec?.blockedTemplateHtml
|
|
1033
|
-
|
|
1054
|
+
opts['appsec.blockedTemplateJson'] = maybeFile(options.appsec?.blockedTemplateJson)
|
|
1034
1055
|
this._optsUnprocessed['appsec.blockedTemplateJson'] = options.appsec?.blockedTemplateJson
|
|
1035
1056
|
this._setBoolean(opts, 'appsec.enabled', options.appsec?.enabled)
|
|
1036
1057
|
this._setString(opts, 'appsec.eventTracking.mode', options.appsec?.eventTracking?.mode)
|
|
@@ -1044,29 +1065,26 @@ class Config {
|
|
|
1044
1065
|
'appsec.extendedHeadersCollection.redaction',
|
|
1045
1066
|
options.appsec?.extendedHeadersCollection?.redaction
|
|
1046
1067
|
)
|
|
1047
|
-
|
|
1048
|
-
'appsec.extendedHeadersCollection.maxHeaders',
|
|
1049
|
-
options.appsec?.extendedHeadersCollection?.maxHeaders
|
|
1050
|
-
)
|
|
1068
|
+
opts['appsec.extendedHeadersCollection.maxHeaders'] = options.appsec?.extendedHeadersCollection?.maxHeaders
|
|
1051
1069
|
this._setString(opts, 'appsec.obfuscatorKeyRegex', options.appsec?.obfuscatorKeyRegex)
|
|
1052
1070
|
this._setString(opts, 'appsec.obfuscatorValueRegex', options.appsec?.obfuscatorValueRegex)
|
|
1053
1071
|
this._setBoolean(opts, 'appsec.rasp.enabled', options.appsec?.rasp?.enabled)
|
|
1054
1072
|
this._setBoolean(opts, 'appsec.rasp.bodyCollection', options.appsec?.rasp?.bodyCollection)
|
|
1055
|
-
|
|
1073
|
+
opts['appsec.rateLimit'] = maybeInt(options.appsec?.rateLimit)
|
|
1056
1074
|
this._optsUnprocessed['appsec.rateLimit'] = options.appsec?.rateLimit
|
|
1057
1075
|
this._setString(opts, 'appsec.rules', options.appsec?.rules)
|
|
1058
1076
|
this._setBoolean(opts, 'appsec.stackTrace.enabled', options.appsec?.stackTrace?.enabled)
|
|
1059
|
-
|
|
1077
|
+
opts['appsec.stackTrace.maxDepth'] = maybeInt(options.appsec?.stackTrace?.maxDepth)
|
|
1060
1078
|
this._optsUnprocessed['appsec.stackTrace.maxDepth'] = options.appsec?.stackTrace?.maxDepth
|
|
1061
|
-
|
|
1079
|
+
opts['appsec.stackTrace.maxStackTraces'] = maybeInt(options.appsec?.stackTrace?.maxStackTraces)
|
|
1062
1080
|
this._optsUnprocessed['appsec.stackTrace.maxStackTraces'] = options.appsec?.stackTrace?.maxStackTraces
|
|
1063
|
-
|
|
1081
|
+
opts['appsec.wafTimeout'] = maybeInt(options.appsec?.wafTimeout)
|
|
1064
1082
|
this._optsUnprocessed['appsec.wafTimeout'] = options.appsec?.wafTimeout
|
|
1065
1083
|
this._setBoolean(opts, 'clientIpEnabled', options.clientIpEnabled)
|
|
1066
1084
|
this._setString(opts, 'clientIpHeader', options.clientIpHeader?.toLowerCase())
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1085
|
+
opts.baggageMaxBytes = options.baggageMaxBytes
|
|
1086
|
+
opts.baggageMaxItems = options.baggageMaxItems
|
|
1087
|
+
opts.baggageTagKeys = options.baggageTagKeys
|
|
1070
1088
|
this._setBoolean(opts, 'codeOriginForSpans.enabled', options.codeOriginForSpans?.enabled)
|
|
1071
1089
|
this._setBoolean(
|
|
1072
1090
|
opts,
|
|
@@ -1090,52 +1108,51 @@ class Config {
|
|
|
1090
1108
|
'dynamicInstrumentation.redactionExcludedIdentifiers',
|
|
1091
1109
|
options.dynamicInstrumentation?.redactionExcludedIdentifiers
|
|
1092
1110
|
)
|
|
1093
|
-
|
|
1094
|
-
opts,
|
|
1095
|
-
'dynamicInstrumentation.uploadIntervalSeconds',
|
|
1111
|
+
opts['dynamicInstrumentation.uploadIntervalSeconds'] =
|
|
1096
1112
|
maybeFloat(options.dynamicInstrumentation?.uploadIntervalSeconds)
|
|
1097
|
-
)
|
|
1098
1113
|
this._optsUnprocessed['dynamicInstrumentation.uploadIntervalSeconds'] =
|
|
1099
1114
|
options.dynamicInstrumentation?.uploadIntervalSeconds
|
|
1100
1115
|
this._setString(opts, 'env', options.env || tags.env)
|
|
1101
1116
|
this._setBoolean(opts, 'experimental.enableGetRumData', options.experimental?.enableGetRumData)
|
|
1102
1117
|
this._setString(opts, 'experimental.exporter', options.experimental?.exporter)
|
|
1103
|
-
this._setBoolean(opts, '
|
|
1104
|
-
|
|
1118
|
+
this._setBoolean(opts, 'runtimeMetricsRuntimeId', options.runtimeMetricsRuntimeId)
|
|
1119
|
+
opts.flushInterval = maybeInt(options.flushInterval)
|
|
1105
1120
|
this._optsUnprocessed.flushInterval = options.flushInterval
|
|
1106
|
-
|
|
1121
|
+
opts.flushMinSpans = maybeInt(options.flushMinSpans)
|
|
1107
1122
|
this._optsUnprocessed.flushMinSpans = options.flushMinSpans
|
|
1108
1123
|
this._setArray(opts, 'headerTags', options.headerTags)
|
|
1109
1124
|
this._setString(opts, 'hostname', options.hostname)
|
|
1110
|
-
|
|
1125
|
+
opts['iast.dbRowsToTaint'] = maybeInt(options.iast?.dbRowsToTaint)
|
|
1111
1126
|
this._setBoolean(opts, 'iast.deduplicationEnabled', options.iast && options.iast.deduplicationEnabled)
|
|
1112
1127
|
this._setBoolean(opts, 'iast.enabled',
|
|
1113
1128
|
options.iast && (options.iast === true || options.iast.enabled === true))
|
|
1114
|
-
|
|
1115
|
-
maybeInt(options.iast?.maxConcurrentRequests))
|
|
1129
|
+
opts['iast.maxConcurrentRequests'] = maybeInt(options.iast?.maxConcurrentRequests)
|
|
1116
1130
|
this._optsUnprocessed['iast.maxConcurrentRequests'] = options.iast?.maxConcurrentRequests
|
|
1117
|
-
|
|
1131
|
+
opts['iast.maxContextOperations'] = maybeInt(options.iast?.maxContextOperations)
|
|
1118
1132
|
this._optsUnprocessed['iast.maxContextOperations'] = options.iast?.maxContextOperations
|
|
1119
1133
|
this._setBoolean(opts, 'iast.redactionEnabled', options.iast?.redactionEnabled)
|
|
1120
1134
|
this._setString(opts, 'iast.redactionNamePattern', options.iast?.redactionNamePattern)
|
|
1121
1135
|
this._setString(opts, 'iast.redactionValuePattern', options.iast?.redactionValuePattern)
|
|
1122
1136
|
const iastRequestSampling = maybeInt(options.iast?.requestSampling)
|
|
1123
1137
|
if (iastRequestSampling > -1 && iastRequestSampling < 101) {
|
|
1124
|
-
|
|
1138
|
+
opts['iast.requestSampling'] = iastRequestSampling
|
|
1125
1139
|
this._optsUnprocessed['iast.requestSampling'] = options.iast?.requestSampling
|
|
1126
1140
|
}
|
|
1127
|
-
|
|
1141
|
+
opts['iast.securityControlsConfiguration'] = options.iast?.securityControlsConfiguration
|
|
1128
1142
|
this._setBoolean(opts, 'iast.stackTrace.enabled', options.iast?.stackTrace?.enabled)
|
|
1129
1143
|
this._setString(opts, 'iast.telemetryVerbosity', options.iast && options.iast.telemetryVerbosity)
|
|
1144
|
+
if (options[INSTRUMENTED_BY_SSI]) {
|
|
1145
|
+
this._setString(opts, 'instrumentationSource', options[INSTRUMENTED_BY_SSI])
|
|
1146
|
+
}
|
|
1130
1147
|
this._setBoolean(opts, 'isCiVisibility', options.isCiVisibility)
|
|
1131
1148
|
this._setBoolean(opts, 'legacyBaggageEnabled', options.legacyBaggageEnabled)
|
|
1132
1149
|
this._setBoolean(opts, 'llmobs.agentlessEnabled', options.llmobs?.agentlessEnabled)
|
|
1133
1150
|
this._setString(opts, 'llmobs.mlApp', options.llmobs?.mlApp)
|
|
1134
1151
|
this._setBoolean(opts, 'logInjection', options.logInjection)
|
|
1135
|
-
|
|
1152
|
+
opts.lookup = options.lookup
|
|
1136
1153
|
this._setBoolean(opts, 'middlewareTracingEnabled', options.middlewareTracingEnabled)
|
|
1137
1154
|
this._setBoolean(opts, 'openAiLogsEnabled', options.openAiLogsEnabled)
|
|
1138
|
-
|
|
1155
|
+
opts.peerServiceMapping = options.peerServiceMapping
|
|
1139
1156
|
this._setBoolean(opts, 'plugins', options.plugins)
|
|
1140
1157
|
this._setString(opts, 'port', options.port)
|
|
1141
1158
|
const strProfiling = String(options.profiling)
|
|
@@ -1144,18 +1161,21 @@ class Config {
|
|
|
1144
1161
|
}
|
|
1145
1162
|
this._setString(opts, 'protocolVersion', options.protocolVersion)
|
|
1146
1163
|
if (options.remoteConfig) {
|
|
1147
|
-
|
|
1164
|
+
opts['remoteConfig.pollInterval'] = maybeFloat(options.remoteConfig.pollInterval)
|
|
1148
1165
|
this._optsUnprocessed['remoteConfig.pollInterval'] = options.remoteConfig.pollInterval
|
|
1149
1166
|
}
|
|
1150
1167
|
this._setBoolean(opts, 'reportHostname', options.reportHostname)
|
|
1151
|
-
this._setBoolean(opts, 'runtimeMetrics', options.runtimeMetrics)
|
|
1168
|
+
this._setBoolean(opts, 'runtimeMetrics.enabled', options.runtimeMetrics?.enabled)
|
|
1169
|
+
this._setBoolean(opts, 'runtimeMetrics.eventLoop', options.runtimeMetrics?.eventLoop)
|
|
1170
|
+
this._setBoolean(opts, 'runtimeMetrics.gc', options.runtimeMetrics?.gc?.enabled)
|
|
1171
|
+
this._setBoolean(opts, 'runtimeMetricsRuntimeId', options.runtimeMetricsRuntimeId)
|
|
1152
1172
|
this._setArray(opts, 'sampler.spanSamplingRules', reformatSpanSamplingRules(options.spanSamplingRules))
|
|
1153
1173
|
this._setUnit(opts, 'sampleRate', coalesce(options.sampleRate, options.ingestion.sampleRate))
|
|
1154
1174
|
const ingestion = options.ingestion || {}
|
|
1155
|
-
|
|
1175
|
+
opts['sampler.rateLimit'] = coalesce(options.rateLimit, ingestion.rateLimit)
|
|
1156
1176
|
this._setSamplingRule(opts, 'sampler.rules', options.samplingRules)
|
|
1157
1177
|
this._setString(opts, 'service', options.service || tags.service)
|
|
1158
|
-
|
|
1178
|
+
opts.serviceMapping = options.serviceMapping
|
|
1159
1179
|
this._setString(opts, 'site', options.site)
|
|
1160
1180
|
if (options.spanAttributeSchema) {
|
|
1161
1181
|
this._setString(opts, 'spanAttributeSchema', validateNamingVersion(options.spanAttributeSchema))
|
|
@@ -1286,17 +1306,15 @@ class Config {
|
|
|
1286
1306
|
DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED
|
|
1287
1307
|
} = getEnvironmentVariables()
|
|
1288
1308
|
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
this._setValue(calc, 'url', getAgentUrl(this._getTraceAgentUrl(), this._optionsArg))
|
|
1293
|
-
}
|
|
1309
|
+
calc.url = DD_CIVISIBILITY_AGENTLESS_URL
|
|
1310
|
+
? new URL(DD_CIVISIBILITY_AGENTLESS_URL)
|
|
1311
|
+
: getAgentUrl(this._getTraceAgentUrl(), this._optionsArg)
|
|
1294
1312
|
if (this._isCiVisibility()) {
|
|
1295
1313
|
this._setBoolean(calc, 'isEarlyFlakeDetectionEnabled',
|
|
1296
1314
|
coalesce(DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED, true))
|
|
1297
1315
|
this._setBoolean(calc, 'isFlakyTestRetriesEnabled',
|
|
1298
1316
|
coalesce(DD_CIVISIBILITY_FLAKY_RETRY_ENABLED, true))
|
|
1299
|
-
|
|
1317
|
+
calc.flakyTestRetriesCount = coalesce(maybeInt(DD_CIVISIBILITY_FLAKY_RETRY_COUNT), 5)
|
|
1300
1318
|
this._setBoolean(calc, 'isIntelligentTestRunnerEnabled', isTrue(this._isCiVisibilityItrEnabled()))
|
|
1301
1319
|
this._setBoolean(calc, 'isManualApiEnabled', !isFalse(this._isCiVisibilityManualApiEnabled()))
|
|
1302
1320
|
this._setString(calc, 'ciVisibilityTestSessionName', DD_TEST_SESSION_NAME)
|
|
@@ -1304,26 +1322,23 @@ class Config {
|
|
|
1304
1322
|
this._setBoolean(calc, 'isTestDynamicInstrumentationEnabled', !isFalse(DD_TEST_FAILED_TEST_REPLAY_ENABLED))
|
|
1305
1323
|
this._setBoolean(calc, 'isServiceUserProvided', !!this._env.service)
|
|
1306
1324
|
this._setBoolean(calc, 'isTestManagementEnabled', !isFalse(DD_TEST_MANAGEMENT_ENABLED))
|
|
1307
|
-
|
|
1308
|
-
'testManagementAttemptToFixRetries',
|
|
1309
|
-
coalesce(maybeInt(DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES), 20)
|
|
1310
|
-
)
|
|
1325
|
+
calc.testManagementAttemptToFixRetries = coalesce(maybeInt(DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES), 20)
|
|
1311
1326
|
this._setBoolean(calc, 'isImpactedTestsEnabled', !isFalse(DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED))
|
|
1312
1327
|
}
|
|
1313
|
-
|
|
1328
|
+
calc['dogstatsd.hostname'] = this._getHostname()
|
|
1314
1329
|
this._setBoolean(calc, 'isGitUploadEnabled',
|
|
1315
1330
|
calc.isIntelligentTestRunnerEnabled && !isFalse(this._isCiVisibilityGitUploadEnabled()))
|
|
1316
1331
|
this._setBoolean(calc, 'spanComputePeerService', this._getSpanComputePeerService())
|
|
1317
1332
|
this._setBoolean(calc, 'stats.enabled', this._isTraceStatsComputationEnabled())
|
|
1318
1333
|
const defaultPropagationStyle = this._getDefaultPropagationStyle(this._optionsArg)
|
|
1319
|
-
|
|
1334
|
+
calc['tracePropagationStyle.inject'] = propagationStyle(
|
|
1320
1335
|
'inject',
|
|
1321
1336
|
this._optionsArg.tracePropagationStyle
|
|
1322
|
-
)
|
|
1323
|
-
|
|
1337
|
+
)
|
|
1338
|
+
calc['tracePropagationStyle.extract'] = propagationStyle(
|
|
1324
1339
|
'extract',
|
|
1325
1340
|
this._optionsArg.tracePropagationStyle
|
|
1326
|
-
)
|
|
1341
|
+
)
|
|
1327
1342
|
if (defaultPropagationStyle.length > 2) {
|
|
1328
1343
|
calc['tracePropagationStyle.inject'] = calc['tracePropagationStyle.inject'] || defaultPropagationStyle
|
|
1329
1344
|
calc['tracePropagationStyle.extract'] = calc['tracePropagationStyle.extract'] || defaultPropagationStyle
|
|
@@ -1345,7 +1360,7 @@ class Config {
|
|
|
1345
1360
|
|
|
1346
1361
|
this._setUnit(opts, 'sampleRate', options.tracing_sampling_rate)
|
|
1347
1362
|
this._setBoolean(opts, 'logInjection', options.log_injection_enabled)
|
|
1348
|
-
|
|
1363
|
+
opts.headerTags = headerTags
|
|
1349
1364
|
this._setTags(opts, 'tags', tags)
|
|
1350
1365
|
this._setBoolean(opts, 'tracing', options.tracing_enabled)
|
|
1351
1366
|
this._remoteUnprocessed['sampler.rules'] = options.tracing_sampling_rules
|
|
@@ -1367,30 +1382,32 @@ class Config {
|
|
|
1367
1382
|
|
|
1368
1383
|
_setBoolean (obj, name, value) {
|
|
1369
1384
|
if (value === undefined || value === null) {
|
|
1370
|
-
|
|
1385
|
+
obj[name] = value
|
|
1371
1386
|
} else if (isTrue(value)) {
|
|
1372
|
-
|
|
1387
|
+
obj[name] = true
|
|
1373
1388
|
} else if (isFalse(value)) {
|
|
1374
|
-
|
|
1389
|
+
obj[name] = false
|
|
1375
1390
|
}
|
|
1376
1391
|
}
|
|
1377
1392
|
|
|
1378
1393
|
_setUnit (obj, name, value) {
|
|
1379
1394
|
if (value === null || value === undefined) {
|
|
1380
|
-
|
|
1395
|
+
obj[name] = value
|
|
1396
|
+
return
|
|
1381
1397
|
}
|
|
1382
1398
|
|
|
1383
1399
|
value = Number.parseFloat(value)
|
|
1384
1400
|
|
|
1385
1401
|
if (!Number.isNaN(value)) {
|
|
1386
1402
|
// TODO: Ignore out of range values instead of normalizing them.
|
|
1387
|
-
|
|
1403
|
+
obj[name] = Math.min(Math.max(value, 0), 1)
|
|
1388
1404
|
}
|
|
1389
1405
|
}
|
|
1390
1406
|
|
|
1391
1407
|
_setArray (obj, name, value) {
|
|
1392
1408
|
if (value == null) {
|
|
1393
|
-
|
|
1409
|
+
obj[name] = null
|
|
1410
|
+
return
|
|
1394
1411
|
}
|
|
1395
1412
|
|
|
1396
1413
|
if (typeof value === 'string') {
|
|
@@ -1402,13 +1419,14 @@ class Config {
|
|
|
1402
1419
|
}
|
|
1403
1420
|
|
|
1404
1421
|
if (Array.isArray(value)) {
|
|
1405
|
-
|
|
1422
|
+
obj[name] = value
|
|
1406
1423
|
}
|
|
1407
1424
|
}
|
|
1408
1425
|
|
|
1409
1426
|
_setIntegerRangeSet (obj, name, value) {
|
|
1410
1427
|
if (value == null) {
|
|
1411
|
-
|
|
1428
|
+
obj[name] = null
|
|
1429
|
+
return
|
|
1412
1430
|
}
|
|
1413
1431
|
value = value.split(',')
|
|
1414
1432
|
const result = []
|
|
@@ -1423,12 +1441,13 @@ class Config {
|
|
|
1423
1441
|
result.push(Number(val))
|
|
1424
1442
|
}
|
|
1425
1443
|
})
|
|
1426
|
-
|
|
1444
|
+
obj[name] = result
|
|
1427
1445
|
}
|
|
1428
1446
|
|
|
1429
1447
|
_setSamplingRule (obj, name, value) {
|
|
1430
1448
|
if (value == null) {
|
|
1431
|
-
|
|
1449
|
+
obj[name] = null
|
|
1450
|
+
return
|
|
1432
1451
|
}
|
|
1433
1452
|
|
|
1434
1453
|
if (typeof value === 'string') {
|
|
@@ -1441,7 +1460,7 @@ class Config {
|
|
|
1441
1460
|
sample_rate: 'sampleRate'
|
|
1442
1461
|
})
|
|
1443
1462
|
})
|
|
1444
|
-
|
|
1463
|
+
obj[name] = value
|
|
1445
1464
|
}
|
|
1446
1465
|
}
|
|
1447
1466
|
|
|
@@ -1451,13 +1470,10 @@ class Config {
|
|
|
1451
1470
|
|
|
1452
1471
|
_setTags (obj, name, value) {
|
|
1453
1472
|
if (!value || Object.keys(value).length === 0) {
|
|
1454
|
-
|
|
1473
|
+
obj[name] = null
|
|
1474
|
+
return
|
|
1455
1475
|
}
|
|
1456
1476
|
|
|
1457
|
-
this._setValue(obj, name, value)
|
|
1458
|
-
}
|
|
1459
|
-
|
|
1460
|
-
_setValue (obj, name, value) {
|
|
1461
1477
|
obj[name] = value
|
|
1462
1478
|
}
|
|
1463
1479
|
|