Skip to content

Commit b1bcf5a

Browse files
[Discover][Metrics] Telemetry for Metrics with multiple units (elastic#269484)
Supports [elastic#5507](elastic/observability-dev#5507) ## Summary This PR adds `multi_value_counts.units` to the `discover_metrics_info` EBT payload so we can measure how often a METRICS_INFO row has more than one unit (mixed units/rollovers), matching the existing `data_streams`/`field_types`/`metric_types` counters. ### Changes - Extended `MetricsTelemetry.multi_value_counts` with `units`. - Increment `units` in `accumulate_metrics_row_telemetry` when `units.length > 1`. - Initialize `units: 0` in `createInitialMetricsTelemetry`. - Register `multi_value_counts.units` in the discover_metrics_info EBT schema. - Updated unit tests and api_docs. --------- Co-authored-by: Lucas Francisco López <lucaslopezf@gmail.com>
1 parent cee796c commit b1bcf5a

8 files changed

Lines changed: 75 additions & 22 deletions

File tree

api_docs/kbn_unified_chart_section_viewer.devdocs.json

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@
1212
"description": [],
1313
"signature": [
1414
"(analytics?: ",
15-
"AnalyticsServiceStart",
15+
{
16+
"pluginId": "@kbn/core",
17+
"scope": "common",
18+
"docId": "kibKbnCorePluginApi",
19+
"section": "def-common.AnalyticsServiceStart",
20+
"text": "AnalyticsServiceStart"
21+
},
1622
" | undefined) => ",
1723
{
1824
"pluginId": "@kbn/unified-chart-section-viewer",
@@ -36,7 +42,13 @@
3642
"label": "analytics",
3743
"description": [],
3844
"signature": [
39-
"AnalyticsServiceStart",
45+
{
46+
"pluginId": "@kbn/core",
47+
"scope": "common",
48+
"docId": "kibKbnCorePluginApi",
49+
"section": "def-common.AnalyticsServiceStart",
50+
"text": "AnalyticsServiceStart"
51+
},
4052
" | undefined"
4153
],
4254
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/analytics/report_unified_chart_section_viewer_data_summary.ts",
@@ -415,7 +427,7 @@
415427
}
416428
],
417429
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
418-
"lineNumber": 102,
430+
"lineNumber": 103,
419431
"columnNumber": 1,
420432
"deprecated": false,
421433
"trackAdoption": false,
@@ -428,7 +440,7 @@
428440
"label": "loading",
429441
"description": [],
430442
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
431-
"lineNumber": 103,
443+
"lineNumber": 104,
432444
"columnNumber": 3,
433445
"deprecated": false,
434446
"trackAdoption": false
@@ -444,7 +456,7 @@
444456
"Error | null"
445457
],
446458
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
447-
"lineNumber": 104,
459+
"lineNumber": 105,
448460
"columnNumber": 3,
449461
"deprecated": false,
450462
"trackAdoption": false
@@ -467,7 +479,7 @@
467479
"[]"
468480
],
469481
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
470-
"lineNumber": 105,
482+
"lineNumber": 106,
471483
"columnNumber": 3,
472484
"deprecated": false,
473485
"trackAdoption": false
@@ -522,7 +534,7 @@
522534
"label": "metrics_by_type",
523535
"description": [],
524536
"signature": [
525-
"{ histogram?: number | undefined; summary?: number | undefined; gauge?: number | undefined; counter?: number | undefined; position?: number | undefined; }"
537+
"{ gauge?: number | undefined; counter?: number | undefined; summary?: number | undefined; histogram?: number | undefined; position?: number | undefined; }"
526538
],
527539
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
528540
"lineNumber": 88,
@@ -538,7 +550,7 @@
538550
"label": "units",
539551
"description": [],
540552
"signature": [
541-
"{ [x: `{${string}}`]: number | undefined; count?: number | undefined; m?: number | undefined; none?: number | undefined; s?: number | undefined; percent?: number | undefined; d?: number | undefined; h?: number | undefined; ms?: number | undefined; bytes?: number | undefined; us?: number | undefined; ns?: number | undefined; }"
553+
"{ [x: `{${string}}`]: number | undefined; ns?: number | undefined; us?: number | undefined; ms?: number | undefined; s?: number | undefined; m?: number | undefined; h?: number | undefined; d?: number | undefined; percent?: number | undefined; bytes?: number | undefined; count?: number | undefined; none?: number | undefined; }"
542554
],
543555
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
544556
"lineNumber": 89,
@@ -554,7 +566,7 @@
554566
"label": "multi_value_counts",
555567
"description": [],
556568
"signature": [
557-
"{ data_streams: number; field_types: number; metric_types: number; }"
569+
"{ data_streams: number; field_types: number; metric_types: number; units: number; }"
558570
],
559571
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
560572
"lineNumber": 90,
@@ -695,7 +707,7 @@
695707
"label": "ParsedMetrics",
696708
"description": [],
697709
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
698-
"lineNumber": 97,
710+
"lineNumber": 98,
699711
"columnNumber": 1,
700712
"deprecated": false,
701713
"trackAdoption": false,
@@ -718,7 +730,7 @@
718730
"[]"
719731
],
720732
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
721-
"lineNumber": 98,
733+
"lineNumber": 99,
722734
"columnNumber": 3,
723735
"deprecated": false,
724736
"trackAdoption": false
@@ -741,7 +753,7 @@
741753
"[]"
742754
],
743755
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
744-
"lineNumber": 99,
756+
"lineNumber": 100,
745757
"columnNumber": 3,
746758
"deprecated": false,
747759
"trackAdoption": false
@@ -774,7 +786,7 @@
774786
}
775787
],
776788
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
777-
"lineNumber": 108,
789+
"lineNumber": 109,
778790
"columnNumber": 1,
779791
"deprecated": false,
780792
"trackAdoption": false,
@@ -796,7 +808,7 @@
796808
}
797809
],
798810
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
799-
"lineNumber": 109,
811+
"lineNumber": 110,
800812
"columnNumber": 3,
801813
"deprecated": false,
802814
"trackAdoption": false
@@ -887,7 +899,13 @@
887899
"text": "UnifiedMetricsGridProps"
888900
},
889901
" extends ",
890-
"ChartSectionProps"
902+
{
903+
"pluginId": "@kbn/unified-histogram",
904+
"scope": "public",
905+
"docId": "kibKbnUnifiedHistogramPluginApi",
906+
"section": "def-public.ChartSectionProps",
907+
"text": "ChartSectionProps"
908+
}
891909
],
892910
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
893911
"lineNumber": 24,
@@ -1015,7 +1033,7 @@
10151033
"label": "MetricUnit",
10161034
"description": [],
10171035
"signature": [
1018-
"\"count\" | \"m\" | \"s\" | \"percent\" | \"d\" | \"h\" | \"ms\" | \"bytes\" | \"us\" | \"ns\" | `{${string}}`"
1036+
"\"ns\" | \"us\" | \"ms\" | \"s\" | \"m\" | \"h\" | \"d\" | \"percent\" | \"bytes\" | \"count\" | `{${string}}`"
10191037
],
10201038
"path": "src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts",
10211039
"lineNumber": 51,

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/components/observability/metrics/hooks/use_fetch_metrics_data.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ const createMockParsedMetrics = (
8181
total_number_of_dimensions: dimensions.length,
8282
metrics_by_type: { gauge: metricNames.length },
8383
units: { none: metricNames.length },
84-
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0 },
84+
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0, units: 0 },
8585
},
8686
});
8787

