Skip to content

Commit 5875fec

Browse files
WIP: add baggage telemetry (#6187)
1 parent a7d6109 commit 5875fec

File tree

1 file changed

+25
-2
lines changed
  • packages/dd-trace/src/opentracing/propagation

1 file changed

+25
-2
lines changed

packages/dd-trace/src/opentracing/propagation/text_map.js

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ const TraceState = require('./tracestate')
88
const tags = require('../../../../../ext/tags')
99
const { channel } = require('dc-polyfill')
1010
const { setBaggageItem, getAllBaggageItems, removeAllBaggageItems } = require('../../baggage')
11+
const telemetryMetrics = require('../../telemetry/metrics')
1112

1213
const { AUTO_KEEP, AUTO_REJECT, USER_KEEP } = require('../../../../../ext/priority')
1314

15+
const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
16+
1417
const injectCh = channel('dd-trace:span:inject')
1518
const extractCh = channel('dd-trace:span:extract')
1619

@@ -142,12 +145,27 @@ class TextMapPropagator {
142145
const item = `${this._encodeOtelBaggageKey(String(key).trim())}=${encodeURIComponent(String(value).trim())},`
143146
itemCounter += 1
144147
byteCounter += Buffer.byteLength(item)
145-
if (itemCounter > this._config.baggageMaxItems || byteCounter > this._config.baggageMaxBytes) break
148+
149+
// Check for item count limit exceeded
150+
if (itemCounter > this._config.baggageMaxItems) {
151+
tracerMetrics.count('context_header_style.truncated', ['truncation_reason:baggage_item_count_exceeded']).inc()
152+
break
153+
}
154+
155+
// Check for byte count limit exceeded
156+
if (byteCounter > this._config.baggageMaxBytes) {
157+
tracerMetrics.count('context_header_style.truncated', ['truncation_reason:baggage_byte_count_exceeded']).inc()
158+
break
159+
}
160+
146161
baggage += item
147162
}
148163

149164
baggage = baggage.slice(0, -1)
150-
if (baggage) carrier.baggage = baggage
165+
if (baggage) {
166+
carrier.baggage = baggage
167+
tracerMetrics.count('context_header_style.injected', ['header_style:baggage']).inc()
168+
}
151169
}
152170
}
153171

@@ -635,13 +653,15 @@ class TextMapPropagator {
635653
: new Set(this._config.baggageTagKeys.split(','))
636654
for (const keyValue of baggages) {
637655
if (!keyValue.includes('=')) {
656+
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
638657
removeAllBaggageItems()
639658
return
640659
}
641660
let [key, value] = keyValue.split('=')
642661
key = this._decodeOtelBaggageKey(key.trim())
643662
value = decodeURIComponent(value.trim())
644663
if (!key || !value) {
664+
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
645665
removeAllBaggageItems()
646666
return
647667
}
@@ -650,6 +670,9 @@ class TextMapPropagator {
650670
}
651671
setBaggageItem(key, value)
652672
}
673+
674+
// Successfully extracted baggage
675+
tracerMetrics.count('context_header_style.extracted', ['header_style:baggage']).inc()
653676
}
654677

655678
_extractSamplingPriority (carrier, spanContext) {

0 commit comments

Comments
 (0)