From eae388de982ca38b5be11472bc71d524e612033c Mon Sep 17 00:00:00 2001 From: Marten Schiwek Date: Mon, 25 May 2026 13:15:15 +0200 Subject: [PATCH] Export all DataPoints to console --- lib/exporter/ConsoleMetricExporter.js | 9 +++++++-- test/metrics.test.js | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/exporter/ConsoleMetricExporter.js b/lib/exporter/ConsoleMetricExporter.js index 43be4e5c..e04b8cec 100644 --- a/lib/exporter/ConsoleMetricExporter.js +++ b/lib/exporter/ConsoleMetricExporter.js @@ -73,7 +73,12 @@ class ConsoleMetricExporter extends StandardConsoleMetricExporter { for (const dp of metric.dataPoints) { const t = dp.attributes['sap.tenancy.tenant_id'] collector[t] ??= {} - collector[t][name] = collector !== other ? dp.value : dp + if (collector === other) { + collector[t][name] ??= [] + collector[t][name].push(dp) + } else { + collector[t][name] = dp.value + } } } @@ -114,7 +119,7 @@ class ConsoleMetricExporter extends StandardConsoleMetricExporter { // export other metrics for (const tenant of Object.keys(other)) { for (const [k, v] of Object.entries(other[tenant])) { - LOG.info(`${k}${tenant !== 'undefined' ? ` of tenant "${tenant}"` : ''}: ${inspect(v)}`) + LOG.info(`${k}${tenant !== 'undefined' ? ` of tenant "${tenant}"` : ''}: ${inspect(v.length === 1 ? v[0] : v)}`) } } } diff --git a/test/metrics.test.js b/test/metrics.test.js index f488bb7f..312af38e 100644 --- a/test/metrics.test.js +++ b/test/metrics.test.js @@ -22,4 +22,16 @@ describe('metrics', () => { expect(log.output).to.match(/process/i) expect(log.output).not.to.match(/network/i) }) + + test('other metrics with multiple datapoints are logged as array', async () => { + const { status } = await GET('/odata/v4/admin/Books', admin) + expect(status).to.equal(200) + + await wait(200) + + // nodejs.eventloop.time has multiple datapoints (active + idle) → logged as array + expect(log.output).to.match(/nodejs\.eventloop\.time: \[/) + // nodejs.eventloop.utilization has single datapoint → logged unwrapped (not as array) + expect(log.output).to.match(/nodejs\.eventloop\.utilization: \{/) + }) })