@@ -202,7 +202,7 @@ describe('useFetchMetricsData', () => {
202202
total_number_of_dimensions: 0,
203203
metrics_by_type: {},
204204
units: {},
205-
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0 },
205+
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0, units: 0 },
206206
},
207207
});
208208

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/components/observability/metrics/telemetry/accumulate_metrics_row_telemetry.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ describe('accumulateMetricsRowTelemetry', () => {
4040
total_number_of_dimensions: 0,
4141
metrics_by_type: { gauge: 1 },
4242
units: { percent: 1 },
43-
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0 },
43+
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0, units: 0 },
4444
});
4545
});
4646

@@ -59,7 +59,7 @@ describe('accumulateMetricsRowTelemetry', () => {
5959
total_number_of_dimensions: 0,
6060
metrics_by_type: { gauge: 1 },
6161
units: { none: 2, percent: 1 },
62-
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0 },
62+
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0, units: 1 },
6363
});
6464
});
6565

@@ -85,7 +85,7 @@ describe('accumulateMetricsRowTelemetry', () => {
8585
total_number_of_dimensions: 0,
8686
metrics_by_type: { gauge: 2, counter: 1, summary: 1 },
8787
units: { percent: 2, bytes: 1 },
88-
multi_value_counts: { data_streams: 1, field_types: 1, metric_types: 1 },
88+
multi_value_counts: { data_streams: 1, field_types: 1, metric_types: 1, units: 1 },
8989
});
9090
});
9191
});

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/components/observability/metrics/telemetry/accumulate_metrics_row_telemetry.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const accumulateMetricsRowTelemetry = (telemetry: MetricsTelemetry, metri
2222
telemetry.multi_value_counts.data_streams += +(dataStreams.length > 1);
2323
telemetry.multi_value_counts.field_types += +(fieldTypes.length > 1);
2424
telemetry.multi_value_counts.metric_types += +(metricTypes.length > 1);
25+
telemetry.multi_value_counts.units += +(units.length > 1);
2526

2627
for (const type of metricTypes) {
2728
increment(telemetry.metrics_by_type, type);

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/components/observability/metrics/telemetry/metrics_ebt_events.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ export const registerMetricsEbtEvents = (analytics: AnalyticsServiceSetup) => {
5858
description: 'Count of METRICS_INFO rows where metric_type had more than one value',
5959
},
6060
},
61+
units: {
62+
type: 'integer',
63+
_meta: {
64+
description: 'Count of METRICS_INFO rows where unit had more than one value',
65+
},
66+
},
6167
},
6268
},
6369
},

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/components/observability/metrics/utils/parse_metrics_response_with_telemetry.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ describe('parseMetricsWithTelemetry', () => {
5757
data_streams: 0,
5858
field_types: 0,
5959
metric_types: 0,
60+
units: 0,
6061
},
6162
},
6263
});
@@ -95,6 +96,7 @@ describe('parseMetricsWithTelemetry', () => {
9596
data_streams: 0,
9697
field_types: 0,
9798
metric_types: 0,
99+
units: 0,
98100
},
99101
},
100102
});
@@ -141,6 +143,7 @@ describe('parseMetricsWithTelemetry', () => {
141143
data_streams: 1,
142144
field_types: 0,
143145
metric_types: 0,
146+
units: 0,
144147
},
145148
},
146149
});
@@ -179,6 +182,7 @@ describe('parseMetricsWithTelemetry', () => {
179182
data_streams: 0,
180183
field_types: 0,
181184
metric_types: 0,
185+
units: 0,
182186
},
183187
},
184188
});
@@ -217,11 +221,33 @@ describe('parseMetricsWithTelemetry', () => {
217221
data_streams: 0,
218222
field_types: 1,
219223
metric_types: 1,
224+
units: 0,
220225
},
221226
},
222227
});
223228
});
224229

