Skip to content

Commit 590ba8e

Browse files
authored
otel: add support for scope metrics (#7063)
1 parent b95a717 commit 590ba8e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

packages/dd-trace/src/opentelemetry/metrics/meter_provider.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ class MeterProvider {
3939
* @param {MeterOptions} [options] - Additional options
4040
* @returns {Meter} Meter instance
4141
*/
42-
getMeter (name, version = '', { schemaUrl = '' } = {}) {
42+
getMeter (name, version = '', { schemaUrl = '', attributes = {} } = {}) {
4343
const normalizedName = name.toLowerCase()
4444
const key = `${normalizedName}@${version}@${schemaUrl}`
4545
let meter = this.#meters.get(key)
4646
if (!meter) {
47-
meter = new Meter(this, { name: normalizedName, version, schemaUrl })
47+
meter = new Meter(this, { name: normalizedName, version, schemaUrl, attributes })
4848
this.#meters.set(key, meter)
4949
}
5050
return meter

packages/dd-trace/test/opentelemetry/metrics.spec.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,26 @@ describe('OpenTelemetry Meter Provider', () => {
633633

634634
setTimeout(() => { validator(); done() }, 150)
635635
})
636+
637+
it('includes attributes in instrumentation scope', (done) => {
638+
const validator = mockOtlpExport((decoded) => {
639+
const scopeMetrics = decoded.resourceMetrics[0].scopeMetrics[0]
640+
assert.strictEqual(scopeMetrics.metrics.length, 2)
641+
const scopeAttributes = scopeMetrics.scope.attributes
642+
assert.strictEqual(scopeAttributes.length, 2)
643+
const usernameAttr = scopeAttributes.find(a => a.key === 'username')
644+
const idAttr = scopeAttributes.find(a => a.key === 'id')
645+
assert.strictEqual(usernameAttr?.value.stringValue, 'test')
646+
assert.strictEqual(idAttr?.value.intValue, 23)
647+
})
648+
649+
setupTracer()
650+
const meter = metrics.getMeter('app', '', { attributes: { username: 'test', id: 23 } })
651+
meter.createCounter('num.monkies').add(1)
652+
meter.createCounter('num.baboons').add(2)
653+
654+
setTimeout(() => { validator(); done() }, 150)
655+
})
636656
})
637657

638658
describe('Unimplemented Features', () => {

0 commit comments

Comments
 (0)