dd-trace 5.38.0 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-3rdparty.csv +1 -0
- package/index.d.ts +30 -21
- package/package.json +4 -2
- package/packages/datadog-instrumentations/src/apollo-server-core.js +1 -1
- package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
- package/packages/datadog-instrumentations/src/express-session.js +41 -0
- package/packages/datadog-instrumentations/src/fetch.js +27 -6
- package/packages/datadog-instrumentations/src/helpers/fetch.js +6 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
- package/packages/datadog-instrumentations/src/jest.js +16 -10
- package/packages/datadog-instrumentations/src/mocha/main.js +2 -1
- package/packages/datadog-instrumentations/src/nyc.js +2 -1
- package/packages/datadog-instrumentations/src/vitest.js +4 -2
- package/packages/datadog-plugin-amqplib/src/consumer.js +1 -1
- package/packages/datadog-plugin-amqplib/src/producer.js +1 -2
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/base.js +5 -1
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +9 -8
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +1 -4
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +1 -2
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +1 -2
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +1 -2
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +1 -1
- package/packages/datadog-plugin-kafkajs/src/consumer.js +5 -2
- package/packages/datadog-plugin-kafkajs/src/producer.js +4 -3
- package/packages/datadog-plugin-mongodb-core/src/index.js +10 -13
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +1 -1
- package/packages/datadog-plugin-rhea/src/consumer.js +1 -1
- package/packages/datadog-plugin-rhea/src/producer.js +1 -2
- package/packages/datadog-shimmer/src/shimmer.js +95 -95
- package/packages/dd-trace/src/appsec/addresses.js +1 -0
- package/packages/dd-trace/src/appsec/channels.js +1 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/iast-context.js +2 -2
- package/packages/dd-trace/src/appsec/iast/index.js +0 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +1 -2
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -5
- package/packages/dd-trace/src/appsec/index.js +23 -1
- package/packages/dd-trace/src/appsec/reporter.js +3 -8
- package/packages/dd-trace/src/appsec/rule_manager.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/set_user.js +9 -5
- package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -4
- package/packages/dd-trace/src/appsec/telemetry/common.js +24 -0
- package/packages/dd-trace/src/appsec/telemetry/index.js +126 -0
- package/packages/dd-trace/src/appsec/telemetry/rasp.js +35 -0
- package/packages/dd-trace/src/appsec/telemetry/user.js +24 -0
- package/packages/dd-trace/src/appsec/telemetry/waf.js +92 -0
- package/packages/dd-trace/src/appsec/user_tracking.js +2 -4
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +16 -4
- package/packages/dd-trace/src/config.js +31 -14
- package/packages/dd-trace/src/constants.js +1 -1
- package/packages/dd-trace/src/{data_streams.js → datastreams/checkpointer.js} +1 -1
- package/packages/dd-trace/src/{data_streams_context.js → datastreams/context.js} +2 -2
- package/packages/dd-trace/src/datastreams/index.js +104 -0
- package/packages/dd-trace/src/datastreams/manager.js +27 -0
- package/packages/dd-trace/src/datastreams/processor.js +1 -44
- package/packages/dd-trace/src/datastreams/size.js +53 -0
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +2 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +22 -15
- package/packages/dd-trace/src/dogstatsd.js +23 -4
- package/packages/dd-trace/src/exporters/agent/index.js +2 -2
- package/packages/dd-trace/src/flare/index.js +3 -0
- package/packages/dd-trace/src/noop/dogstatsd.js +6 -0
- package/packages/dd-trace/src/opentelemetry/tracer.js +45 -1
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +11 -47
- package/packages/dd-trace/src/opentracing/propagation/text_map_dsm.js +1 -1
- package/packages/dd-trace/src/opentracing/span.js +12 -2
- package/packages/dd-trace/src/payload-tagging/config/aws.json +8 -0
- package/packages/dd-trace/src/plugin_manager.js +4 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +2 -2
- package/packages/dd-trace/src/priority_sampler.js +5 -3
- package/packages/dd-trace/src/profiling/profiler.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/wall.js +15 -4
- package/packages/dd-trace/src/proxy.js +41 -22
- package/packages/dd-trace/src/{appsec/remote_config → remote_config}/capabilities.js +1 -0
- package/packages/dd-trace/src/{appsec/remote_config → remote_config}/index.js +8 -5
- package/packages/dd-trace/src/{appsec/remote_config → remote_config}/manager.js +5 -5
- package/packages/dd-trace/src/runtime_metrics/index.js +34 -0
- package/packages/dd-trace/src/{runtime_metrics.js → runtime_metrics/runtime_metrics.js} +4 -4
- package/packages/dd-trace/src/serverless.js +10 -1
- package/packages/dd-trace/src/service-naming/index.js +12 -4
- package/packages/dd-trace/src/span_processor.js +7 -4
- package/packages/dd-trace/src/span_stats.js +1 -2
- package/packages/dd-trace/src/standalone/index.js +70 -0
- package/packages/dd-trace/src/standalone/product.js +24 -0
- package/packages/dd-trace/src/standalone/tracesource.js +22 -0
- package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +47 -0
- package/packages/dd-trace/src/telemetry/index.js +16 -387
- package/packages/dd-trace/src/telemetry/telemetry.js +394 -0
- package/packages/dd-trace/src/tracer.js +7 -15
- package/packages/dd-trace/src/appsec/standalone.js +0 -130
- package/packages/dd-trace/src/appsec/telemetry.js +0 -218
- package/packages/dd-trace/src/service-naming/schemas/index.js +0 -6
- /package/packages/dd-trace/src/{appsec/remote_config → remote_config}/apply_states.js +0 -0
- /package/packages/dd-trace/src/{appsec/remote_config → remote_config}/scheduler.js +0 -0
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const telemetryMetrics = require('../telemetry/metrics')
|
|
4
|
-
|
|
5
|
-
const appsecMetrics = telemetryMetrics.manager.namespace('appsec')
|
|
6
|
-
|
|
7
|
-
const DD_TELEMETRY_WAF_RESULT_TAGS = Symbol('_dd.appsec.telemetry.waf.result.tags')
|
|
8
|
-
const DD_TELEMETRY_REQUEST_METRICS = Symbol('_dd.appsec.telemetry.request.metrics')
|
|
9
|
-
|
|
10
|
-
const tags = {
|
|
11
|
-
REQUEST_BLOCKED: 'request_blocked',
|
|
12
|
-
RULE_TRIGGERED: 'rule_triggered',
|
|
13
|
-
WAF_TIMEOUT: 'waf_timeout',
|
|
14
|
-
WAF_VERSION: 'waf_version',
|
|
15
|
-
EVENT_RULES_VERSION: 'event_rules_version'
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const metricsStoreMap = new WeakMap()
|
|
19
|
-
|
|
20
|
-
let enabled = false
|
|
21
|
-
|
|
22
|
-
function enable (telemetryConfig) {
|
|
23
|
-
enabled = telemetryConfig?.enabled && telemetryConfig.metrics
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function disable () {
|
|
27
|
-
enabled = false
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function newStore () {
|
|
31
|
-
return {
|
|
32
|
-
[DD_TELEMETRY_REQUEST_METRICS]: {
|
|
33
|
-
duration: 0,
|
|
34
|
-
durationExt: 0,
|
|
35
|
-
raspDuration: 0,
|
|
36
|
-
raspDurationExt: 0,
|
|
37
|
-
raspEvalCount: 0
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function getStore (req) {
|
|
43
|
-
let store = metricsStoreMap.get(req)
|
|
44
|
-
if (!store) {
|
|
45
|
-
store = newStore()
|
|
46
|
-
metricsStoreMap.set(req, store)
|
|
47
|
-
}
|
|
48
|
-
return store
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function getVersionsTags (wafVersion, rulesVersion) {
|
|
52
|
-
return {
|
|
53
|
-
[tags.WAF_VERSION]: wafVersion,
|
|
54
|
-
[tags.EVENT_RULES_VERSION]: rulesVersion
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function trackWafDurations (metrics, versionsTags) {
|
|
59
|
-
if (metrics.duration) {
|
|
60
|
-
appsecMetrics.distribution('waf.duration', versionsTags).track(metrics.duration)
|
|
61
|
-
}
|
|
62
|
-
if (metrics.durationExt) {
|
|
63
|
-
appsecMetrics.distribution('waf.duration_ext', versionsTags).track(metrics.durationExt)
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function getOrCreateMetricTags (store, versionsTags) {
|
|
68
|
-
let metricTags = store[DD_TELEMETRY_WAF_RESULT_TAGS]
|
|
69
|
-
if (!metricTags) {
|
|
70
|
-
metricTags = {
|
|
71
|
-
[tags.REQUEST_BLOCKED]: false,
|
|
72
|
-
[tags.RULE_TRIGGERED]: false,
|
|
73
|
-
[tags.WAF_TIMEOUT]: false,
|
|
74
|
-
|
|
75
|
-
...versionsTags
|
|
76
|
-
}
|
|
77
|
-
store[DD_TELEMETRY_WAF_RESULT_TAGS] = metricTags
|
|
78
|
-
}
|
|
79
|
-
return metricTags
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function updateRaspRequestsMetricTags (metrics, req, raspRule) {
|
|
83
|
-
if (!req) return
|
|
84
|
-
|
|
85
|
-
const store = getStore(req)
|
|
86
|
-
|
|
87
|
-
// it does not depend on whether telemetry is enabled or not
|
|
88
|
-
addRaspRequestMetrics(store, metrics)
|
|
89
|
-
|
|
90
|
-
if (!enabled) return
|
|
91
|
-
|
|
92
|
-
const tags = { rule_type: raspRule.type, waf_version: metrics.wafVersion }
|
|
93
|
-
|
|
94
|
-
if (raspRule.variant) {
|
|
95
|
-
tags.rule_variant = raspRule.variant
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
appsecMetrics.count('rasp.rule.eval', tags).inc(1)
|
|
99
|
-
|
|
100
|
-
if (metrics.wafTimeout) {
|
|
101
|
-
appsecMetrics.count('rasp.timeout', tags).inc(1)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (metrics.ruleTriggered) {
|
|
105
|
-
appsecMetrics.count('rasp.rule.match', tags).inc(1)
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function updateWafRequestsMetricTags (metrics, req) {
|
|
110
|
-
if (!req) return
|
|
111
|
-
|
|
112
|
-
const store = getStore(req)
|
|
113
|
-
|
|
114
|
-
// it does not depend on whether telemetry is enabled or not
|
|
115
|
-
addRequestMetrics(store, metrics)
|
|
116
|
-
|
|
117
|
-
if (!enabled) return
|
|
118
|
-
|
|
119
|
-
const versionsTags = getVersionsTags(metrics.wafVersion, metrics.rulesVersion)
|
|
120
|
-
|
|
121
|
-
trackWafDurations(metrics, versionsTags)
|
|
122
|
-
|
|
123
|
-
const metricTags = getOrCreateMetricTags(store, versionsTags)
|
|
124
|
-
|
|
125
|
-
const { blockTriggered, ruleTriggered, wafTimeout } = metrics
|
|
126
|
-
|
|
127
|
-
if (blockTriggered) {
|
|
128
|
-
metricTags[tags.REQUEST_BLOCKED] = blockTriggered
|
|
129
|
-
}
|
|
130
|
-
if (ruleTriggered) {
|
|
131
|
-
metricTags[tags.RULE_TRIGGERED] = ruleTriggered
|
|
132
|
-
}
|
|
133
|
-
if (wafTimeout) {
|
|
134
|
-
metricTags[tags.WAF_TIMEOUT] = wafTimeout
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return metricTags
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function incrementWafInitMetric (wafVersion, rulesVersion) {
|
|
141
|
-
if (!enabled) return
|
|
142
|
-
|
|
143
|
-
const versionsTags = getVersionsTags(wafVersion, rulesVersion)
|
|
144
|
-
|
|
145
|
-
appsecMetrics.count('waf.init', versionsTags).inc()
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function incrementWafUpdatesMetric (wafVersion, rulesVersion) {
|
|
149
|
-
if (!enabled) return
|
|
150
|
-
|
|
151
|
-
const versionsTags = getVersionsTags(wafVersion, rulesVersion)
|
|
152
|
-
|
|
153
|
-
appsecMetrics.count('waf.updates', versionsTags).inc()
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function incrementWafRequestsMetric (req) {
|
|
157
|
-
if (!req || !enabled) return
|
|
158
|
-
|
|
159
|
-
const store = getStore(req)
|
|
160
|
-
|
|
161
|
-
const metricTags = store[DD_TELEMETRY_WAF_RESULT_TAGS]
|
|
162
|
-
if (metricTags) {
|
|
163
|
-
appsecMetrics.count('waf.requests', metricTags).inc()
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
metricsStoreMap.delete(req)
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
function addRequestMetrics (store, { duration, durationExt }) {
|
|
170
|
-
store[DD_TELEMETRY_REQUEST_METRICS].duration += duration || 0
|
|
171
|
-
store[DD_TELEMETRY_REQUEST_METRICS].durationExt += durationExt || 0
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
function addRaspRequestMetrics (store, { duration, durationExt }) {
|
|
175
|
-
store[DD_TELEMETRY_REQUEST_METRICS].raspDuration += duration || 0
|
|
176
|
-
store[DD_TELEMETRY_REQUEST_METRICS].raspDurationExt += durationExt || 0
|
|
177
|
-
store[DD_TELEMETRY_REQUEST_METRICS].raspEvalCount++
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function incrementMissingUserLoginMetric (framework, eventType) {
|
|
181
|
-
if (!enabled) return
|
|
182
|
-
|
|
183
|
-
appsecMetrics.count('instrum.user_auth.missing_user_login', {
|
|
184
|
-
framework,
|
|
185
|
-
event_type: eventType
|
|
186
|
-
}).inc()
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function incrementMissingUserIdMetric (framework, eventType) {
|
|
190
|
-
if (!enabled) return
|
|
191
|
-
|
|
192
|
-
appsecMetrics.count('instrum.user_auth.missing_user_id', {
|
|
193
|
-
framework,
|
|
194
|
-
event_type: eventType
|
|
195
|
-
}).inc()
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function getRequestMetrics (req) {
|
|
199
|
-
if (req) {
|
|
200
|
-
const store = getStore(req)
|
|
201
|
-
return store?.[DD_TELEMETRY_REQUEST_METRICS]
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
module.exports = {
|
|
206
|
-
enable,
|
|
207
|
-
disable,
|
|
208
|
-
|
|
209
|
-
updateWafRequestsMetricTags,
|
|
210
|
-
updateRaspRequestsMetricTags,
|
|
211
|
-
incrementWafInitMetric,
|
|
212
|
-
incrementWafUpdatesMetric,
|
|
213
|
-
incrementWafRequestsMetric,
|
|
214
|
-
incrementMissingUserLoginMetric,
|
|
215
|
-
incrementMissingUserIdMetric,
|
|
216
|
-
|
|
217
|
-
getRequestMetrics
|
|
218
|
-
}
|
|
File without changes
|
|
File without changes
|