230+
it('increments multi_value_counts.units when unit has more than one value', () => {
231+
const response: MetricsESQLResponse[] = [
232+
{
233+
metric_name: 'cpu.usage',
234+
data_stream: 'my-index',
235+
unit: ['bytes', 'percent'],
236+
metric_type: 'gauge',
237+
field_type: ES_FIELD_TYPES.DOUBLE,
238+
dimension_fields: ['host.name'],
239+
},
240+
];
241+
const result = parseMetricsWithTelemetry(response);
242+
expect(result.telemetry.multi_value_counts).toEqual({
243+
data_streams: 0,
244+
field_types: 0,
245+
metric_types: 0,
246+
units: 1,
247+
});
248+
expect(result.telemetry.units).toEqual({ bytes: 1, percent: 1 });
249+
});
250+
225251
it('returns allDimensions as union of all dimension_fields across rows with no duplicates', () => {
226252
const response: MetricsESQLResponse[] = [
227253
{
@@ -273,6 +299,7 @@ describe('parseMetricsWithTelemetry', () => {
273299
data_streams: 0,
274300
field_types: 0,
275301
metric_types: 0,
302+
units: 0,
276303
},
277304
});
278305
const totalNumberOfMetrics = sum(Object.values(result.telemetry.metrics_by_type));

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/components/observability/metrics/utils/parse_metrics_response_with_telemetry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const createInitialMetricsTelemetry = (): MetricsTelemetry => ({
2626
total_number_of_dimensions: 0,
2727
metrics_by_type: {},
2828
units: {},
29-
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0 },
29+
multi_value_counts: { data_streams: 0, field_types: 0, metric_types: 0, units: 0 },
3030
});
3131

3232
/**

src/platform/packages/shared/kbn-unified-chart-section-viewer/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export interface MetricsTelemetry {
9191
data_streams: number;
9292
field_types: number;
9393
metric_types: number;
94+
units: number;
9495
};
9596
}
9697

0 commit comments

Comments
 (0)