dd-trace 5.96.0 → 5.98.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/index.d.ts +60 -2
- package/package.json +9 -7
- package/packages/datadog-esbuild/index.js +20 -9
- package/packages/datadog-instrumentations/src/child_process.js +7 -17
- package/packages/datadog-instrumentations/src/crypto.js +1 -2
- package/packages/datadog-instrumentations/src/cucumber.js +69 -4
- package/packages/datadog-instrumentations/src/cypress-config.js +318 -0
- package/packages/datadog-instrumentations/src/cypress.js +86 -4
- package/packages/datadog-instrumentations/src/dns.js +1 -2
- package/packages/datadog-instrumentations/src/express.js +4 -4
- package/packages/datadog-instrumentations/src/fs.js +27 -29
- package/packages/datadog-instrumentations/src/graphql.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +41 -13
- package/packages/datadog-instrumentations/src/helpers/hook.js +31 -6
- package/packages/datadog-instrumentations/src/helpers/hooks.js +12 -19
- package/packages/datadog-instrumentations/src/helpers/instrument.js +27 -13
- package/packages/datadog-instrumentations/src/helpers/register.js +103 -142
- package/packages/datadog-instrumentations/src/http/client.js +2 -3
- package/packages/datadog-instrumentations/src/http/server.js +2 -5
- package/packages/datadog-instrumentations/src/http2/client.js +1 -3
- package/packages/datadog-instrumentations/src/http2/server.js +1 -3
- package/packages/datadog-instrumentations/src/jest.js +117 -16
- package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
- package/packages/datadog-instrumentations/src/mocha/utils.js +12 -1
- package/packages/datadog-instrumentations/src/net.js +2 -8
- package/packages/datadog-instrumentations/src/pino.js +1 -1
- package/packages/datadog-instrumentations/src/playwright.js +4 -1
- package/packages/datadog-instrumentations/src/prisma.js +1 -2
- package/packages/datadog-instrumentations/src/redis.js +12 -6
- package/packages/datadog-instrumentations/src/selenium.js +4 -1
- package/packages/datadog-instrumentations/src/sequelize.js +1 -1
- package/packages/datadog-instrumentations/src/url.js +1 -3
- package/packages/datadog-instrumentations/src/vitest.js +5 -1
- package/packages/datadog-instrumentations/src/vm.js +1 -3
- package/packages/datadog-plugin-aws-sdk/src/base.js +5 -4
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +1 -0
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -0
- package/packages/datadog-plugin-cucumber/src/index.js +13 -3
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +166 -6
- package/packages/datadog-plugin-cypress/src/index.js +59 -2
- package/packages/datadog-plugin-fs/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +2 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +2 -7
- package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
- package/packages/datadog-plugin-http/src/client.js +1 -1
- package/packages/datadog-plugin-http/src/server.js +10 -2
- package/packages/datadog-plugin-http2/src/client.js +1 -1
- package/packages/datadog-plugin-http2/src/server.js +10 -2
- package/packages/datadog-plugin-jest/src/index.js +4 -2
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +31 -4
- package/packages/datadog-plugin-mocha/src/index.js +5 -2
- package/packages/datadog-plugin-mongodb-core/src/index.js +3 -3
- package/packages/datadog-plugin-mysql/src/index.js +1 -1
- package/packages/datadog-plugin-next/src/index.js +10 -16
- package/packages/datadog-plugin-openai/src/services.js +1 -0
- package/packages/datadog-plugin-pg/src/index.js +1 -1
- package/packages/datadog-plugin-tedious/src/index.js +1 -1
- package/packages/datadog-plugin-ws/src/close.js +1 -1
- package/packages/datadog-plugin-ws/src/receiver.js +1 -1
- package/packages/datadog-webpack/index.js +3 -3
- package/packages/dd-trace/index.js +12 -10
- package/packages/dd-trace/src/agent/url.js +2 -2
- package/packages/dd-trace/src/aiguard/sdk.js +26 -22
- package/packages/dd-trace/src/appsec/blocked_templates.js +4 -3
- package/packages/dd-trace/src/appsec/blocking.js +64 -33
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +1 -1
- package/packages/dd-trace/src/appsec/remote_config.js +1 -0
- package/packages/dd-trace/src/appsec/sdk/index.js +4 -0
- package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/track_event.js +5 -5
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/utils.js +4 -2
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +6 -1
- package/packages/dd-trace/src/ci-visibility/test-api-manual/test-api-manual-plugin.js +4 -0
- package/packages/dd-trace/src/config/defaults.js +315 -146
- package/packages/dd-trace/src/config/generated-config-types.d.ts +9 -1
- package/packages/dd-trace/src/config/helper.js +59 -10
- package/packages/dd-trace/src/config/index.js +587 -1496
- package/packages/dd-trace/src/config/parsers.js +256 -0
- package/packages/dd-trace/src/config/remote_config.js +59 -2
- package/packages/dd-trace/src/config/supported-configurations.json +406 -432
- package/packages/dd-trace/src/constants.js +1 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +7 -1
- package/packages/dd-trace/src/crashtracking/index.js +1 -7
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +5 -2
- package/packages/dd-trace/src/debugger/index.js +1 -1
- package/packages/dd-trace/src/dogstatsd.js +12 -9
- package/packages/dd-trace/src/encode/0.4.js +8 -7
- package/packages/dd-trace/src/encode/span-stats.js +4 -1
- package/packages/dd-trace/src/exporters/agent/writer.js +7 -1
- package/packages/dd-trace/src/exporters/common/request.js +9 -0
- package/packages/dd-trace/src/exporters/common/writer.js +12 -2
- package/packages/dd-trace/src/heap_snapshots.js +3 -0
- package/packages/dd-trace/src/index.js +5 -2
- package/packages/dd-trace/src/lambda/runtime/ritm.js +6 -6
- package/packages/dd-trace/src/llmobs/index.js +4 -1
- package/packages/dd-trace/src/llmobs/plugins/ai/index.js +5 -1
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +60 -12
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +4 -2
- package/packages/dd-trace/src/llmobs/sdk.js +12 -8
- package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
- package/packages/dd-trace/src/llmobs/tagger.js +9 -6
- package/packages/dd-trace/src/llmobs/writers/base.js +2 -0
- package/packages/dd-trace/src/llmobs/writers/util.js +3 -0
- package/packages/dd-trace/src/log/index.js +20 -59
- package/packages/dd-trace/src/log/writer.js +7 -19
- package/packages/dd-trace/src/noop/proxy.js +8 -0
- package/packages/dd-trace/src/openfeature/remote_config.js +6 -1
- package/packages/dd-trace/src/opentelemetry/context_manager.js +6 -4
- package/packages/dd-trace/src/opentelemetry/logs/index.js +1 -1
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +1 -1
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +17 -2
- package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +14 -2
- package/packages/dd-trace/src/opentelemetry/otlp/trace.proto +358 -0
- package/packages/dd-trace/src/opentelemetry/otlp/trace_service.proto +78 -0
- package/packages/dd-trace/src/opentelemetry/trace/index.js +75 -0
- package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +66 -0
- package/packages/dd-trace/src/opentelemetry/trace/otlp_transformer.js +332 -0
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +9 -4
- package/packages/dd-trace/src/opentracing/tracer.js +9 -4
- package/packages/dd-trace/src/payload-tagging/config/index.js +6 -5
- package/packages/dd-trace/src/plugin_manager.js +8 -6
- package/packages/dd-trace/src/plugins/ci_plugin.js +4 -0
- package/packages/dd-trace/src/plugins/log_plugin.js +3 -0
- package/packages/dd-trace/src/plugins/plugin.js +11 -13
- package/packages/dd-trace/src/plugins/storage.js +2 -2
- package/packages/dd-trace/src/plugins/tracing.js +22 -5
- package/packages/dd-trace/src/plugins/util/test.js +2 -0
- package/packages/dd-trace/src/plugins/util/web.js +6 -88
- package/packages/dd-trace/src/process-tags/index.js +3 -0
- package/packages/dd-trace/src/profiler.js +27 -2
- package/packages/dd-trace/src/profiling/config.js +73 -241
- package/packages/dd-trace/src/profiling/exporter_cli.js +1 -4
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +6 -2
- package/packages/dd-trace/src/profiling/profiler.js +78 -109
- package/packages/dd-trace/src/profiling/profilers/events.js +2 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +89 -6
- package/packages/dd-trace/src/profiling/ssi-heuristics.js +4 -1
- package/packages/dd-trace/src/propagation-hash/index.js +2 -1
- package/packages/dd-trace/src/proxy.js +40 -6
- package/packages/dd-trace/src/remote_config/index.js +3 -0
- package/packages/dd-trace/src/require-package-json.js +8 -4
- package/packages/dd-trace/src/ritm.js +58 -26
- package/packages/dd-trace/src/runtime_metrics/index.js +3 -0
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +18 -11
- package/packages/dd-trace/src/sampler.js +1 -1
- package/packages/dd-trace/src/service-naming/index.js +1 -1
- package/packages/dd-trace/src/service-naming/schemas/definition.js +4 -1
- package/packages/dd-trace/src/service-naming/schemas/util.js +15 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +24 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +60 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +17 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/websocket.js +5 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +17 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/web.js +11 -1
- package/packages/dd-trace/src/service-naming/schemas/v1/websocket.js +6 -0
- package/packages/dd-trace/src/span_stats.js +5 -1
- package/packages/dd-trace/src/standalone/index.js +3 -0
- package/packages/dd-trace/src/telemetry/index.js +2 -3
- package/packages/dd-trace/src/telemetry/send-data.js +5 -19
- package/packages/dd-trace/src/telemetry/session-propagation.js +19 -44
- package/packages/dd-trace/src/telemetry/telemetry.js +28 -171
- package/packages/dd-trace/src/tracer.js +2 -2
- package/packages/dd-trace/src/util.js +0 -9
- package/vendor/dist/@apm-js-collab/code-transformer/index.js +28 -6
- package/vendor/dist/protobufjs/index.js +1 -1
- package/packages/dd-trace/src/log/utils.js +0 -16
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
'use strict'
|
|
2
|
+
|
|
2
3
|
const { inspect } = require('util')
|
|
4
|
+
|
|
5
|
+
const { defaults } = require('../config/defaults')
|
|
3
6
|
const { isTrue } = require('../util')
|
|
4
7
|
const { getValueFromEnvSources } = require('../config/helper')
|
|
5
8
|
const { traceChannel, debugChannel, infoChannel, warnChannel, errorChannel } = require('./channels')
|
|
6
9
|
const logWriter = require('./writer')
|
|
7
10
|
const { Log, LogConfig, NoTransmitError } = require('./log')
|
|
8
|
-
const { memoize } = require('./utils')
|
|
9
11
|
|
|
10
12
|
const config = {
|
|
11
|
-
enabled:
|
|
13
|
+
enabled: defaults.DD_TRACE_DEBUG,
|
|
12
14
|
logger: undefined,
|
|
13
|
-
logLevel:
|
|
15
|
+
logLevel: defaults.logLevel,
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
//
|
|
18
|
+
// In most places where we know we want to mute a log we use log.error() directly
|
|
17
19
|
const NO_TRANSMIT = new LogConfig(false)
|
|
18
20
|
|
|
19
21
|
const log = {
|
|
@@ -21,36 +23,6 @@ const log = {
|
|
|
21
23
|
NO_TRANSMIT,
|
|
22
24
|
NoTransmitError,
|
|
23
25
|
|
|
24
|
-
/**
|
|
25
|
-
* @returns Read-only version of logging config. To modify config, call `log.use` and `log.toggle`
|
|
26
|
-
*/
|
|
27
|
-
getConfig () {
|
|
28
|
-
return { ...config }
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
use (logger) {
|
|
32
|
-
config.logger = logger
|
|
33
|
-
logWriter.use(logger)
|
|
34
|
-
return log
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
toggle (enabled, logLevel) {
|
|
38
|
-
config.enabled = enabled
|
|
39
|
-
config.logLevel = logLevel
|
|
40
|
-
logWriter.toggle(enabled, logLevel)
|
|
41
|
-
return log
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
reset () {
|
|
45
|
-
logWriter.reset()
|
|
46
|
-
log._deprecate = memoize((code, message) => {
|
|
47
|
-
publishFormatted(errorChannel, null, message)
|
|
48
|
-
return true
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
return log
|
|
52
|
-
},
|
|
53
|
-
|
|
54
26
|
trace (...args) {
|
|
55
27
|
if (traceChannel.hasSubscribers) {
|
|
56
28
|
const logRecord = {}
|
|
@@ -66,6 +38,8 @@ const log = {
|
|
|
66
38
|
|
|
67
39
|
publishFormatted(traceChannel, null, stack.join('\n'))
|
|
68
40
|
}
|
|
41
|
+
// TODO: Why do we allow chaining here? This is likely not used anywhere.
|
|
42
|
+
// If it is used, that seems like a mistake.
|
|
69
43
|
return log
|
|
70
44
|
},
|
|
71
45
|
|
|
@@ -102,31 +76,20 @@ const log = {
|
|
|
102
76
|
return log
|
|
103
77
|
},
|
|
104
78
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
fleetStableConfigValue ??
|
|
79
|
+
configure (options) {
|
|
80
|
+
config.logger = options.logger
|
|
81
|
+
config.logLevel = options.logLevel ??
|
|
82
|
+
getValueFromEnvSources('DD_TRACE_LOG_LEVEL') ??
|
|
83
|
+
config.logLevel
|
|
84
|
+
config.enabled = isTrue(
|
|
112
85
|
getValueFromEnvSources('DD_TRACE_DEBUG') ??
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
config.enabled
|
|
86
|
+
// TODO: Handle this by adding a log buffer so that configure may be called with the actual configurations.
|
|
87
|
+
// eslint-disable-next-line eslint-rules/eslint-process-env
|
|
88
|
+
(process.env.OTEL_LOG_LEVEL === 'debug' || config.enabled)
|
|
116
89
|
)
|
|
117
|
-
|
|
90
|
+
logWriter.configure(config.enabled, config.logLevel, options.logger)
|
|
118
91
|
|
|
119
|
-
|
|
120
|
-
optionsValue,
|
|
121
|
-
fleetStableConfigValue,
|
|
122
|
-
localStableConfigValue
|
|
123
|
-
) {
|
|
124
|
-
return optionsValue ??
|
|
125
|
-
fleetStableConfigValue ??
|
|
126
|
-
getValueFromEnvSources('DD_TRACE_LOG_LEVEL') ??
|
|
127
|
-
getValueFromEnvSources('OTEL_LOG_LEVEL') ??
|
|
128
|
-
localStableConfigValue ??
|
|
129
|
-
config.logLevel
|
|
92
|
+
return config.enabled
|
|
130
93
|
},
|
|
131
94
|
}
|
|
132
95
|
|
|
@@ -150,8 +113,6 @@ function getErrorLog (err) {
|
|
|
150
113
|
return err
|
|
151
114
|
}
|
|
152
115
|
|
|
153
|
-
log.
|
|
154
|
-
|
|
155
|
-
log.toggle(log.isEnabled(), log.getLogLevel())
|
|
116
|
+
log.configure({})
|
|
156
117
|
|
|
157
118
|
module.exports = log
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const { storage } = require('../../../datadog-core')
|
|
4
4
|
const { LogChannel } = require('./channels')
|
|
5
|
+
|
|
5
6
|
const defaultLogger = {
|
|
6
7
|
debug: msg => console.debug(msg), /* eslint-disable-line no-console */
|
|
7
8
|
info: msg => console.info(msg), /* eslint-disable-line no-console */
|
|
@@ -17,12 +18,8 @@ function withNoop (fn) {
|
|
|
17
18
|
storage('legacy').run({ noop: true }, fn)
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
function unsubscribeAll () {
|
|
21
|
-
logChannel.unsubscribe({ trace, debug, info, warn, error })
|
|
22
|
-
}
|
|
23
|
-
|
|
24
21
|
function toggleSubscription (enable, level) {
|
|
25
|
-
|
|
22
|
+
logChannel.unsubscribe({ trace, debug, info, warn, error })
|
|
26
23
|
|
|
27
24
|
if (enable) {
|
|
28
25
|
logChannel = new LogChannel(level)
|
|
@@ -30,23 +27,14 @@ function toggleSubscription (enable, level) {
|
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
29
|
|
|
33
|
-
function
|
|
30
|
+
function configure (enable, level, newLogger) {
|
|
34
31
|
enabled = enable
|
|
32
|
+
logger = typeof newLogger?.debug === 'function' && typeof newLogger.error === 'function'
|
|
33
|
+
? newLogger
|
|
34
|
+
: defaultLogger
|
|
35
35
|
toggleSubscription(enabled, level)
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function use (newLogger) {
|
|
39
|
-
if (typeof newLogger?.debug === 'function' && typeof newLogger.error === 'function') {
|
|
40
|
-
logger = newLogger
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function reset () {
|
|
45
|
-
logger = defaultLogger
|
|
46
|
-
enabled = false
|
|
47
|
-
toggleSubscription(false)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
38
|
function error (err) {
|
|
51
39
|
withNoop(() => logger.error(err))
|
|
52
40
|
}
|
|
@@ -69,4 +57,4 @@ function trace (log) {
|
|
|
69
57
|
withNoop(() => logger.debug(log))
|
|
70
58
|
}
|
|
71
59
|
|
|
72
|
-
module.exports = {
|
|
60
|
+
module.exports = { configure, error, warn, info, debug, trace }
|
|
@@ -13,6 +13,10 @@ const noopDogStatsDClient = new NoopDogStatsDClient()
|
|
|
13
13
|
const noopLLMObs = new NoopLLMObsSDK(noop)
|
|
14
14
|
const noopOpenFeatureProvider = new NoopFlaggingProvider()
|
|
15
15
|
const noopAIGuard = new NoopAIGuardSDK()
|
|
16
|
+
const noopProfiling = {
|
|
17
|
+
setCustomLabelKeys () {},
|
|
18
|
+
runWithLabels (labels, fn) { return fn() },
|
|
19
|
+
}
|
|
16
20
|
|
|
17
21
|
/** @type {import('../../src/index')} Proxy */
|
|
18
22
|
class NoopProxy {
|
|
@@ -98,6 +102,10 @@ class NoopProxy {
|
|
|
98
102
|
return this
|
|
99
103
|
}
|
|
100
104
|
|
|
105
|
+
get profiling () {
|
|
106
|
+
return noopProfiling
|
|
107
|
+
}
|
|
108
|
+
|
|
101
109
|
get TracerProvider () {
|
|
102
110
|
return require('../opentelemetry/tracer_provider')
|
|
103
111
|
}
|
|
@@ -19,9 +19,14 @@ function enable (rc, config, getOpenfeatureProxy) {
|
|
|
19
19
|
|
|
20
20
|
// Set product handler for FFE_FLAGS
|
|
21
21
|
rc.setProductHandler('FFE_FLAGS', (action, conf) => {
|
|
22
|
-
// Feed UFC config directly to OpenFeature provider
|
|
23
22
|
if (action === 'apply' || action === 'modify') {
|
|
23
|
+
// Feed UFC config directly to OpenFeature provider
|
|
24
24
|
getOpenfeatureProxy()._setConfiguration(conf)
|
|
25
|
+
} else if (action === 'unapply') {
|
|
26
|
+
// Clear the configuration so evaluations return PROVIDER_NOT_READY,
|
|
27
|
+
// consistent with Go and Python which also set config to null on RC deletion.
|
|
28
|
+
// The evaluator returns PROVIDER_NOT_READY when config is null/undefined.
|
|
29
|
+
getOpenfeatureProxy()._setConfiguration(null)
|
|
25
30
|
}
|
|
26
31
|
})
|
|
27
32
|
}
|
|
@@ -4,7 +4,6 @@ const { trace, ROOT_CONTEXT, propagation } = require('@opentelemetry/api')
|
|
|
4
4
|
const { storage } = require('../../../datadog-core')
|
|
5
5
|
const { getAllBaggageItems, setBaggageItem, removeAllBaggageItems } = require('../baggage')
|
|
6
6
|
|
|
7
|
-
const tracer = require('../../')
|
|
8
7
|
const SpanContext = require('./span_context')
|
|
9
8
|
|
|
10
9
|
class ContextManager {
|
|
@@ -16,7 +15,7 @@ class ContextManager {
|
|
|
16
15
|
active () {
|
|
17
16
|
const store = this._store.getStore()
|
|
18
17
|
const baseContext = store || ROOT_CONTEXT
|
|
19
|
-
const activeSpan =
|
|
18
|
+
const activeSpan = storage('legacy').getStore()?.span
|
|
20
19
|
|
|
21
20
|
const storedSpan = store ? trace.getSpan(store) : null
|
|
22
21
|
|
|
@@ -60,7 +59,6 @@ class ContextManager {
|
|
|
60
59
|
// converts otel to dd
|
|
61
60
|
with (context, fn, thisArg, ...args) {
|
|
62
61
|
const span = trace.getSpan(context)
|
|
63
|
-
const ddScope = tracer.scope()
|
|
64
62
|
const run = () => {
|
|
65
63
|
const cb = thisArg == null ? fn : fn.bind(thisArg)
|
|
66
64
|
return this._store.run(context, cb, ...args)
|
|
@@ -74,7 +72,11 @@ class ContextManager {
|
|
|
74
72
|
for (const baggage of baggageItems) {
|
|
75
73
|
setBaggageItem(baggage[0], baggage[1].value)
|
|
76
74
|
}
|
|
77
|
-
if (span && span._ddSpan)
|
|
75
|
+
if (span && span._ddSpan) {
|
|
76
|
+
const ddSpan = span._ddSpan
|
|
77
|
+
const parentStore = storage('legacy').getStore(ddSpan._store) ?? storage('legacy').getStore()
|
|
78
|
+
return storage('legacy').run({ ...parentStore, span: ddSpan }, run)
|
|
79
|
+
}
|
|
78
80
|
return run()
|
|
79
81
|
}
|
|
80
82
|
|
|
@@ -33,7 +33,7 @@ const OtlpHttpLogExporter = require('./otlp_http_log_exporter')
|
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Initializes OpenTelemetry Logs support
|
|
36
|
-
* @param {
|
|
36
|
+
* @param {import('../../config/config-base')} config - Tracer configuration instance
|
|
37
37
|
*/
|
|
38
38
|
function initializeOpenTelemetryLogs (config) {
|
|
39
39
|
// Build resource attributes
|
|
@@ -35,7 +35,7 @@ const OtlpHttpMetricExporter = require('./otlp_http_metric_exporter')
|
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Initializes OpenTelemetry Metrics support
|
|
38
|
-
* @param {
|
|
38
|
+
* @param {import('../../config/config-base')} config - Tracer configuration instance
|
|
39
39
|
*/
|
|
40
40
|
function initializeOpenTelemetryMetrics (config) {
|
|
41
41
|
const resourceAttributes = {
|
|
@@ -116,11 +116,26 @@ class OtlpHttpExporterBase {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
|
-
* Parses additional HTTP headers from a comma-separated string.
|
|
120
|
-
* @param {string} [headersString=''] - Comma-separated key=value pairs
|
|
119
|
+
* Parses additional HTTP headers from a comma-separated string or pre-parsed map.
|
|
120
|
+
* @param {string|Record<string, string>} [headersString=''] - Comma-separated key=value pairs or map
|
|
121
121
|
* @returns {Record<string, string>} Parsed headers object
|
|
122
122
|
*/
|
|
123
123
|
#parseAdditionalHeaders (headersString = '') {
|
|
124
|
+
if (headersString !== null && typeof headersString === 'object') {
|
|
125
|
+
// The config MAP parser uses tagger.add (which splits on ':'), so OTEL-format
|
|
126
|
+
// headers ('key=value') arrive with the full 'key=value' string as the map key
|
|
127
|
+
// and an empty string as the value. Re-split on '=' to get the correct pairs.
|
|
128
|
+
const result = {}
|
|
129
|
+
for (const [k, v] of Object.entries(headersString)) {
|
|
130
|
+
if (v === '' && k.includes('=')) {
|
|
131
|
+
const idx = k.indexOf('=')
|
|
132
|
+
result[k.slice(0, idx).trim()] = k.slice(idx + 1).trim()
|
|
133
|
+
} else {
|
|
134
|
+
result[k] = v
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return result
|
|
138
|
+
}
|
|
124
139
|
const headers = {}
|
|
125
140
|
let key = ''
|
|
126
141
|
let value = ''
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Protobuf Loader for OpenTelemetry Logs and Metrics
|
|
4
|
+
* Protobuf Loader for OpenTelemetry Logs, Traces, and Metrics
|
|
5
5
|
*
|
|
6
|
-
* This module loads protobuf definitions for OpenTelemetry logs and metrics.
|
|
6
|
+
* This module loads protobuf definitions for OpenTelemetry logs, traces, and metrics.
|
|
7
7
|
*
|
|
8
8
|
* VERSION SUPPORT:
|
|
9
9
|
* - OTLP Protocol: v1.7.0
|
|
@@ -20,6 +20,8 @@ const protobuf = require('../../../../../vendor/dist/protobufjs')
|
|
|
20
20
|
let _root = null
|
|
21
21
|
let protoLogsService = null
|
|
22
22
|
let protoSeverityNumber = null
|
|
23
|
+
let protoTraceService = null
|
|
24
|
+
let protoSpanKind = null
|
|
23
25
|
let protoMetricsService = null
|
|
24
26
|
let protoAggregationTemporality = null
|
|
25
27
|
|
|
@@ -28,6 +30,8 @@ function getProtobufTypes () {
|
|
|
28
30
|
return {
|
|
29
31
|
protoLogsService,
|
|
30
32
|
protoSeverityNumber,
|
|
33
|
+
protoTraceService,
|
|
34
|
+
protoSpanKind,
|
|
31
35
|
protoMetricsService,
|
|
32
36
|
protoAggregationTemporality,
|
|
33
37
|
}
|
|
@@ -39,6 +43,8 @@ function getProtobufTypes () {
|
|
|
39
43
|
'resource.proto',
|
|
40
44
|
'logs.proto',
|
|
41
45
|
'logs_service.proto',
|
|
46
|
+
'trace.proto',
|
|
47
|
+
'trace_service.proto',
|
|
42
48
|
'metrics.proto',
|
|
43
49
|
'metrics_service.proto',
|
|
44
50
|
].map(file => path.join(protoDir, file))
|
|
@@ -49,6 +55,10 @@ function getProtobufTypes () {
|
|
|
49
55
|
protoLogsService = _root.lookupType('opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest')
|
|
50
56
|
protoSeverityNumber = _root.lookupEnum('opentelemetry.proto.logs.v1.SeverityNumber')
|
|
51
57
|
|
|
58
|
+
// Get the message types for traces
|
|
59
|
+
protoTraceService = _root.lookupType('opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest')
|
|
60
|
+
protoSpanKind = _root.lookupEnum('opentelemetry.proto.trace.v1.SpanKind')
|
|
61
|
+
|
|
52
62
|
// Get the message types for metrics
|
|
53
63
|
protoMetricsService = _root.lookupType('opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest')
|
|
54
64
|
protoAggregationTemporality = _root.lookupEnum('opentelemetry.proto.metrics.v1.AggregationTemporality')
|
|
@@ -56,6 +66,8 @@ function getProtobufTypes () {
|
|
|
56
66
|
return {
|
|
57
67
|
protoLogsService,
|
|
58
68
|
protoSeverityNumber,
|
|
69
|
+
protoTraceService,
|
|
70
|
+
protoSpanKind,
|
|
59
71
|
protoMetricsService,
|
|
60
72
|
protoAggregationTemporality,
|
|
61
73
|
}
|