dd-trace 5.67.0 → 5.69.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 +6 -4
- package/README.md +0 -2
- package/ci/init.js +52 -54
- package/ext/exporters.d.ts +2 -1
- package/ext/exporters.js +2 -1
- package/index.d.ts +240 -3
- package/initialize.mjs +1 -1
- package/package.json +17 -11
- package/packages/datadog-core/src/storage.js +14 -13
- package/packages/datadog-esbuild/index.js +118 -26
- package/packages/datadog-instrumentations/src/aws-sdk.js +42 -4
- package/packages/datadog-instrumentations/src/azure-functions.js +1 -1
- package/packages/datadog-instrumentations/src/azure-service-bus.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +2 -2
- package/packages/datadog-instrumentations/src/connect.js +6 -2
- package/packages/datadog-instrumentations/src/cucumber.js +31 -6
- package/packages/datadog-instrumentations/src/express.js +5 -6
- package/packages/datadog-instrumentations/src/fastify.js +3 -3
- package/packages/datadog-instrumentations/src/helpers/hook.js +28 -15
- package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -0
- package/packages/datadog-instrumentations/src/helpers/instrument.js +15 -5
- package/packages/datadog-instrumentations/src/helpers/register.js +10 -3
- package/packages/datadog-instrumentations/src/http2/client.js +1 -0
- package/packages/datadog-instrumentations/src/http2/server.js +0 -1
- package/packages/datadog-instrumentations/src/ioredis.js +12 -1
- package/packages/datadog-instrumentations/src/jest.js +48 -36
- package/packages/datadog-instrumentations/src/limitd-client.js +2 -1
- package/packages/datadog-instrumentations/src/mocha/main.js +15 -7
- package/packages/datadog-instrumentations/src/mocha/utils.js +3 -0
- package/packages/datadog-instrumentations/src/mongoose.js +2 -1
- package/packages/datadog-instrumentations/src/oracledb.js +19 -13
- package/packages/datadog-instrumentations/src/pg.js +9 -5
- package/packages/datadog-instrumentations/src/pino.js +18 -6
- package/packages/datadog-instrumentations/src/playwright.js +15 -1
- package/packages/datadog-instrumentations/src/sequelize.js +1 -1
- package/packages/datadog-instrumentations/src/vitest.js +155 -62
- package/packages/datadog-plugin-ai/src/tracing.js +3 -3
- package/packages/datadog-plugin-aws-sdk/src/base.js +23 -8
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +101 -2
- package/packages/datadog-plugin-aws-sdk/src/util.js +1 -1
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +6 -0
- package/packages/datadog-plugin-cucumber/src/index.js +4 -56
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +6 -3
- package/packages/datadog-plugin-cypress/src/support.js +4 -0
- package/packages/datadog-plugin-express/src/code_origin.js +2 -2
- package/packages/datadog-plugin-fastify/src/code_origin.js +1 -2
- package/packages/datadog-plugin-jest/src/index.js +0 -21
- package/packages/datadog-plugin-mocha/src/index.js +3 -57
- package/packages/datadog-plugin-mongodb-core/src/index.js +38 -12
- package/packages/datadog-plugin-playwright/src/index.js +11 -5
- package/packages/datadog-plugin-vitest/src/index.js +5 -1
- package/packages/datadog-plugin-ws/src/close.js +1 -1
- package/packages/datadog-plugin-ws/src/producer.js +6 -1
- package/packages/datadog-plugin-ws/src/receiver.js +6 -1
- package/packages/dd-trace/src/aiguard/client.js +25 -0
- package/packages/dd-trace/src/aiguard/noop.js +9 -0
- package/packages/dd-trace/src/aiguard/sdk.js +173 -0
- package/packages/dd-trace/src/aiguard/tags.js +11 -0
- package/packages/dd-trace/src/appsec/iast/path-line.js +21 -4
- package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +6 -3
- package/packages/dd-trace/src/appsec/stack_trace.js +20 -1
- package/packages/dd-trace/src/appsec/telemetry/waf.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +4 -4
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +11 -3
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +10 -1
- package/packages/dd-trace/src/config-helper.js +8 -1
- package/packages/dd-trace/src/config.js +92 -304
- package/packages/dd-trace/src/config_defaults.js +191 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +2 -1
- package/packages/dd-trace/src/datastreams/fnv.js +2 -2
- package/packages/dd-trace/src/datastreams/index.js +23 -1
- package/packages/dd-trace/src/datastreams/writer.js +3 -2
- package/packages/dd-trace/src/debugger/devtools_client/config.js +2 -1
- package/packages/dd-trace/src/dogstatsd.js +4 -3
- package/packages/dd-trace/src/encode/0.4.js +1 -5
- package/packages/dd-trace/src/exporter.js +1 -0
- package/packages/dd-trace/src/exporters/agent/index.js +3 -2
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -1
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +3 -2
- package/packages/dd-trace/src/exporters/common/request.js +2 -1
- package/packages/dd-trace/src/exporters/span-stats/index.js +3 -2
- package/packages/dd-trace/src/llmobs/constants/tags.js +2 -0
- package/packages/dd-trace/src/llmobs/plugins/ai/index.js +15 -4
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +20 -7
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +40 -13
- package/packages/dd-trace/src/llmobs/plugins/openai.js +7 -1
- package/packages/dd-trace/src/llmobs/tagger.js +8 -0
- package/packages/dd-trace/src/llmobs/telemetry.js +2 -1
- package/packages/dd-trace/src/log/index.js +27 -16
- package/packages/dd-trace/src/log/log.js +29 -5
- package/packages/dd-trace/src/log/writer.js +5 -5
- package/packages/dd-trace/src/noop/proxy.js +4 -0
- package/packages/dd-trace/src/noop/span.js +1 -0
- package/packages/dd-trace/src/opentelemetry/span.js +14 -3
- package/packages/dd-trace/src/opentracing/span.js +19 -5
- package/packages/dd-trace/src/payload-tagging/config/index.js +16 -0
- package/packages/dd-trace/src/payload-tagging/index.js +26 -15
- package/packages/dd-trace/src/payload-tagging/tagging.js +17 -8
- package/packages/dd-trace/src/pkg.js +3 -1
- package/packages/dd-trace/src/plugin_manager.js +20 -2
- package/packages/dd-trace/src/plugins/ci_plugin.js +97 -3
- package/packages/dd-trace/src/plugins/composite.js +3 -0
- package/packages/dd-trace/src/plugins/index.js +2 -0
- package/packages/dd-trace/src/plugins/plugin.js +67 -0
- package/packages/dd-trace/src/plugins/util/git-cache.js +129 -0
- package/packages/dd-trace/src/plugins/util/git.js +41 -27
- package/packages/dd-trace/src/plugins/util/test.js +56 -27
- package/packages/dd-trace/src/plugins/util/web.js +1 -1
- package/packages/dd-trace/src/priority_sampler.js +70 -46
- package/packages/dd-trace/src/profiler.js +4 -1
- package/packages/dd-trace/src/profiling/config.js +73 -42
- package/packages/dd-trace/src/profiling/profiler.js +3 -1
- package/packages/dd-trace/src/profiling/profilers/events.js +3 -8
- package/packages/dd-trace/src/profiling/profilers/space.js +1 -0
- package/packages/dd-trace/src/profiling/profilers/wall.js +196 -117
- package/packages/dd-trace/src/proxy.js +15 -0
- package/packages/dd-trace/src/rate_limiter.js +26 -1
- package/packages/dd-trace/src/remote_config/capabilities.js +5 -0
- package/packages/dd-trace/src/remote_config/manager.js +3 -2
- package/packages/dd-trace/src/sampling_rule.js +124 -2
- package/packages/dd-trace/src/span_sampler.js +19 -0
- package/packages/dd-trace/src/standalone/product.js +9 -0
- package/packages/dd-trace/src/standalone/tracesource.js +16 -1
- package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +13 -0
- package/packages/dd-trace/src/startup-log.js +21 -2
- package/packages/dd-trace/src/supported-configurations.json +9 -0
- package/packages/dd-trace/src/telemetry/logs/index.js +2 -2
- package/packages/dd-trace/src/util.js +1 -1
- package/register.js +1 -1
- package/version.js +4 -2
|
@@ -5,8 +5,6 @@ const os = require('os')
|
|
|
5
5
|
const uuid = require('crypto-randomuuid') // we need to keep the old uuid dep because of cypress
|
|
6
6
|
const { URL } = require('url')
|
|
7
7
|
const log = require('./log')
|
|
8
|
-
const pkg = require('./pkg')
|
|
9
|
-
const coalesce = require('koalas')
|
|
10
8
|
const tagger = require('./tagger')
|
|
11
9
|
const set = require('../../datadog-core/src/utils/src/set')
|
|
12
10
|
const { isTrue, isFalse, normalizeProfilingEnabledValue } = require('./util')
|
|
@@ -15,11 +13,10 @@ const { getGitMetadataFromGitProperties, removeUserSensitiveInfo } = require('./
|
|
|
15
13
|
const { updateConfig } = require('./telemetry')
|
|
16
14
|
const telemetryMetrics = require('./telemetry/metrics')
|
|
17
15
|
const { isInServerlessEnvironment, getIsGCPFunction, getIsAzureFunction } = require('./serverless')
|
|
18
|
-
const {
|
|
19
|
-
ORIGIN_KEY, GRPC_CLIENT_ERROR_STATUSES, GRPC_SERVER_ERROR_STATUSES
|
|
20
|
-
} = require('./constants')
|
|
16
|
+
const { ORIGIN_KEY } = require('./constants')
|
|
21
17
|
const { appendRules } = require('./payload-tagging/config')
|
|
22
18
|
const { getEnvironmentVariable, getEnvironmentVariables } = require('./config-helper')
|
|
19
|
+
const defaults = require('./config_defaults')
|
|
23
20
|
|
|
24
21
|
const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
|
|
25
22
|
|
|
@@ -134,12 +131,6 @@ function checkIfBothOtelAndDdEnvVarSet () {
|
|
|
134
131
|
}
|
|
135
132
|
}
|
|
136
133
|
|
|
137
|
-
// eslint-disable-next-line @stylistic/max-len
|
|
138
|
-
const qsRegex = String.raw`(?:p(?:ass)?w(?:or)?d|pass(?:_?phrase)?|secret|(?:api_?|private_?|public_?|access_?|secret_?)key(?:_?id)?|token|consumer_?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\s|%20)*(?:=|%3D)[^&]+|(?:"|%22)(?:\s|%20)*(?::|%3A)(?:\s|%20)*(?:"|%22)(?:%2[^2]|%[^2]|[^"%])+(?:"|%22))|bearer(?:\s|%20)+[a-z0-9\._\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\w=-]|%3D)+\.ey[I-L](?:[\w=-]|%3D)+(?:\.(?:[\w.+\/=-]|%3D|%2F|%2B)+)?|[\-]{5}BEGIN(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY[\-]{5}[^\-]+[\-]{5}END(?:[a-z\s]|%20)+PRIVATE(?:\s|%20)KEY|ssh-rsa(?:\s|%20)*(?:[a-z0-9\/\.+]|%2F|%5C|%2B){100,}`
|
|
139
|
-
// eslint-disable-next-line @stylistic/max-len
|
|
140
|
-
const defaultWafObfuscatorKeyRegex = String.raw`(?i)pass|pw(?:or)?d|secret|(?:api|private|public|access)[_-]?key|token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)|bearer|authorization|jsessionid|phpsessid|asp\.net[_-]sessionid|sid|jwt`
|
|
141
|
-
// eslint-disable-next-line @stylistic/max-len
|
|
142
|
-
const defaultWafObfuscatorValueRegex = String.raw`(?i)(?:p(?:ass)?w(?:or)?d|pass(?:[_-]?phrase)?|secret(?:[_-]?key)?|(?:(?:api|private|public|access)[_-]?)key(?:[_-]?id)?|(?:(?:auth|access|id|refresh)[_-]?)?token|consumer[_-]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?|jsessionid|phpsessid|asp\.net(?:[_-]|-)sessionid|sid|jwt)(?:\s*=([^;&]+)|"\s*:\s*("[^"]+"|\d+))|bearer\s+([a-z0-9\._\-]+)|token\s*:\s*([a-z0-9]{13})|gh[opsu]_([0-9a-zA-Z]{36})|ey[I-L][\w=-]+\.(ey[I-L][\w=-]+(?:\.[\w.+\/=-]+)?)|[\-]{5}BEGIN[a-z\s]+PRIVATE\sKEY[\-]{5}([^\-]+)[\-]{5}END[a-z\s]+PRIVATE\sKEY|ssh-rsa\s*([a-z0-9\/\.+]{100,})`
|
|
143
134
|
const runtimeId = uuid()
|
|
144
135
|
|
|
145
136
|
function maybeFile (filepath) {
|
|
@@ -222,8 +213,9 @@ function propagationStyle (key, option) {
|
|
|
222
213
|
// Otherwise, fallback to env var parsing
|
|
223
214
|
const envKey = `DD_TRACE_PROPAGATION_STYLE_${key.toUpperCase()}`
|
|
224
215
|
|
|
225
|
-
const envVar =
|
|
226
|
-
getEnvironmentVariable('DD_TRACE_PROPAGATION_STYLE')
|
|
216
|
+
const envVar = getEnvironmentVariable(envKey) ??
|
|
217
|
+
getEnvironmentVariable('DD_TRACE_PROPAGATION_STYLE') ??
|
|
218
|
+
getEnvironmentVariable('OTEL_PROPAGATORS')
|
|
227
219
|
if (envVar !== undefined) {
|
|
228
220
|
return envVar.split(',')
|
|
229
221
|
.filter(v => v !== '')
|
|
@@ -277,7 +269,7 @@ class Config {
|
|
|
277
269
|
this.stableConfig?.fleetEntries?.DD_TRACE_DEBUG,
|
|
278
270
|
this.stableConfig?.localEntries?.DD_TRACE_DEBUG
|
|
279
271
|
)
|
|
280
|
-
this.logger =
|
|
272
|
+
this.logger = options.logger ?? logConfig.logger
|
|
281
273
|
this.logLevel = log.getLogLevel(
|
|
282
274
|
options.logLevel,
|
|
283
275
|
this.stableConfig?.fleetEntries?.DD_TRACE_LOG_LEVEL,
|
|
@@ -294,6 +286,7 @@ class Config {
|
|
|
294
286
|
checkIfBothOtelAndDdEnvVarSet()
|
|
295
287
|
|
|
296
288
|
const DD_API_KEY = getEnvironmentVariable('DD_API_KEY')
|
|
289
|
+
const DD_APP_KEY = getEnvironmentVariable('DD_APP_KEY')
|
|
297
290
|
|
|
298
291
|
if (getEnvironmentVariable('DD_TRACE_PROPAGATION_STYLE') && (
|
|
299
292
|
getEnvironmentVariable('DD_TRACE_PROPAGATION_STYLE_INJECT') ||
|
|
@@ -323,41 +316,30 @@ class Config {
|
|
|
323
316
|
}
|
|
324
317
|
}
|
|
325
318
|
|
|
326
|
-
const DD_INSTRUMENTATION_INSTALL_ID =
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
)
|
|
330
|
-
const DD_INSTRUMENTATION_INSTALL_TIME = coalesce(
|
|
331
|
-
getEnvironmentVariable('DD_INSTRUMENTATION_INSTALL_TIME'),
|
|
332
|
-
null
|
|
333
|
-
)
|
|
334
|
-
const DD_INSTRUMENTATION_INSTALL_TYPE = coalesce(
|
|
335
|
-
getEnvironmentVariable('DD_INSTRUMENTATION_INSTALL_TYPE'),
|
|
336
|
-
null
|
|
337
|
-
)
|
|
319
|
+
const DD_INSTRUMENTATION_INSTALL_ID = getEnvironmentVariable('DD_INSTRUMENTATION_INSTALL_ID') ?? null
|
|
320
|
+
const DD_INSTRUMENTATION_INSTALL_TIME = getEnvironmentVariable('DD_INSTRUMENTATION_INSTALL_TIME') ?? null
|
|
321
|
+
const DD_INSTRUMENTATION_INSTALL_TYPE = getEnvironmentVariable('DD_INSTRUMENTATION_INSTALL_TYPE') ?? null
|
|
338
322
|
|
|
339
323
|
const DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING = splitJSONPathRules(
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
))
|
|
324
|
+
getEnvironmentVariable('DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING') ??
|
|
325
|
+
options.cloudPayloadTagging?.request ??
|
|
326
|
+
''
|
|
327
|
+
)
|
|
345
328
|
|
|
346
329
|
const DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING = splitJSONPathRules(
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
''
|
|
351
|
-
))
|
|
352
|
-
|
|
353
|
-
const DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH = coalesce(
|
|
354
|
-
getEnvironmentVariable('DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH'),
|
|
355
|
-
options.cloudPayloadTagging?.maxDepth,
|
|
356
|
-
10
|
|
330
|
+
getEnvironmentVariable('DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING') ??
|
|
331
|
+
options.cloudPayloadTagging?.response ??
|
|
332
|
+
''
|
|
357
333
|
)
|
|
358
334
|
|
|
335
|
+
const DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH = maybeInt(
|
|
336
|
+
getEnvironmentVariable('DD_TRACE_CLOUD_PAYLOAD_TAGGING_MAX_DEPTH') ??
|
|
337
|
+
options.cloudPayloadTagging?.maxDepth
|
|
338
|
+
) ?? 10
|
|
339
|
+
|
|
359
340
|
// TODO: refactor
|
|
360
341
|
this.apiKey = DD_API_KEY
|
|
342
|
+
this.appKey = DD_APP_KEY
|
|
361
343
|
|
|
362
344
|
// sent in telemetry event app-started
|
|
363
345
|
this.installSignature = {
|
|
@@ -399,20 +381,14 @@ class Config {
|
|
|
399
381
|
|
|
400
382
|
if (this.gitMetadataEnabled) {
|
|
401
383
|
this.repositoryUrl = removeUserSensitiveInfo(
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
this.tags[GIT_REPOSITORY_URL]
|
|
405
|
-
)
|
|
384
|
+
getEnvironmentVariable('DD_GIT_REPOSITORY_URL') ??
|
|
385
|
+
this.tags[GIT_REPOSITORY_URL]
|
|
406
386
|
)
|
|
407
|
-
this.commitSHA =
|
|
408
|
-
getEnvironmentVariable('DD_GIT_COMMIT_SHA'),
|
|
387
|
+
this.commitSHA = getEnvironmentVariable('DD_GIT_COMMIT_SHA') ??
|
|
409
388
|
this.tags[GIT_COMMIT_SHA]
|
|
410
|
-
)
|
|
411
389
|
if (!this.repositoryUrl || !this.commitSHA) {
|
|
412
|
-
const DD_GIT_PROPERTIES_FILE =
|
|
413
|
-
getEnvironmentVariable('DD_GIT_PROPERTIES_FILE'),
|
|
390
|
+
const DD_GIT_PROPERTIES_FILE = getEnvironmentVariable('DD_GIT_PROPERTIES_FILE') ??
|
|
414
391
|
`${process.cwd()}/git.properties`
|
|
415
|
-
)
|
|
416
392
|
let gitPropertiesString
|
|
417
393
|
try {
|
|
418
394
|
gitPropertiesString = fs.readFileSync(DD_GIT_PROPERTIES_FILE, 'utf8')
|
|
@@ -450,11 +426,8 @@ class Config {
|
|
|
450
426
|
|
|
451
427
|
_getDefaultPropagationStyle (options) {
|
|
452
428
|
// TODO: Remove the experimental env vars as a major?
|
|
453
|
-
const DD_TRACE_B3_ENABLED =
|
|
454
|
-
|
|
455
|
-
getEnvironmentVariable('DD_TRACE_EXPERIMENTAL_B3_ENABLED'),
|
|
456
|
-
false
|
|
457
|
-
)
|
|
429
|
+
const DD_TRACE_B3_ENABLED = options.experimental?.b3 ??
|
|
430
|
+
getEnvironmentVariable('DD_TRACE_EXPERIMENTAL_B3_ENABLED')
|
|
458
431
|
const defaultPropagationStyle = ['datadog', 'tracecontext']
|
|
459
432
|
if (isTrue(DD_TRACE_B3_ENABLED)) {
|
|
460
433
|
defaultPropagationStyle.push('b3', 'b3 single header')
|
|
@@ -468,180 +441,7 @@ class Config {
|
|
|
468
441
|
|
|
469
442
|
// for _merge to work, every config value must have a default value
|
|
470
443
|
_applyDefaults () {
|
|
471
|
-
|
|
472
|
-
AWS_LAMBDA_FUNCTION_NAME,
|
|
473
|
-
FUNCTION_NAME,
|
|
474
|
-
K_SERVICE,
|
|
475
|
-
WEBSITE_SITE_NAME
|
|
476
|
-
} = getEnvironmentVariables()
|
|
477
|
-
|
|
478
|
-
const service = AWS_LAMBDA_FUNCTION_NAME ||
|
|
479
|
-
FUNCTION_NAME || // Google Cloud Function Name set by deprecated runtimes
|
|
480
|
-
K_SERVICE || // Google Cloud Function Name set by newer runtimes
|
|
481
|
-
WEBSITE_SITE_NAME || // set by Azure Functions
|
|
482
|
-
pkg.name ||
|
|
483
|
-
'node'
|
|
484
|
-
|
|
485
|
-
const defaults = setHiddenProperty(this, '_defaults', {})
|
|
486
|
-
|
|
487
|
-
defaults.apmTracingEnabled = true
|
|
488
|
-
defaults['appsec.apiSecurity.enabled'] = true
|
|
489
|
-
defaults['appsec.apiSecurity.sampleDelay'] = 30
|
|
490
|
-
defaults['appsec.apiSecurity.endpointCollectionEnabled'] = true
|
|
491
|
-
defaults['appsec.apiSecurity.endpointCollectionMessageLimit'] = 300
|
|
492
|
-
defaults['appsec.blockedTemplateGraphql'] = undefined
|
|
493
|
-
defaults['appsec.blockedTemplateHtml'] = undefined
|
|
494
|
-
defaults['appsec.blockedTemplateJson'] = undefined
|
|
495
|
-
defaults['appsec.enabled'] = undefined
|
|
496
|
-
defaults['appsec.eventTracking.mode'] = 'identification'
|
|
497
|
-
defaults['appsec.extendedHeadersCollection.enabled'] = false
|
|
498
|
-
defaults['appsec.extendedHeadersCollection.redaction'] = true
|
|
499
|
-
defaults['appsec.extendedHeadersCollection.maxHeaders'] = 50
|
|
500
|
-
defaults['appsec.obfuscatorKeyRegex'] = defaultWafObfuscatorKeyRegex
|
|
501
|
-
defaults['appsec.obfuscatorValueRegex'] = defaultWafObfuscatorValueRegex
|
|
502
|
-
defaults['appsec.rasp.enabled'] = true
|
|
503
|
-
defaults['appsec.rasp.bodyCollection'] = false
|
|
504
|
-
defaults['appsec.rateLimit'] = 100
|
|
505
|
-
defaults['appsec.rules'] = undefined
|
|
506
|
-
defaults['appsec.sca.enabled'] = null
|
|
507
|
-
defaults['appsec.stackTrace.enabled'] = true
|
|
508
|
-
defaults['appsec.stackTrace.maxDepth'] = 32
|
|
509
|
-
defaults['appsec.stackTrace.maxStackTraces'] = 2
|
|
510
|
-
defaults['appsec.wafTimeout'] = 5e3 // µs
|
|
511
|
-
defaults.baggageMaxBytes = 8192
|
|
512
|
-
defaults.baggageMaxItems = 64
|
|
513
|
-
defaults.baggageTagKeys = 'user.id,session.id,account.id'
|
|
514
|
-
defaults.ciVisibilityTestSessionName = ''
|
|
515
|
-
defaults.clientIpEnabled = false
|
|
516
|
-
defaults.clientIpHeader = null
|
|
517
|
-
defaults['crashtracking.enabled'] = true
|
|
518
|
-
defaults['codeOriginForSpans.enabled'] = true
|
|
519
|
-
defaults['codeOriginForSpans.experimental.exit_spans.enabled'] = false
|
|
520
|
-
defaults.dbmPropagationMode = 'disabled'
|
|
521
|
-
defaults['dogstatsd.hostname'] = '127.0.0.1'
|
|
522
|
-
defaults['dogstatsd.port'] = '8125'
|
|
523
|
-
defaults.dsmEnabled = false
|
|
524
|
-
defaults['dynamicInstrumentation.enabled'] = false
|
|
525
|
-
defaults['dynamicInstrumentation.probeFile'] = undefined
|
|
526
|
-
defaults['dynamicInstrumentation.redactedIdentifiers'] = []
|
|
527
|
-
defaults['dynamicInstrumentation.redactionExcludedIdentifiers'] = []
|
|
528
|
-
defaults['dynamicInstrumentation.uploadIntervalSeconds'] = 1
|
|
529
|
-
defaults.env = undefined
|
|
530
|
-
defaults['experimental.enableGetRumData'] = false
|
|
531
|
-
defaults['experimental.exporter'] = undefined
|
|
532
|
-
defaults.flushInterval = 2000
|
|
533
|
-
defaults.flushMinSpans = 1000
|
|
534
|
-
defaults.gitMetadataEnabled = true
|
|
535
|
-
defaults.graphqlErrorExtensions = []
|
|
536
|
-
defaults['grpc.client.error.statuses'] = GRPC_CLIENT_ERROR_STATUSES
|
|
537
|
-
defaults['grpc.server.error.statuses'] = GRPC_SERVER_ERROR_STATUSES
|
|
538
|
-
defaults.headerTags = []
|
|
539
|
-
defaults['heapSnapshot.count'] = 0
|
|
540
|
-
defaults['heapSnapshot.destination'] = ''
|
|
541
|
-
defaults['heapSnapshot.interval'] = 3600
|
|
542
|
-
defaults.hostname = '127.0.0.1'
|
|
543
|
-
defaults['iast.dbRowsToTaint'] = 1
|
|
544
|
-
defaults['iast.deduplicationEnabled'] = true
|
|
545
|
-
defaults['iast.enabled'] = false
|
|
546
|
-
defaults['iast.maxConcurrentRequests'] = 2
|
|
547
|
-
defaults['iast.maxContextOperations'] = 2
|
|
548
|
-
defaults['iast.redactionEnabled'] = true
|
|
549
|
-
defaults['iast.redactionNamePattern'] = null
|
|
550
|
-
defaults['iast.redactionValuePattern'] = null
|
|
551
|
-
defaults['iast.requestSampling'] = 30
|
|
552
|
-
defaults['iast.securityControlsConfiguration'] = null
|
|
553
|
-
defaults['iast.telemetryVerbosity'] = 'INFORMATION'
|
|
554
|
-
defaults['iast.stackTrace.enabled'] = true
|
|
555
|
-
defaults.injectionEnabled = []
|
|
556
|
-
defaults.instrumentationSource = 'manual'
|
|
557
|
-
defaults.injectForce = null
|
|
558
|
-
defaults.isAzureFunction = false
|
|
559
|
-
defaults.isCiVisibility = false
|
|
560
|
-
defaults.isEarlyFlakeDetectionEnabled = false
|
|
561
|
-
defaults.isFlakyTestRetriesEnabled = false
|
|
562
|
-
defaults.flakyTestRetriesCount = 5
|
|
563
|
-
defaults.isGCPFunction = false
|
|
564
|
-
defaults.isGitUploadEnabled = false
|
|
565
|
-
defaults.isIntelligentTestRunnerEnabled = false
|
|
566
|
-
defaults.isManualApiEnabled = false
|
|
567
|
-
defaults['langchain.spanCharLimit'] = 128
|
|
568
|
-
defaults['langchain.spanPromptCompletionSampleRate'] = 1
|
|
569
|
-
defaults['llmobs.agentlessEnabled'] = undefined
|
|
570
|
-
defaults['llmobs.enabled'] = false
|
|
571
|
-
defaults['llmobs.mlApp'] = undefined
|
|
572
|
-
defaults.ciVisibilityTestSessionName = ''
|
|
573
|
-
defaults.ciVisAgentlessLogSubmissionEnabled = false
|
|
574
|
-
defaults.legacyBaggageEnabled = true
|
|
575
|
-
defaults.isTestDynamicInstrumentationEnabled = false
|
|
576
|
-
defaults.isServiceUserProvided = false
|
|
577
|
-
defaults.testManagementAttemptToFixRetries = 20
|
|
578
|
-
defaults.isTestManagementEnabled = false
|
|
579
|
-
defaults.isImpactedTestsEnabled = false
|
|
580
|
-
defaults.logInjection = true
|
|
581
|
-
defaults.lookup = undefined
|
|
582
|
-
defaults.inferredProxyServicesEnabled = false
|
|
583
|
-
defaults.memcachedCommandEnabled = false
|
|
584
|
-
defaults.middlewareTracingEnabled = true
|
|
585
|
-
defaults.openAiLogsEnabled = false
|
|
586
|
-
defaults['openai.spanCharLimit'] = 128
|
|
587
|
-
defaults.peerServiceMapping = {}
|
|
588
|
-
defaults.plugins = true
|
|
589
|
-
defaults.port = '8126'
|
|
590
|
-
defaults['profiling.enabled'] = undefined
|
|
591
|
-
defaults['profiling.exporters'] = 'agent'
|
|
592
|
-
defaults['profiling.sourceMap'] = true
|
|
593
|
-
defaults['profiling.longLivedThreshold'] = undefined
|
|
594
|
-
defaults.protocolVersion = '0.4'
|
|
595
|
-
defaults.queryStringObfuscation = qsRegex
|
|
596
|
-
defaults['remoteConfig.enabled'] = true
|
|
597
|
-
defaults['remoteConfig.pollInterval'] = 5 // seconds
|
|
598
|
-
defaults.reportHostname = false
|
|
599
|
-
defaults['runtimeMetrics.enabled'] = false
|
|
600
|
-
defaults['runtimeMetrics.eventLoop'] = true
|
|
601
|
-
defaults['runtimeMetrics.gc'] = true
|
|
602
|
-
defaults.runtimeMetricsRuntimeId = false
|
|
603
|
-
defaults.sampleRate = undefined
|
|
604
|
-
defaults['sampler.rateLimit'] = 100
|
|
605
|
-
defaults['sampler.rules'] = []
|
|
606
|
-
defaults['sampler.spanSamplingRules'] = []
|
|
607
|
-
defaults.scope = undefined
|
|
608
|
-
defaults.service = service
|
|
609
|
-
defaults.serviceMapping = {}
|
|
610
|
-
defaults.site = 'datadoghq.com'
|
|
611
|
-
defaults.spanAttributeSchema = 'v0'
|
|
612
|
-
defaults.spanComputePeerService = false
|
|
613
|
-
defaults.spanLeakDebug = 0
|
|
614
|
-
defaults.spanRemoveIntegrationFromService = false
|
|
615
|
-
defaults.startupLogs = false
|
|
616
|
-
defaults['stats.enabled'] = false
|
|
617
|
-
defaults.tags = {}
|
|
618
|
-
defaults.tagsHeaderMaxLength = 512
|
|
619
|
-
defaults['telemetry.debug'] = false
|
|
620
|
-
defaults['telemetry.dependencyCollection'] = true
|
|
621
|
-
defaults['telemetry.enabled'] = true
|
|
622
|
-
defaults['telemetry.heartbeatInterval'] = 60_000
|
|
623
|
-
defaults['telemetry.logCollection'] = true
|
|
624
|
-
defaults['telemetry.metrics'] = true
|
|
625
|
-
defaults.traceEnabled = true
|
|
626
|
-
defaults.traceId128BitGenerationEnabled = true
|
|
627
|
-
defaults.traceId128BitLoggingEnabled = true
|
|
628
|
-
defaults.tracePropagationExtractFirst = false
|
|
629
|
-
defaults.tracePropagationBehaviorExtract = 'continue'
|
|
630
|
-
defaults['tracePropagationStyle.inject'] = ['datadog', 'tracecontext', 'baggage']
|
|
631
|
-
defaults['tracePropagationStyle.extract'] = ['datadog', 'tracecontext', 'baggage']
|
|
632
|
-
defaults['tracePropagationStyle.otelPropagators'] = false
|
|
633
|
-
defaults.traceWebsocketMessagesEnabled = true
|
|
634
|
-
defaults.traceWebsocketMessagesInheritSampling = true
|
|
635
|
-
defaults.traceWebsocketMessagesSeparateTraces = true
|
|
636
|
-
defaults.tracing = true
|
|
637
|
-
defaults.url = undefined
|
|
638
|
-
defaults.version = pkg.version
|
|
639
|
-
defaults.instrumentation_config_id = undefined
|
|
640
|
-
defaults['vertexai.spanCharLimit'] = 128
|
|
641
|
-
defaults['vertexai.spanPromptCompletionSampleRate'] = 1
|
|
642
|
-
defaults['trace.aws.addSpanPointers'] = true
|
|
643
|
-
defaults['trace.dynamoDb.tablePrimaryKeys'] = undefined
|
|
644
|
-
defaults['trace.nativeSpanEvents'] = false
|
|
444
|
+
setHiddenProperty(this, '_defaults', defaults)
|
|
645
445
|
}
|
|
646
446
|
|
|
647
447
|
_applyLocalStableConfig () {
|
|
@@ -687,6 +487,11 @@ class Config {
|
|
|
687
487
|
const {
|
|
688
488
|
AWS_LAMBDA_FUNCTION_NAME,
|
|
689
489
|
DD_AGENT_HOST,
|
|
490
|
+
DD_AI_GUARD_ENABLED,
|
|
491
|
+
DD_AI_GUARD_ENDPOINT,
|
|
492
|
+
DD_AI_GUARD_MAX_CONTENT_SIZE,
|
|
493
|
+
DD_AI_GUARD_MAX_MESSAGES_LENGTH,
|
|
494
|
+
DD_AI_GUARD_TIMEOUT,
|
|
690
495
|
DD_API_SECURITY_ENABLED,
|
|
691
496
|
DD_API_SECURITY_SAMPLE_DELAY,
|
|
692
497
|
DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED,
|
|
@@ -844,10 +649,12 @@ class Config {
|
|
|
844
649
|
tagger.add(tags, DD_TRACE_TAGS)
|
|
845
650
|
tagger.add(tags, DD_TRACE_GLOBAL_TAGS)
|
|
846
651
|
|
|
847
|
-
this._setBoolean(
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
652
|
+
this._setBoolean(
|
|
653
|
+
env,
|
|
654
|
+
'apmTracingEnabled',
|
|
655
|
+
DD_APM_TRACING_ENABLED ??
|
|
656
|
+
(DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED && isFalse(DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED))
|
|
657
|
+
)
|
|
851
658
|
this._setBoolean(env, 'appsec.apiSecurity.enabled', DD_API_SECURITY_ENABLED && isTrue(DD_API_SECURITY_ENABLED))
|
|
852
659
|
env['appsec.apiSecurity.sampleDelay'] = maybeFloat(DD_API_SECURITY_SAMPLE_DELAY)
|
|
853
660
|
this._setBoolean(env, 'appsec.apiSecurity.endpointCollectionEnabled',
|
|
@@ -890,10 +697,7 @@ class Config {
|
|
|
890
697
|
env.baggageTagKeys = DD_TRACE_BAGGAGE_TAG_KEYS
|
|
891
698
|
this._setBoolean(env, 'clientIpEnabled', DD_TRACE_CLIENT_IP_ENABLED)
|
|
892
699
|
this._setString(env, 'clientIpHeader', DD_TRACE_CLIENT_IP_HEADER?.toLowerCase())
|
|
893
|
-
this._setBoolean(env, 'crashtracking.enabled',
|
|
894
|
-
DD_CRASHTRACKING_ENABLED,
|
|
895
|
-
!this._isInServerlessEnvironment()
|
|
896
|
-
))
|
|
700
|
+
this._setBoolean(env, 'crashtracking.enabled', DD_CRASHTRACKING_ENABLED ?? !this._isInServerlessEnvironment())
|
|
897
701
|
this._setBoolean(env, 'codeOriginForSpans.enabled', DD_CODE_ORIGIN_FOR_SPANS_ENABLED)
|
|
898
702
|
this._setBoolean(
|
|
899
703
|
env,
|
|
@@ -916,6 +720,14 @@ class Config {
|
|
|
916
720
|
this._envUnprocessed['dynamicInstrumentation.uploadInterval'] = DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS
|
|
917
721
|
this._setString(env, 'env', DD_ENV || tags.env)
|
|
918
722
|
this._setBoolean(env, 'traceEnabled', DD_TRACE_ENABLED)
|
|
723
|
+
this._setBoolean(env, 'experimental.aiguard.enabled', DD_AI_GUARD_ENABLED)
|
|
724
|
+
this._setString(env, 'experimental.aiguard.endpoint', DD_AI_GUARD_ENDPOINT)
|
|
725
|
+
env['experimental.aiguard.maxContentSize'] = maybeInt(DD_AI_GUARD_MAX_CONTENT_SIZE)
|
|
726
|
+
this._envUnprocessed['experimental.aiguard.maxContentSize'] = DD_AI_GUARD_MAX_CONTENT_SIZE
|
|
727
|
+
env['experimental.aiguard.maxMessagesLength'] = maybeInt(DD_AI_GUARD_MAX_MESSAGES_LENGTH)
|
|
728
|
+
this._envUnprocessed['experimental.aiguard.maxMessagesLength'] = DD_AI_GUARD_MAX_MESSAGES_LENGTH
|
|
729
|
+
env['experimental.aiguard.timeout'] = maybeInt(DD_AI_GUARD_TIMEOUT)
|
|
730
|
+
this._envUnprocessed['experimental.aiguard.timeout'] = DD_AI_GUARD_TIMEOUT
|
|
919
731
|
this._setBoolean(env, 'experimental.enableGetRumData', DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED)
|
|
920
732
|
this._setString(env, 'experimental.exporter', DD_TRACE_EXPERIMENTAL_EXPORTER)
|
|
921
733
|
if (AWS_LAMBDA_FUNCTION_NAME) env.flushInterval = 0
|
|
@@ -973,10 +785,8 @@ class Config {
|
|
|
973
785
|
}
|
|
974
786
|
this._setString(env, 'port', DD_TRACE_AGENT_PORT)
|
|
975
787
|
const profilingEnabled = normalizeProfilingEnabledValue(
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
this._isInServerlessEnvironment() ? 'false' : undefined
|
|
979
|
-
)
|
|
788
|
+
DD_PROFILING_ENABLED ??
|
|
789
|
+
(this._isInServerlessEnvironment() ? 'false' : undefined)
|
|
980
790
|
)
|
|
981
791
|
this._setString(env, 'profiling.enabled', profilingEnabled)
|
|
982
792
|
this._setString(env, 'profiling.exporters', DD_PROFILING_EXPORTERS)
|
|
@@ -988,10 +798,7 @@ class Config {
|
|
|
988
798
|
|
|
989
799
|
this._setString(env, 'protocolVersion', DD_TRACE_AGENT_PROTOCOL_VERSION)
|
|
990
800
|
this._setString(env, 'queryStringObfuscation', DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP)
|
|
991
|
-
this._setBoolean(env, 'remoteConfig.enabled',
|
|
992
|
-
DD_REMOTE_CONFIGURATION_ENABLED,
|
|
993
|
-
!this._isInServerlessEnvironment()
|
|
994
|
-
))
|
|
801
|
+
this._setBoolean(env, 'remoteConfig.enabled', DD_REMOTE_CONFIGURATION_ENABLED ?? !this._isInServerlessEnvironment())
|
|
995
802
|
env['remoteConfig.pollInterval'] = maybeFloat(DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS)
|
|
996
803
|
this._envUnprocessed['remoteConfig.pollInterval'] = DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS
|
|
997
804
|
this._setBoolean(env, 'reportHostname', DD_TRACE_REPORT_HOSTNAME)
|
|
@@ -1004,10 +811,10 @@ class Config {
|
|
|
1004
811
|
this._setBoolean(env, 'runtimeMetrics.eventLoop', DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED)
|
|
1005
812
|
this._setBoolean(env, 'runtimeMetrics.gc', DD_RUNTIME_METRICS_GC_ENABLED)
|
|
1006
813
|
this._setBoolean(env, 'runtimeMetricsRuntimeId', DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED)
|
|
1007
|
-
this._setArray(env, 'sampler.spanSamplingRules', reformatSpanSamplingRules(
|
|
1008
|
-
maybeJsonFile(DD_SPAN_SAMPLING_RULES_FILE)
|
|
814
|
+
this._setArray(env, 'sampler.spanSamplingRules', reformatSpanSamplingRules(
|
|
815
|
+
maybeJsonFile(DD_SPAN_SAMPLING_RULES_FILE) ??
|
|
1009
816
|
safeJsonParse(DD_SPAN_SAMPLING_RULES)
|
|
1010
|
-
))
|
|
817
|
+
))
|
|
1011
818
|
this._setUnit(env, 'sampleRate', DD_TRACE_SAMPLE_RATE ||
|
|
1012
819
|
getFromOtelSamplerMap(OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG))
|
|
1013
820
|
env['sampler.rateLimit'] = DD_TRACE_RATE_LIMIT
|
|
@@ -1031,10 +838,8 @@ class Config {
|
|
|
1031
838
|
this._setBoolean(env, 'startupLogs', DD_TRACE_STARTUP_LOGS)
|
|
1032
839
|
this._setTags(env, 'tags', tags)
|
|
1033
840
|
env.tagsHeaderMaxLength = DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH
|
|
1034
|
-
this._setBoolean(env, 'telemetry.enabled',
|
|
1035
|
-
|
|
1036
|
-
!(this._isInServerlessEnvironment() || JEST_WORKER_ID)
|
|
1037
|
-
))
|
|
841
|
+
this._setBoolean(env, 'telemetry.enabled', DD_INSTRUMENTATION_TELEMETRY_ENABLED ??
|
|
842
|
+
!(this._isInServerlessEnvironment() || JEST_WORKER_ID))
|
|
1038
843
|
this._setString(env, 'instrumentation_config_id', DD_INSTRUMENTATION_CONFIG_ID)
|
|
1039
844
|
this._setBoolean(env, 'telemetry.debug', DD_TELEMETRY_DEBUG)
|
|
1040
845
|
this._setBoolean(env, 'telemetry.dependencyCollection', DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED)
|
|
@@ -1079,10 +884,9 @@ class Config {
|
|
|
1079
884
|
|
|
1080
885
|
tagger.add(tags, options.tags)
|
|
1081
886
|
|
|
1082
|
-
this._setBoolean(opts, 'apmTracingEnabled',
|
|
1083
|
-
options.
|
|
1084
|
-
|
|
1085
|
-
))
|
|
887
|
+
this._setBoolean(opts, 'apmTracingEnabled', options.apmTracingEnabled ??
|
|
888
|
+
(options.experimental?.appsec?.standalone && !options.experimental.appsec.standalone.enabled)
|
|
889
|
+
)
|
|
1086
890
|
this._setBoolean(opts, 'appsec.apiSecurity.enabled', options.appsec?.apiSecurity?.enabled)
|
|
1087
891
|
this._setBoolean(opts, 'appsec.apiSecurity.endpointCollectionEnabled',
|
|
1088
892
|
options.appsec?.apiSecurity?.endpointCollectionEnabled)
|
|
@@ -1154,9 +958,16 @@ class Config {
|
|
|
1154
958
|
this._optsUnprocessed['dynamicInstrumentation.uploadIntervalSeconds'] =
|
|
1155
959
|
options.dynamicInstrumentation?.uploadIntervalSeconds
|
|
1156
960
|
this._setString(opts, 'env', options.env || tags.env)
|
|
961
|
+
this._setBoolean(opts, 'experimental.aiguard.enabled', options.experimental?.aiguard?.enabled)
|
|
962
|
+
this._setString(opts, 'experimental.aiguard.endpoint', options.experimental?.aiguard?.endpoint)
|
|
963
|
+
opts['experimental.aiguard.maxMessagesLength'] = maybeInt(options.experimental?.aiguard?.maxMessagesLength)
|
|
964
|
+
this._optsUnprocessed['experimental.aiguard.maxMessagesLength'] = options.experimental?.aiguard?.maxMessagesLength
|
|
965
|
+
opts['experimental.aiguard.maxContentSize'] = maybeInt(options.experimental?.aiguard?.maxContentSize)
|
|
966
|
+
this._optsUnprocessed['experimental.aiguard.maxContentSize'] = options.experimental?.aiguard?.maxContentSize
|
|
967
|
+
opts['experimental.aiguard.timeout'] = maybeInt(options.experimental?.aiguard?.timeout)
|
|
968
|
+
this._optsUnprocessed['experimental.aiguard.timeout'] = options.experimental?.aiguard?.timeout
|
|
1157
969
|
this._setBoolean(opts, 'experimental.enableGetRumData', options.experimental?.enableGetRumData)
|
|
1158
970
|
this._setString(opts, 'experimental.exporter', options.experimental?.exporter)
|
|
1159
|
-
this._setBoolean(opts, 'runtimeMetricsRuntimeId', options.runtimeMetricsRuntimeId)
|
|
1160
971
|
opts.flushInterval = maybeInt(options.flushInterval)
|
|
1161
972
|
this._optsUnprocessed.flushInterval = options.flushInterval
|
|
1162
973
|
opts.flushMinSpans = maybeInt(options.flushMinSpans)
|
|
@@ -1208,9 +1019,8 @@ class Config {
|
|
|
1208
1019
|
this._setBoolean(opts, 'runtimeMetrics.gc', options.runtimeMetrics?.gc)
|
|
1209
1020
|
this._setBoolean(opts, 'runtimeMetricsRuntimeId', options.runtimeMetricsRuntimeId)
|
|
1210
1021
|
this._setArray(opts, 'sampler.spanSamplingRules', reformatSpanSamplingRules(options.spanSamplingRules))
|
|
1211
|
-
this._setUnit(opts, 'sampleRate',
|
|
1212
|
-
|
|
1213
|
-
opts['sampler.rateLimit'] = coalesce(options.rateLimit, ingestion.rateLimit)
|
|
1022
|
+
this._setUnit(opts, 'sampleRate', options.sampleRate ?? options.ingestion.sampleRate)
|
|
1023
|
+
opts['sampler.rateLimit'] = maybeInt(options.rateLimit ?? options.ingestion.rateLimit)
|
|
1214
1024
|
this._setSamplingRule(opts, 'sampler.rules', options.samplingRules)
|
|
1215
1025
|
this._setString(opts, 'service', options.service || tags.service)
|
|
1216
1026
|
opts.serviceMapping = options.serviceMapping
|
|
@@ -1243,17 +1053,11 @@ class Config {
|
|
|
1243
1053
|
}
|
|
1244
1054
|
|
|
1245
1055
|
_isCiVisibility () {
|
|
1246
|
-
return
|
|
1247
|
-
this._optionsArg.isCiVisibility,
|
|
1248
|
-
this._defaults.isCiVisibility
|
|
1249
|
-
)
|
|
1056
|
+
return this._optionsArg.isCiVisibility ?? this._defaults.isCiVisibility
|
|
1250
1057
|
}
|
|
1251
1058
|
|
|
1252
1059
|
_isCiVisibilityItrEnabled () {
|
|
1253
|
-
return
|
|
1254
|
-
getEnvironmentVariable('DD_CIVISIBILITY_ITR_ENABLED'),
|
|
1255
|
-
true
|
|
1256
|
-
)
|
|
1060
|
+
return getEnvironmentVariable('DD_CIVISIBILITY_ITR_ENABLED') ?? true
|
|
1257
1061
|
}
|
|
1258
1062
|
|
|
1259
1063
|
_getHostname () {
|
|
@@ -1261,30 +1065,24 @@ class Config {
|
|
|
1261
1065
|
const url = DD_CIVISIBILITY_AGENTLESS_URL
|
|
1262
1066
|
? new URL(DD_CIVISIBILITY_AGENTLESS_URL)
|
|
1263
1067
|
: getAgentUrl(this._getTraceAgentUrl(), this._optionsArg)
|
|
1264
|
-
const DD_AGENT_HOST =
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
)
|
|
1269
|
-
return DD_AGENT_HOST || (url && url.hostname)
|
|
1068
|
+
const DD_AGENT_HOST = this._optionsArg.hostname ??
|
|
1069
|
+
getEnvironmentVariable('DD_AGENT_HOST') ??
|
|
1070
|
+
defaults.hostname
|
|
1071
|
+
return DD_AGENT_HOST || url?.hostname
|
|
1270
1072
|
}
|
|
1271
1073
|
|
|
1272
1074
|
_getSpanComputePeerService () {
|
|
1273
1075
|
const DD_TRACE_SPAN_ATTRIBUTE_SCHEMA = validateNamingVersion(
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
getEnvironmentVariable('DD_TRACE_SPAN_ATTRIBUTE_SCHEMA')
|
|
1277
|
-
)
|
|
1076
|
+
this._optionsArg.spanAttributeSchema ??
|
|
1077
|
+
getEnvironmentVariable('DD_TRACE_SPAN_ATTRIBUTE_SCHEMA')
|
|
1278
1078
|
)
|
|
1279
1079
|
|
|
1280
1080
|
const peerServiceSet = (
|
|
1281
1081
|
this._optionsArg.hasOwnProperty('spanComputePeerService') ||
|
|
1282
1082
|
getEnvironmentVariables().hasOwnProperty('DD_TRACE_PEER_SERVICE_DEFAULTS_ENABLED')
|
|
1283
1083
|
)
|
|
1284
|
-
const peerServiceValue =
|
|
1285
|
-
this._optionsArg.spanComputePeerService,
|
|
1084
|
+
const peerServiceValue = this._optionsArg.spanComputePeerService ??
|
|
1286
1085
|
getEnvironmentVariable('DD_TRACE_PEER_SERVICE_DEFAULTS_ENABLED')
|
|
1287
|
-
)
|
|
1288
1086
|
|
|
1289
1087
|
const spanComputePeerService = (
|
|
1290
1088
|
DD_TRACE_SPAN_ATTRIBUTE_SCHEMA === 'v0'
|
|
@@ -1298,36 +1096,28 @@ class Config {
|
|
|
1298
1096
|
}
|
|
1299
1097
|
|
|
1300
1098
|
_isCiVisibilityGitUploadEnabled () {
|
|
1301
|
-
return
|
|
1302
|
-
getEnvironmentVariable('DD_CIVISIBILITY_GIT_UPLOAD_ENABLED'),
|
|
1303
|
-
true
|
|
1304
|
-
)
|
|
1099
|
+
return getEnvironmentVariable('DD_CIVISIBILITY_GIT_UPLOAD_ENABLED') ?? true
|
|
1305
1100
|
}
|
|
1306
1101
|
|
|
1307
1102
|
_isCiVisibilityManualApiEnabled () {
|
|
1308
|
-
return
|
|
1309
|
-
getEnvironmentVariable('DD_CIVISIBILITY_MANUAL_API_ENABLED'),
|
|
1310
|
-
true
|
|
1311
|
-
)
|
|
1103
|
+
return getEnvironmentVariable('DD_CIVISIBILITY_MANUAL_API_ENABLED') ?? true
|
|
1312
1104
|
}
|
|
1313
1105
|
|
|
1314
1106
|
_isTraceStatsComputationEnabled () {
|
|
1315
1107
|
const apmTracingEnabled = this._options.apmTracingEnabled !== false &&
|
|
1316
1108
|
this._env.apmTracingEnabled !== false
|
|
1317
1109
|
|
|
1318
|
-
return apmTracingEnabled &&
|
|
1319
|
-
this._optionsArg.stats
|
|
1320
|
-
getEnvironmentVariable('DD_TRACE_STATS_COMPUTATION_ENABLED')
|
|
1321
|
-
getIsGCPFunction() || getIsAzureFunction()
|
|
1110
|
+
return apmTracingEnabled && (
|
|
1111
|
+
this._optionsArg.stats ??
|
|
1112
|
+
getEnvironmentVariable('DD_TRACE_STATS_COMPUTATION_ENABLED') ??
|
|
1113
|
+
(getIsGCPFunction() || getIsAzureFunction())
|
|
1322
1114
|
)
|
|
1323
1115
|
}
|
|
1324
1116
|
|
|
1325
1117
|
_getTraceAgentUrl () {
|
|
1326
|
-
return
|
|
1327
|
-
|
|
1328
|
-
getEnvironmentVariable('DD_TRACE_AGENT_URL'),
|
|
1118
|
+
return this._optionsArg.url ??
|
|
1119
|
+
getEnvironmentVariable('DD_TRACE_AGENT_URL') ??
|
|
1329
1120
|
null
|
|
1330
|
-
)
|
|
1331
1121
|
}
|
|
1332
1122
|
|
|
1333
1123
|
// handles values calculated from a mixture of options and env vars
|
|
@@ -1351,11 +1141,9 @@ class Config {
|
|
|
1351
1141
|
? new URL(DD_CIVISIBILITY_AGENTLESS_URL)
|
|
1352
1142
|
: getAgentUrl(this._getTraceAgentUrl(), this._optionsArg)
|
|
1353
1143
|
if (this._isCiVisibility()) {
|
|
1354
|
-
this._setBoolean(calc, 'isEarlyFlakeDetectionEnabled',
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
coalesce(DD_CIVISIBILITY_FLAKY_RETRY_ENABLED, true))
|
|
1358
|
-
calc.flakyTestRetriesCount = coalesce(maybeInt(DD_CIVISIBILITY_FLAKY_RETRY_COUNT), 5)
|
|
1144
|
+
this._setBoolean(calc, 'isEarlyFlakeDetectionEnabled', DD_CIVISIBILITY_EARLY_FLAKE_DETECTION_ENABLED ?? true)
|
|
1145
|
+
this._setBoolean(calc, 'isFlakyTestRetriesEnabled', DD_CIVISIBILITY_FLAKY_RETRY_ENABLED ?? true)
|
|
1146
|
+
calc.flakyTestRetriesCount = maybeInt(DD_CIVISIBILITY_FLAKY_RETRY_COUNT) ?? 5
|
|
1359
1147
|
this._setBoolean(calc, 'isIntelligentTestRunnerEnabled', isTrue(this._isCiVisibilityItrEnabled()))
|
|
1360
1148
|
this._setBoolean(calc, 'isManualApiEnabled', !isFalse(this._isCiVisibilityManualApiEnabled()))
|
|
1361
1149
|
this._setString(calc, 'ciVisibilityTestSessionName', DD_TEST_SESSION_NAME)
|
|
@@ -1363,7 +1151,7 @@ class Config {
|
|
|
1363
1151
|
this._setBoolean(calc, 'isTestDynamicInstrumentationEnabled', !isFalse(DD_TEST_FAILED_TEST_REPLAY_ENABLED))
|
|
1364
1152
|
this._setBoolean(calc, 'isServiceUserProvided', !!this._env.service)
|
|
1365
1153
|
this._setBoolean(calc, 'isTestManagementEnabled', !isFalse(DD_TEST_MANAGEMENT_ENABLED))
|
|
1366
|
-
calc.testManagementAttemptToFixRetries =
|
|
1154
|
+
calc.testManagementAttemptToFixRetries = maybeInt(DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES) ?? 20
|
|
1367
1155
|
this._setBoolean(calc, 'isImpactedTestsEnabled', !isFalse(DD_CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED))
|
|
1368
1156
|
}
|
|
1369
1157
|
calc['dogstatsd.hostname'] = this._getHostname()
|