Skip to content

Commit b370404

Browse files
authored
added supoort for metrics MDS (#1876)
* added supoort for metrics MDS Signed-off-by: sumukhswamy <[email protected]> * removed console logs added a few changes for the router Signed-off-by: sumukhswamy <[email protected]> * added changes for metrics with promql as datasource Signed-off-by: sumukhswamy <[email protected]> * updated tests Signed-off-by: sumukhswamy <[email protected]> --------- Signed-off-by: sumukhswamy <[email protected]>
1 parent becfa02 commit b370404

File tree

16 files changed

+412
-175
lines changed

16 files changed

+412
-175
lines changed

public/components/custom_panels/helpers/utils.tsx

+32-13
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import min from 'lodash/min';
1313
import { Moment } from 'moment-timezone';
1414
import React from 'react';
1515
import { Layout } from 'react-grid-layout';
16+
import { INDEX_DOCUMENT_NAME_PATTERN } from '../../../../common/constants/metrics';
1617
import {
1718
OBSERVABILITY_BASE,
1819
OTEL_METRIC_SUBTYPE,
@@ -27,16 +28,15 @@ import {
2728
VizContainerError,
2829
} from '../../../../common/types/custom_panels';
2930
import { SavedVisualization } from '../../../../common/types/explorer';
30-
import { removeBacktick, getOSDHttp } from '../../../../common/utils';
31+
import { MetricType } from '../../../../common/types/metrics';
32+
import { getOSDHttp, removeBacktick } from '../../../../common/utils';
3133
import { getVizContainerProps } from '../../../components/visualizations/charts/helpers';
3234
import PPLService from '../../../services/requests/ppl';
3335
import { SavedObjectsActions } from '../../../services/saved_objects/saved_object_client/saved_objects_actions';
3436
import { ObservabilitySavedVisualization } from '../../../services/saved_objects/saved_object_client/types';
37+
import { convertDateTime, updateCatalogVisualizationQuery } from '../../common/query_utils';
3538
import { getDefaultVisConfig } from '../../event_analytics/utils';
3639
import { Visualization } from '../../visualizations/visualization';
37-
import { MetricType } from '../../../../common/types/metrics';
38-
import { convertDateTime, updateCatalogVisualizationQuery } from '../../common/query_utils';
39-
import { INDEX_DOCUMENT_NAME_PATTERN } from '../../../../common/constants/metrics';
4040

4141
/*
4242
* "Utils" This file contains different reused functions in operational panels
@@ -173,13 +173,14 @@ export const getQueryResponse = async (
173173
endTime: string,
174174
filterQuery = '',
175175
timestampField = 'timestamp',
176-
metricVisualization = false
176+
metricVisualization = false,
177+
dataSourceMDSId?: string
177178
) => {
178179
const finalQuery = metricVisualization
179180
? query
180181
: queryAccumulator(query, timestampField, startTime, endTime, filterQuery);
181182

182-
const res = await pplService.fetch({ query: finalQuery, format: 'jdbc' });
183+
const res = await pplService.fetch({ query: finalQuery, format: 'jdbc' }, dataSourceMDSId);
183184

184185
if (res === undefined) throw new Error('Please check the validity of PPL Filter');
185186

@@ -201,6 +202,7 @@ export const renderSavedVisualization = async ({
201202
setIsLoading,
202203
setIsError,
203204
visualization,
205+
dataSourceMDSId,
204206
}: {
205207
pplService: PPLService;
206208
startTime: string;
@@ -215,6 +217,7 @@ export const renderSavedVisualization = async ({
215217
setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
216218
setIsError: React.Dispatch<React.SetStateAction<VizContainerError>>;
217219
visualization: SavedVisualizationType;
220+
dataSourceMDSId?: string;
218221
}) => {
219222
setIsLoading(true);
220223
setIsError({} as VizContainerError);
@@ -247,7 +250,9 @@ export const renderSavedVisualization = async ({
247250
startTime,
248251
endTime,
249252
filterQuery,
250-
visualization.timeField
253+
visualization.timeField,
254+
false,
255+
dataSourceMDSId
251256
);
252257
setVisualizationData(queryData);
253258
} catch (error) {
@@ -327,6 +332,7 @@ export const renderCatalogVisualization = async ({
327332
setIsLoading,
328333
setIsError,
329334
visualization,
335+
dataSourceMDSId,
330336
}: {
331337
pplService: PPLService;
332338
catalogSource: string;
@@ -343,6 +349,7 @@ export const renderCatalogVisualization = async ({
343349
setIsError: React.Dispatch<React.SetStateAction<VizContainerError>>;
344350
queryMetaData?: MetricType;
345351
visualization: SavedVisualizationType;
352+
dataSourceMDSId?: string;
346353
}) => {
347354
setIsLoading(true);
348355
setIsError({} as VizContainerError);
@@ -370,7 +377,8 @@ export const renderCatalogVisualization = async ({
370377
endTime,
371378
filterQuery,
372379
visualizationTimeField,
373-
true
380+
true,
381+
dataSourceMDSId
374382
);
375383
setVisualizationData(queryData);
376384

@@ -429,7 +437,8 @@ export const fetchAggregatedBinCount = async (
429437
documentName: string,
430438
selectedOtelIndex: string,
431439
setIsError: React.Dispatch<React.SetStateAction<VizContainerError>>,
432-
setIsLoading: React.Dispatch<React.SetStateAction<boolean>>
440+
setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,
441+
dataSourceMDSId: string
433442
) => {
434443
const http = getOSDHttp();
435444
try {
@@ -441,6 +450,7 @@ export const fetchAggregatedBinCount = async (
441450
endTime,
442451
documentName,
443452
index: selectedOtelIndex,
453+
dataSourceMDSId,
444454
}),
445455
});
446456
return response;
@@ -456,11 +466,17 @@ export const fetchAggregatedBinCount = async (
456466
}
457467
};
458468

459-
export const fetchSampleOTDocument = async (selectedOtelIndex: string, documentName: string) => {
469+
export const fetchSampleOTDocument = async (
470+
selectedOtelIndex: string,
471+
documentName: string,
472+
dataSourceMDSId: string
473+
) => {
460474
const http = getOSDHttp();
461475
try {
462476
const response = await http.get(
463-
`${OBSERVABILITY_BASE}/metrics/otel/${selectedOtelIndex}/${documentName}`
477+
`${OBSERVABILITY_BASE}/metrics/otel/${selectedOtelIndex}/${documentName}/${
478+
dataSourceMDSId ?? ''
479+
}`
464480
);
465481
return response;
466482
} catch (error) {
@@ -492,6 +508,7 @@ export const renderOpenTelemetryVisualization = async ({
492508
setIsError,
493509
visualization,
494510
setToast,
511+
dataSourceMDSId,
495512
}: {
496513
startTime: string;
497514
endTime: string;
@@ -508,6 +525,7 @@ export const renderOpenTelemetryVisualization = async ({
508525
text?: React.ReactChild | undefined,
509526
side?: string | undefined
510527
) => void;
528+
dataSourceMDSId?: string;
511529
}) => {
512530
setIsLoading(true);
513531
setIsError({} as VizContainerError);
@@ -524,7 +542,7 @@ export const renderOpenTelemetryVisualization = async ({
524542
setToast('Document name is undefined', 'danger', undefined, 'right');
525543
}
526544

527-
const fetchSampleDocument = await fetchSampleOTDocument(index, documentName);
545+
const fetchSampleDocument = await fetchSampleOTDocument(index, documentName, dataSourceMDSId);
528546
const source = fetchSampleDocument.hits[0]._source;
529547

530548
setVisualizationType(visualizationType);
@@ -542,7 +560,8 @@ export const renderOpenTelemetryVisualization = async ({
542560
documentName,
543561
index,
544562
setIsError,
545-
setIsLoading
563+
setIsLoading,
564+
dataSourceMDSId
546565
);
547566

548567
return {

public/components/custom_panels/panel_modules/visualization_container/visualization_container.tsx

+16-11
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,26 @@ import {
2424
EuiText,
2525
EuiToolTip,
2626
} from '@elastic/eui';
27-
import React, { useEffect, useMemo, useState } from 'react';
2827
import isEmpty from 'lodash/isEmpty';
28+
import React, { useEffect, useMemo, useState } from 'react';
2929
import { useSelector } from 'react-redux';
30+
import {
31+
OTEL_METRIC_SUBTYPE,
32+
PROMQL_METRIC_SUBTYPE,
33+
observabilityMetricsID,
34+
} from '../../../../../common/constants/shared';
35+
import { VizContainerError } from '../../../../../common/types/custom_panels';
36+
import { coreRefs } from '../../../../framework/core_refs';
37+
import { useToast } from '../../../common/toast';
38+
import { metricQuerySelector } from '../../../metrics/redux/slices/metrics_slice';
3039
import {
3140
displayVisualization,
3241
fetchVisualizationById,
3342
renderCatalogVisualization,
34-
renderSavedVisualization,
3543
renderOpenTelemetryVisualization,
44+
renderSavedVisualization,
3645
} from '../../helpers/utils';
3746
import './visualization_container.scss';
38-
import { VizContainerError } from '../../../../../common/types/custom_panels';
39-
import { metricQuerySelector } from '../../../metrics/redux/slices/metrics_slice';
40-
import { coreRefs } from '../../../../framework/core_refs';
41-
import {
42-
PROMQL_METRIC_SUBTYPE,
43-
observabilityMetricsID,
44-
OTEL_METRIC_SUBTYPE,
45-
} from '../../../../../common/constants/shared';
46-
import { useToast } from '../../../common/toast';
4747

4848
/*
4949
* Visualization container - This module is a placeholder to add visualizations in react-grid-layout
@@ -85,6 +85,7 @@ interface Props {
8585
catalogVisualization?: boolean;
8686
inlineEditor?: JSX.Element;
8787
actionMenuType?: string;
88+
dataSourceMDSId?: string;
8889
}
8990

9091
export const VisualizationContainer = ({
@@ -106,6 +107,7 @@ export const VisualizationContainer = ({
106107
catalogVisualization,
107108
inlineEditor,
108109
actionMenuType,
110+
dataSourceMDSId,
109111
}: Props) => {
110112
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
111113
const [visualizationTitle, setVisualizationTitle] = useState('');
@@ -263,6 +265,7 @@ export const VisualizationContainer = ({
263265
setIsLoading,
264266
setIsError,
265267
setToast,
268+
dataSourceMDSId,
266269
});
267270
else if (visualization.metricType === PROMQL_METRIC_SUBTYPE)
268271
renderCatalogVisualization({
@@ -281,6 +284,7 @@ export const VisualizationContainer = ({
281284
setIsLoading,
282285
setIsError,
283286
queryMetaData,
287+
dataSourceMDSId,
284288
});
285289
else
286290
await renderSavedVisualization({
@@ -299,6 +303,7 @@ export const VisualizationContainer = ({
299303
setVisualizationMetaData,
300304
setIsLoading,
301305
setIsError,
306+
dataSourceMDSId,
302307
});
303308
};
304309

public/components/metrics/helpers/utils.tsx

+9-5
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import { Layout } from 'react-grid-layout';
1010
import { VISUALIZATION } from '../../../../common/constants/metrics';
1111
import {
1212
OTEL_METRIC_SUBTYPE,
13-
PROMQL_METRIC_SUBTYPE,
1413
PPL_METRIC_SUBTYPE,
14+
PROMQL_METRIC_SUBTYPE,
1515
} from '../../../../common/constants/shared';
16-
import PPLService from '../../../services/requests/ppl';
17-
import { MetricType } from '../../../../common/types/metrics';
1816
import { VisualizationType } from '../../../../common/types/custom_panels';
17+
import { MetricType } from '../../../../common/types/metrics';
18+
import PPLService from '../../../services/requests/ppl';
1919

2020
export const onTimeChange = (
2121
start: ShortDate,
@@ -36,9 +36,13 @@ export const onTimeChange = (
3636
};
3737

3838
// PPL Service requestor
39-
export const pplServiceRequestor = (pplService: PPLService, finalQuery: string) => {
39+
export const pplServiceRequestor = (
40+
pplService: PPLService,
41+
finalQuery: string,
42+
dataSourceMDSId?: string
43+
) => {
4044
return pplService
41-
.fetch({ query: finalQuery, format: VISUALIZATION })
45+
.fetch({ query: finalQuery, format: VISUALIZATION }, dataSourceMDSId)
4246
.then((res) => {
4347
return res;
4448
})

0 commit comments

Comments
 (0)