dd-trace 5.98.0 → 5.99.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/LICENSE-3rdparty.csv +0 -1
- package/ext/tags.js +1 -0
- package/index.d.ts +9 -1
- package/package.json +68 -47
- package/packages/datadog-instrumentations/src/crypto.js +45 -0
- package/packages/datadog-instrumentations/src/cypress-config.js +122 -16
- package/packages/datadog-instrumentations/src/dns.js +24 -56
- package/packages/datadog-instrumentations/src/graphql.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/callback-instrumentor.js +74 -0
- package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +4 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/compiler.js +10 -3
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/modelcontextprotocol-sdk.js +59 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +11 -2
- package/packages/datadog-instrumentations/src/jest.js +5 -5
- package/packages/datadog-instrumentations/src/modelcontextprotocol-sdk.js +7 -0
- package/packages/datadog-instrumentations/src/pino.js +4 -28
- package/packages/datadog-instrumentations/src/playwright-browser-scripts.js +27 -0
- package/packages/datadog-instrumentations/src/playwright.js +5 -17
- package/packages/datadog-instrumentations/src/stripe.js +38 -24
- package/packages/datadog-instrumentations/src/vitest.js +32 -4
- package/packages/datadog-instrumentations/src/zlib.js +29 -0
- package/packages/datadog-plugin-aws-sdk/src/base.js +1 -2
- package/packages/datadog-plugin-azure-event-hubs/src/producer.js +8 -15
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +4 -9
- package/packages/datadog-plugin-cucumber/src/index.js +2 -2
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +5 -5
- package/packages/datadog-plugin-cypress/src/source-map-utils.js +48 -1
- package/packages/datadog-plugin-dd-trace-api/src/index.js +1 -1
- package/packages/datadog-plugin-graphql/src/utils.js +2 -2
- package/packages/datadog-plugin-http/src/server.js +11 -11
- package/packages/datadog-plugin-jest/src/index.js +2 -2
- package/packages/datadog-plugin-memcached/src/index.js +1 -1
- package/packages/datadog-plugin-mocha/src/index.js +1 -2
- package/packages/datadog-plugin-modelcontextprotocol-sdk/src/index.js +24 -0
- package/packages/datadog-plugin-modelcontextprotocol-sdk/src/tracing.js +55 -0
- package/packages/datadog-plugin-mongodb-core/src/index.js +1 -6
- package/packages/datadog-plugin-playwright/src/index.js +2 -3
- package/packages/datadog-plugin-vitest/src/index.js +14 -6
- package/packages/datadog-plugin-ws/src/close.js +2 -0
- package/packages/datadog-plugin-ws/src/producer.js +2 -0
- package/packages/datadog-plugin-ws/src/receiver.js +1 -0
- package/packages/dd-trace/src/aiguard/channels.js +8 -0
- package/packages/dd-trace/src/aiguard/index.js +7 -3
- package/packages/dd-trace/src/aiguard/sdk.js +44 -0
- package/packages/dd-trace/src/aiguard/tags.js +1 -0
- package/packages/dd-trace/src/appsec/blocking.js +18 -6
- package/packages/dd-trace/src/appsec/graphql.js +7 -7
- package/packages/dd-trace/src/appsec/index.js +9 -11
- package/packages/dd-trace/src/appsec/rasp/command_injection.js +4 -5
- package/packages/dd-trace/src/appsec/rasp/lfi.js +8 -4
- package/packages/dd-trace/src/appsec/rasp/sql_injection.js +5 -10
- package/packages/dd-trace/src/appsec/rasp/ssrf.js +5 -6
- package/packages/dd-trace/src/appsec/recommended.json +2438 -13
- package/packages/dd-trace/src/appsec/reporter.js +6 -5
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +4 -8
- package/packages/dd-trace/src/appsec/store.js +50 -0
- package/packages/dd-trace/src/appsec/waf/index.js +3 -5
- package/packages/dd-trace/src/baggage.js +16 -13
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +3 -4
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -2
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +4 -5
- package/packages/dd-trace/src/ci-visibility/requests/fs-cache.js +3 -4
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +6 -6
- package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +2 -2
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +2 -2
- package/packages/dd-trace/src/config/config-types.d.ts +0 -4
- package/packages/dd-trace/src/config/defaults.js +10 -10
- package/packages/dd-trace/src/config/generated-config-types.d.ts +39 -38
- package/packages/dd-trace/src/config/index.js +29 -39
- package/packages/dd-trace/src/config/parsers.js +26 -9
- package/packages/dd-trace/src/config/supported-configurations.json +46 -78
- package/packages/dd-trace/src/debugger/config.js +2 -0
- package/packages/dd-trace/src/debugger/devtools_client/send.js +25 -5
- package/packages/dd-trace/src/dogstatsd.js +5 -8
- package/packages/dd-trace/src/encode/0.4.js +4 -5
- package/packages/dd-trace/src/exporter.js +1 -1
- package/packages/dd-trace/src/exporters/agent/index.js +0 -1
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -2
- package/packages/dd-trace/src/exporters/agentless/writer.js +3 -3
- package/packages/dd-trace/src/exporters/common/util.js +2 -2
- package/packages/dd-trace/src/git_metadata_tagger.js +1 -1
- package/packages/dd-trace/src/id.js +2 -0
- package/packages/dd-trace/src/index.js +2 -5
- package/packages/dd-trace/src/lambda/handler.js +1 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +3 -0
- package/packages/dd-trace/src/llmobs/plugins/{anthropic.js → anthropic/index.js} +5 -63
- package/packages/dd-trace/src/llmobs/plugins/anthropic/util.js +106 -0
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +3 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +2 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +0 -49
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +2 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/messages.js +76 -0
- package/packages/dd-trace/src/llmobs/plugins/langgraph/index.js +1 -26
- package/packages/dd-trace/src/llmobs/plugins/modelcontextprotocol-sdk/index.js +68 -0
- package/packages/dd-trace/src/llmobs/plugins/modelcontextprotocol-sdk/utils.js +57 -0
- package/packages/dd-trace/src/llmobs/sdk.js +23 -3
- package/packages/dd-trace/src/llmobs/span_processor.js +14 -1
- package/packages/dd-trace/src/llmobs/writers/base.js +7 -1
- package/packages/dd-trace/src/llmobs/writers/spans.js +1 -1
- package/packages/dd-trace/src/openfeature/eval-metrics-hook.js +103 -0
- package/packages/dd-trace/src/openfeature/flagging_provider.js +3 -0
- package/packages/dd-trace/src/opentelemetry/logs/index.js +6 -6
- package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +3 -2
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +7 -7
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +3 -2
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +19 -66
- package/packages/dd-trace/src/opentelemetry/trace/index.js +11 -16
- package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +11 -3
- package/packages/dd-trace/src/opentelemetry/trace/otlp_transformer.js +51 -41
- package/packages/dd-trace/src/opentelemetry/tracer.js +9 -11
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +30 -23
- package/packages/dd-trace/src/opentracing/span.js +2 -2
- package/packages/dd-trace/src/opentracing/tracer.js +12 -5
- package/packages/dd-trace/src/plugin_manager.js +6 -6
- package/packages/dd-trace/src/plugins/index.js +1 -0
- package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +128 -7
- package/packages/dd-trace/src/plugins/util/url.js +2 -1
- package/packages/dd-trace/src/profiling/profilers/event_plugins/crypto.js +32 -0
- package/packages/dd-trace/src/profiling/profilers/event_plugins/zlib.js +19 -0
- package/packages/dd-trace/src/profiling/profilers/events.js +35 -0
- package/packages/dd-trace/src/proxy.js +8 -14
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +2 -2
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +4 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/web.js +4 -0
- package/packages/dd-trace/src/span_processor.js +1 -2
- package/packages/dd-trace/src/tagger.js +2 -2
- package/packages/dd-trace/src/telemetry/send-data.js +5 -7
- package/packages/dd-trace/src/tracer.js +2 -2
- package/vendor/dist/ignore/LICENSE +0 -21
- package/vendor/dist/ignore/index.js +0 -1
|
@@ -48,8 +48,6 @@ export interface GeneratedConfig {
|
|
|
48
48
|
baggageMaxBytes: number;
|
|
49
49
|
baggageMaxItems: number;
|
|
50
50
|
baggageTagKeys: string[];
|
|
51
|
-
ciVisAgentlessLogSubmissionEnabled: boolean;
|
|
52
|
-
ciVisibilityTestSessionName: string | undefined;
|
|
53
51
|
clientIpEnabled: boolean;
|
|
54
52
|
clientIpHeader: string | undefined;
|
|
55
53
|
cloudPayloadTagging: {
|
|
@@ -73,16 +71,18 @@ export interface GeneratedConfig {
|
|
|
73
71
|
};
|
|
74
72
|
dbmPropagationMode: string;
|
|
75
73
|
DD_ACTION_EXECUTION_ID: string | undefined;
|
|
74
|
+
DD_AGENTLESS_LOG_SUBMISSION_ENABLED: boolean;
|
|
76
75
|
DD_AGENTLESS_LOG_SUBMISSION_URL: string | undefined;
|
|
77
76
|
DD_APM_FLUSH_DEADLINE_MILLISECONDS: number;
|
|
78
77
|
DD_AZURE_RESOURCE_GROUP: string | undefined;
|
|
79
78
|
DD_CIVISIBILITY_AGENTLESS_ENABLED: boolean;
|
|
80
79
|
DD_CIVISIBILITY_AGENTLESS_URL: string | undefined;
|
|
81
|
-
DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER:
|
|
80
|
+
DD_CIVISIBILITY_AUTO_INSTRUMENTATION_PROVIDER: string | undefined;
|
|
82
81
|
DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE: boolean;
|
|
83
82
|
DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
|
|
84
83
|
DD_CIVISIBILITY_ENABLED: boolean;
|
|
85
84
|
DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED: boolean;
|
|
85
|
+
DD_CIVISIBILITY_MANUAL_API_ENABLED: boolean;
|
|
86
86
|
DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS: number;
|
|
87
87
|
DD_CIVISIBILITY_TEST_COMMAND: string | undefined;
|
|
88
88
|
DD_CIVISIBILITY_TEST_MODULE_ID: string | undefined;
|
|
@@ -111,8 +111,12 @@ export interface GeneratedConfig {
|
|
|
111
111
|
DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA: string | undefined;
|
|
112
112
|
DD_GIT_REPOSITORY_URL: string | undefined;
|
|
113
113
|
DD_GIT_TAG: string | undefined;
|
|
114
|
+
DD_INJECT_FORCE: boolean;
|
|
115
|
+
DD_INJECTION_ENABLED: string | undefined;
|
|
116
|
+
DD_INSTRUMENTATION_CONFIG_ID: string | undefined;
|
|
114
117
|
DD_INTERNAL_PROFILING_TIMELINE_SAMPLING_ENABLED: boolean;
|
|
115
118
|
DD_LAMBDA_HANDLER: string | undefined;
|
|
119
|
+
DD_LOGS_OTEL_ENABLED: boolean;
|
|
116
120
|
DD_MINI_AGENT_PATH: string | undefined;
|
|
117
121
|
DD_PIPELINE_EXECUTION_ID: string | undefined;
|
|
118
122
|
DD_PLAYWRIGHT_WORKER: string | undefined;
|
|
@@ -147,6 +151,8 @@ export interface GeneratedConfig {
|
|
|
147
151
|
DD_TELEMETRY_FORWARDER_PATH: string | undefined;
|
|
148
152
|
DD_TEST_FLEET_CONFIG_PATH: string | undefined;
|
|
149
153
|
DD_TEST_LOCAL_CONFIG_PATH: string | undefined;
|
|
154
|
+
DD_TEST_SESSION_NAME: string | undefined;
|
|
155
|
+
DD_TEST_TIA_KEEP_COV_CONFIG: boolean;
|
|
150
156
|
DD_TRACE_AEROSPIKE_ENABLED: boolean;
|
|
151
157
|
DD_TRACE_AI_ENABLED: boolean;
|
|
152
158
|
DD_TRACE_AMQP10_ENABLED: boolean;
|
|
@@ -239,11 +245,13 @@ export interface GeneratedConfig {
|
|
|
239
245
|
DD_TRACE_FS_ENABLED: boolean;
|
|
240
246
|
DD_TRACE_GCP_PUBSUB_PUSH_ENABLED: boolean;
|
|
241
247
|
DD_TRACE_GENERIC_POOL_ENABLED: boolean;
|
|
248
|
+
DD_TRACE_GIT_METADATA_ENABLED: boolean;
|
|
242
249
|
DD_TRACE_GOOGLE_CLOUD_PUBSUB_ENABLED: boolean;
|
|
243
250
|
DD_TRACE_GOOGLE_CLOUD_VERTEXAI_ENABLED: boolean;
|
|
244
251
|
DD_TRACE_GOOGLE_GAX_ENABLED: boolean;
|
|
245
252
|
DD_TRACE_GOOGLE_GENAI_ENABLED: boolean;
|
|
246
253
|
DD_TRACE_GRAPHQL_ENABLED: boolean;
|
|
254
|
+
DD_TRACE_GRAPHQL_ERROR_EXTENSIONS: string[];
|
|
247
255
|
DD_TRACE_GRAPHQL_TAG_ENABLED: boolean;
|
|
248
256
|
DD_TRACE_GRAPHQL_TOOLS_ENABLED: boolean;
|
|
249
257
|
DD_TRACE_GRAPHQL_TOOLS_EXECUTOR_ENABLED: boolean;
|
|
@@ -292,11 +300,13 @@ export interface GeneratedConfig {
|
|
|
292
300
|
DD_TRACE_LODASH_ENABLED: boolean;
|
|
293
301
|
DD_TRACE_LOOPBACK_ENABLED: boolean;
|
|
294
302
|
DD_TRACE_MARIADB_ENABLED: boolean;
|
|
303
|
+
DD_TRACE_MEMCACHED_COMMAND_ENABLED: boolean;
|
|
295
304
|
DD_TRACE_MEMCACHED_ENABLED: boolean;
|
|
296
305
|
DD_TRACE_MICROGATEWAY_CORE_ENABLED: boolean;
|
|
297
306
|
DD_TRACE_MIDDIE_ENABLED: boolean;
|
|
298
307
|
DD_TRACE_MOCHA_EACH_ENABLED: boolean;
|
|
299
308
|
DD_TRACE_MOCHA_ENABLED: boolean;
|
|
309
|
+
DD_TRACE_MODELCONTEXTPROTOCOL_SDK_ENABLED: boolean;
|
|
300
310
|
DD_TRACE_MOLECULER_ENABLED: boolean;
|
|
301
311
|
DD_TRACE_MONGODB_CORE_ENABLED: boolean;
|
|
302
312
|
DD_TRACE_MONGODB_ENABLED: boolean;
|
|
@@ -334,6 +344,7 @@ export interface GeneratedConfig {
|
|
|
334
344
|
DD_TRACE_PROCESS_ENABLED: boolean;
|
|
335
345
|
DD_TRACE_PROMISE_ENABLED: boolean;
|
|
336
346
|
DD_TRACE_PROMISE_JS_ENABLED: boolean;
|
|
347
|
+
DD_TRACE_PROPAGATION_EXTRACT_FIRST: boolean;
|
|
337
348
|
DD_TRACE_PROPAGATION_STYLE: string[];
|
|
338
349
|
DD_TRACE_PROTOBUFJS_ENABLED: boolean;
|
|
339
350
|
DD_TRACE_PUG_ENABLED: boolean;
|
|
@@ -351,6 +362,7 @@ export interface GeneratedConfig {
|
|
|
351
362
|
DD_TRACE_SEQUELIZE_ENABLED: boolean;
|
|
352
363
|
DD_TRACE_SHAREDB_ENABLED: boolean;
|
|
353
364
|
DD_TRACE_SMITHY_SMITHY_CLIENT_ENABLED: boolean;
|
|
365
|
+
DD_TRACE_SPAN_LEAK_DEBUG: number;
|
|
354
366
|
DD_TRACE_SQLITE3_ENABLED: boolean;
|
|
355
367
|
DD_TRACE_SUFFIXPLUGIN_ENABLED: boolean;
|
|
356
368
|
DD_TRACE_TAGS: Record<string, string> | undefined;
|
|
@@ -364,6 +376,7 @@ export interface GeneratedConfig {
|
|
|
364
376
|
DD_TRACE_WINSTON_ENABLED: boolean;
|
|
365
377
|
DD_TRACE_WORKERPOOL_ENABLED: boolean;
|
|
366
378
|
DD_TRACE_WS_ENABLED: boolean;
|
|
379
|
+
DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH: number;
|
|
367
380
|
DD_VITEST_WORKER: string | undefined;
|
|
368
381
|
dogstatsd: {
|
|
369
382
|
hostname: string;
|
|
@@ -404,8 +417,6 @@ export interface GeneratedConfig {
|
|
|
404
417
|
flakyTestRetriesCount: number;
|
|
405
418
|
flushInterval: number;
|
|
406
419
|
flushMinSpans: number;
|
|
407
|
-
gitMetadataEnabled: boolean;
|
|
408
|
-
graphqlErrorExtensions: string[];
|
|
409
420
|
grpc: {
|
|
410
421
|
client: {
|
|
411
422
|
error: {
|
|
@@ -442,21 +453,16 @@ export interface GeneratedConfig {
|
|
|
442
453
|
telemetryVerbosity: string;
|
|
443
454
|
};
|
|
444
455
|
inferredProxyServicesEnabled: boolean;
|
|
445
|
-
injectForce: boolean;
|
|
446
|
-
injectionEnabled: string | undefined;
|
|
447
456
|
installSignature: {
|
|
448
457
|
id: string | undefined;
|
|
449
458
|
time: string | undefined;
|
|
450
459
|
type: string | undefined;
|
|
451
460
|
};
|
|
452
|
-
instrumentation_config_id: string | undefined;
|
|
453
461
|
isEarlyFlakeDetectionEnabled: boolean;
|
|
454
462
|
isFlakyTestRetriesEnabled: boolean;
|
|
455
463
|
isGitUploadEnabled: boolean;
|
|
456
464
|
isImpactedTestsEnabled: boolean;
|
|
457
465
|
isIntelligentTestRunnerEnabled: boolean;
|
|
458
|
-
isKeepingCoverageConfiguration: boolean;
|
|
459
|
-
isManualApiEnabled: boolean;
|
|
460
466
|
isTestDynamicInstrumentationEnabled: boolean;
|
|
461
467
|
isTestManagementEnabled: boolean;
|
|
462
468
|
langchain: {
|
|
@@ -471,43 +477,41 @@ export interface GeneratedConfig {
|
|
|
471
477
|
};
|
|
472
478
|
logInjection: boolean;
|
|
473
479
|
logLevel: "debug" | "info" | "warn" | "error";
|
|
474
|
-
memcachedCommandEnabled: boolean;
|
|
475
480
|
middlewareTracingEnabled: boolean;
|
|
476
481
|
openai: {
|
|
477
482
|
spanCharLimit: number;
|
|
478
483
|
};
|
|
479
484
|
openAiLogsEnabled: boolean;
|
|
485
|
+
OTEL_BSP_MAX_EXPORT_BATCH_SIZE: number;
|
|
486
|
+
OTEL_BSP_MAX_QUEUE_SIZE: number;
|
|
487
|
+
OTEL_BSP_SCHEDULE_DELAY: number;
|
|
480
488
|
OTEL_EXPORTER_OTLP_ENDPOINT: string | undefined;
|
|
489
|
+
OTEL_EXPORTER_OTLP_HEADERS: Record<string, string> | undefined;
|
|
490
|
+
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: string;
|
|
491
|
+
OTEL_EXPORTER_OTLP_LOGS_HEADERS: Record<string, string> | undefined;
|
|
492
|
+
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: string;
|
|
493
|
+
OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: number;
|
|
494
|
+
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: string;
|
|
495
|
+
OTEL_EXPORTER_OTLP_METRICS_HEADERS: Record<string, string> | undefined;
|
|
496
|
+
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: string;
|
|
497
|
+
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA" | "CUMULATIVE" | "LOWMEMORY";
|
|
498
|
+
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: number;
|
|
499
|
+
OTEL_EXPORTER_OTLP_PROTOCOL: string;
|
|
500
|
+
OTEL_EXPORTER_OTLP_TIMEOUT: number;
|
|
501
|
+
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: string;
|
|
502
|
+
OTEL_EXPORTER_OTLP_TRACES_HEADERS: Record<string, string> | undefined;
|
|
503
|
+
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "http/json";
|
|
504
|
+
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: number;
|
|
481
505
|
OTEL_LOGS_EXPORTER: "none" | "otlp" | undefined;
|
|
506
|
+
OTEL_METRIC_EXPORT_INTERVAL: number;
|
|
507
|
+
OTEL_METRIC_EXPORT_TIMEOUT: number;
|
|
482
508
|
OTEL_METRICS_EXPORTER: "none" | "otlp" | undefined;
|
|
483
509
|
OTEL_RESOURCE_ATTRIBUTES: Record<string, string>;
|
|
484
510
|
OTEL_SDK_DISABLED: boolean;
|
|
485
|
-
OTEL_TRACES_EXPORTER: "none" | "otlp";
|
|
511
|
+
OTEL_TRACES_EXPORTER: "none" | "otlp" | undefined;
|
|
486
512
|
OTEL_TRACES_SAMPLER: "always_on" | "always_off" | "traceidratio" | "parentbased_always_on" | "parentbased_always_off" | "parentbased_traceidratio";
|
|
487
513
|
OTEL_TRACES_SAMPLER_ARG: number | undefined;
|
|
488
|
-
otelBatchTimeout: number;
|
|
489
|
-
otelHeaders: string | undefined;
|
|
490
|
-
otelLogsEnabled: boolean;
|
|
491
|
-
otelLogsHeaders: string | undefined;
|
|
492
|
-
otelLogsProtocol: string;
|
|
493
|
-
otelLogsTimeout: number;
|
|
494
|
-
otelLogsUrl: string | undefined;
|
|
495
|
-
otelMaxExportBatchSize: number;
|
|
496
|
-
otelMaxQueueSize: number;
|
|
497
514
|
otelMetricsEnabled: boolean;
|
|
498
|
-
otelMetricsExportInterval: number;
|
|
499
|
-
otelMetricsExportTimeout: number;
|
|
500
|
-
otelMetricsHeaders: string | undefined;
|
|
501
|
-
otelMetricsProtocol: string;
|
|
502
|
-
otelMetricsTemporalityPreference: "DELTA" | "CUMULATIVE" | "LOWMEMORY";
|
|
503
|
-
otelMetricsTimeout: number;
|
|
504
|
-
otelMetricsUrl: string | undefined;
|
|
505
|
-
otelProtocol: string;
|
|
506
|
-
otelTimeout: number;
|
|
507
|
-
otelTracesHeaders: Record<string, string> | undefined;
|
|
508
|
-
otelTracesProtocol: string;
|
|
509
|
-
otelTracesTimeout: number;
|
|
510
|
-
otelTracesUrl: string | undefined;
|
|
511
515
|
peerServiceMapping: Record<string, string>;
|
|
512
516
|
port: string | number;
|
|
513
517
|
profiling: {
|
|
@@ -536,12 +540,11 @@ export interface GeneratedConfig {
|
|
|
536
540
|
sampleRate: number | undefined;
|
|
537
541
|
samplingRules: import('../../../../index').SamplingRule[];
|
|
538
542
|
scope: string | undefined;
|
|
539
|
-
service: string
|
|
543
|
+
service: string;
|
|
540
544
|
serviceMapping: Record<string, string>;
|
|
541
545
|
site: string;
|
|
542
546
|
spanAttributeSchema: "v0" | "v1";
|
|
543
547
|
spanComputePeerService: boolean;
|
|
544
|
-
spanLeakDebug: number;
|
|
545
548
|
spanRemoveIntegrationFromService: boolean;
|
|
546
549
|
spanSamplingRules: import('../../../../index').SpanSamplingRule[] | undefined;
|
|
547
550
|
startupLogs: boolean;
|
|
@@ -549,7 +552,6 @@ export interface GeneratedConfig {
|
|
|
549
552
|
enabled: boolean;
|
|
550
553
|
};
|
|
551
554
|
tags: Record<string, string>;
|
|
552
|
-
tagsHeaderMaxLength: number;
|
|
553
555
|
telemetry: {
|
|
554
556
|
debug: boolean;
|
|
555
557
|
dependencyCollection: boolean;
|
|
@@ -572,7 +574,6 @@ export interface GeneratedConfig {
|
|
|
572
574
|
traceId128BitGenerationEnabled: boolean;
|
|
573
575
|
traceId128BitLoggingEnabled: boolean;
|
|
574
576
|
tracePropagationBehaviorExtract: "continue" | "restart" | "ignore";
|
|
575
|
-
tracePropagationExtractFirst: boolean;
|
|
576
577
|
tracePropagationStyle: {
|
|
577
578
|
extract: string[];
|
|
578
579
|
inject: string[];
|
|
@@ -131,7 +131,13 @@ function setAndTrack (config, name, value, rawValue = value, source = 'calculate
|
|
|
131
131
|
}
|
|
132
132
|
changeTracker[source].add(name)
|
|
133
133
|
} else {
|
|
134
|
-
|
|
134
|
+
// Programmatic-only options (e.g. logger, lookup, plugins) have no row in
|
|
135
|
+
// `configurationsTable` and hold opaque user-supplied references that may
|
|
136
|
+
// carry cycles or non-plain prototypes — for example a winston Logger
|
|
137
|
+
// extends a Transform stream. Use a reference for these instead of cloning.
|
|
138
|
+
const copy = typeof value === 'object' && value !== null && name in configurationsTable
|
|
139
|
+
? rfdc(value)
|
|
140
|
+
: value
|
|
135
141
|
changeTracker.baseValuesByPath[name] = { value: copy, source }
|
|
136
142
|
}
|
|
137
143
|
set(config, name, value)
|
|
@@ -208,7 +214,7 @@ class Config extends ConfigBase {
|
|
|
208
214
|
|
|
209
215
|
warnWrongOtelSettings()
|
|
210
216
|
|
|
211
|
-
if (this.
|
|
217
|
+
if (this.DD_TRACE_GIT_METADATA_ENABLED) {
|
|
212
218
|
this.#loadGitMetadata()
|
|
213
219
|
}
|
|
214
220
|
|
|
@@ -349,7 +355,7 @@ class Config extends ConfigBase {
|
|
|
349
355
|
}
|
|
350
356
|
// Disable log injection when OTEL logs are enabled
|
|
351
357
|
// OTEL logs and DD log injection are mutually exclusive
|
|
352
|
-
if (this.
|
|
358
|
+
if (this.DD_LOGS_OTEL_ENABLED) {
|
|
353
359
|
setAndTrack(this, 'logInjection', false)
|
|
354
360
|
}
|
|
355
361
|
if (this.otelMetricsEnabled &&
|
|
@@ -358,21 +364,9 @@ class Config extends ConfigBase {
|
|
|
358
364
|
setAndTrack(this, 'otelMetricsEnabled', false)
|
|
359
365
|
}
|
|
360
366
|
|
|
361
|
-
|
|
362
|
-
this.OTEL_TRACES_EXPORTER === 'otlp'
|
|
363
|
-
if (this.protocolVersion && this.protocolVersion !== '0.4' && otelTracesEnabled) {
|
|
367
|
+
if (this.OTEL_TRACES_EXPORTER === 'otlp' && this.protocolVersion && this.protocolVersion !== '0.4') {
|
|
364
368
|
log.warn('DD_TRACE_AGENT_PROTOCOL_VERSION is set, disabling OTLP traces export')
|
|
365
|
-
setAndTrack(this, '
|
|
366
|
-
} else {
|
|
367
|
-
setAndTrack(this, 'otelTracesEnabled', otelTracesEnabled)
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
if (this.otelTracesProtocol && this.otelTracesProtocol !== 'http/json') {
|
|
371
|
-
log.warn(
|
|
372
|
-
'OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=%s is not yet supported; only http/json is currently implemented',
|
|
373
|
-
this.otelTracesProtocol
|
|
374
|
-
)
|
|
375
|
-
setAndTrack(this, 'otelTracesProtocol', 'http/json')
|
|
369
|
+
setAndTrack(this, 'OTEL_TRACES_EXPORTER', 'none')
|
|
376
370
|
}
|
|
377
371
|
|
|
378
372
|
if (this.telemetry.heartbeatInterval) {
|
|
@@ -433,7 +427,7 @@ class Config extends ConfigBase {
|
|
|
433
427
|
))
|
|
434
428
|
}
|
|
435
429
|
|
|
436
|
-
if (this.
|
|
430
|
+
if (this.DD_INJECTION_ENABLED) {
|
|
437
431
|
setAndTrack(this, 'instrumentationSource', 'ssi')
|
|
438
432
|
}
|
|
439
433
|
|
|
@@ -441,16 +435,13 @@ class Config extends ConfigBase {
|
|
|
441
435
|
setAndTrack(this, 'runtimeMetrics.enabled', false)
|
|
442
436
|
}
|
|
443
437
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
trackedConfigOrigins.has('OTEL_TRACES_EXPORTER'))) {
|
|
452
|
-
setAndTrack(this, 'sampleRate', getFromOtelSamplerMap(effectiveSampler, this.OTEL_TRACES_SAMPLER_ARG))
|
|
453
|
-
}
|
|
438
|
+
// Apply the OTel sampler when the user opted into OTel traces or explicitly set the sampler.
|
|
439
|
+
// OTEL_TRACES_SAMPLER has `default: parentbased_always_on` (per OTel spec), so opt-in users
|
|
440
|
+
// that don't set the sampler still get parent-based sampling.
|
|
441
|
+
if (!trackedConfigOrigins.has('sampleRate') &&
|
|
442
|
+
(trackedConfigOrigins.has('OTEL_TRACES_SAMPLER') || this.OTEL_TRACES_EXPORTER === 'otlp')) {
|
|
443
|
+
setAndTrack(this, 'sampleRate',
|
|
444
|
+
getFromOtelSamplerMap(this.OTEL_TRACES_SAMPLER, this.OTEL_TRACES_SAMPLER_ARG))
|
|
454
445
|
}
|
|
455
446
|
|
|
456
447
|
if (this.DD_SPAN_SAMPLING_RULES_FILE) {
|
|
@@ -605,19 +596,18 @@ class Config extends ConfigBase {
|
|
|
605
596
|
}
|
|
606
597
|
}
|
|
607
598
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
599
|
+
// TODO: This could likely be moved to the base class and allow easier GRPC handling
|
|
600
|
+
// Default OTLP endpoints follow the configured agent host so users who point DD at a custom
|
|
601
|
+
// agent (DD_AGENT_HOST / DD_TRACE_AGENT_URL) also reach OTLP on that host.
|
|
602
|
+
const defaultOtlpBase = this.OTEL_EXPORTER_OTLP_ENDPOINT?.replace(/\/$/, '') ?? `http://${agentHostname}:4318`
|
|
603
|
+
if (!this.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) {
|
|
604
|
+
setAndTrack(this, 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT', `${defaultOtlpBase}/v1/logs`)
|
|
611
605
|
}
|
|
612
|
-
if (!this.
|
|
613
|
-
setAndTrack(this, '
|
|
606
|
+
if (!this.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT) {
|
|
607
|
+
setAndTrack(this, 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT', `${defaultOtlpBase}/v1/metrics`)
|
|
614
608
|
}
|
|
615
|
-
if (!
|
|
616
|
-
|
|
617
|
-
setAndTrack(this, 'otelTracesUrl', this.OTEL_EXPORTER_OTLP_ENDPOINT.replace(/\/$/, '') + '/v1/traces')
|
|
618
|
-
} else if (!this.otelTracesUrl) {
|
|
619
|
-
const tracesHostname = agentHostname === '127.0.0.1' ? 'localhost' : agentHostname
|
|
620
|
-
setAndTrack(this, 'otelTracesUrl', `http://${tracesHostname}:${DEFAULT_OTLP_PORT}/v1/traces`)
|
|
609
|
+
if (!this.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) {
|
|
610
|
+
setAndTrack(this, 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', `${defaultOtlpBase}/v1/traces`)
|
|
621
611
|
}
|
|
622
612
|
|
|
623
613
|
if (process.platform === 'win32') {
|
|
@@ -13,6 +13,15 @@ const VALID_PROPAGATION_STYLES = new Set([
|
|
|
13
13
|
'datadog', 'tracecontext', 'b3', 'b3 single header', 'b3multi', 'baggage', 'none',
|
|
14
14
|
])
|
|
15
15
|
|
|
16
|
+
const RENAMED_OTEL_TAGS = new Map(
|
|
17
|
+
[
|
|
18
|
+
['deployment.environment.name', 'env'],
|
|
19
|
+
['deployment.environment', 'env'],
|
|
20
|
+
['service.name', 'service'],
|
|
21
|
+
['service.version', 'version'],
|
|
22
|
+
]
|
|
23
|
+
)
|
|
24
|
+
|
|
16
25
|
function toCase (value, methodName) {
|
|
17
26
|
if (Array.isArray(value)) {
|
|
18
27
|
return value.map(item => {
|
|
@@ -66,12 +75,12 @@ const transformers = {
|
|
|
66
75
|
}
|
|
67
76
|
return value
|
|
68
77
|
},
|
|
69
|
-
parseOtelTags (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.
|
|
73
|
-
|
|
74
|
-
|
|
78
|
+
parseOtelTags (object) {
|
|
79
|
+
const tags = {}
|
|
80
|
+
for (const [key, value] of Object.entries(object)) {
|
|
81
|
+
tags[RENAMED_OTEL_TAGS.get(key) ?? key] = value
|
|
82
|
+
}
|
|
83
|
+
return tags
|
|
75
84
|
},
|
|
76
85
|
normalizeProfilingEnabled (configValue) {
|
|
77
86
|
if (configValue == null) {
|
|
@@ -225,11 +234,19 @@ const parsers = {
|
|
|
225
234
|
if (!raw) {
|
|
226
235
|
return entries
|
|
227
236
|
}
|
|
228
|
-
|
|
229
|
-
if (optionName
|
|
237
|
+
let valueSeparator = ':'
|
|
238
|
+
if (optionName.startsWith('OTEL_')) {
|
|
239
|
+
// OTEL spec uses `key=value,key=value`
|
|
240
|
+
// (https://opentelemetry.io/docs/specs/otel/protocol/exporter/#specifying-headers-via-environment-variables),
|
|
241
|
+
// while DD uses `key:value,key:value`. Parse OTEL-prefixed options with `=` so downstream code
|
|
242
|
+
// receives a proper map and telemetry reports the parsed entries. The char-by-char loop
|
|
243
|
+
// avoids the allocations that `split(',')` + `indexOf('=')` do per pair.
|
|
244
|
+
valueSeparator = '='
|
|
245
|
+
} else if (optionName === 'DD_TAGS' && !raw.includes(',')) {
|
|
246
|
+
// DD_TAGS is a special case. It may be a map of key-value pairs separated by spaces.
|
|
230
247
|
raw = raw.replaceAll(/\s+/g, ',')
|
|
231
248
|
}
|
|
232
|
-
tagger.add(entries, raw)
|
|
249
|
+
tagger.add(entries, raw, valueSeparator)
|
|
233
250
|
return entries
|
|
234
251
|
},
|
|
235
252
|
JSON (raw) {
|