diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts b/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts index 0d68c1d9de31c..ac3e4154b6683 100644 --- a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts +++ b/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts @@ -25,7 +25,6 @@ export enum SYNTHETICS_API_URLS { SYNTHETICS_OVERVIEW = '/internal/synthetics/overview', PINGS = '/internal/synthetics/pings', - PING_STATUSES = '/internal/synthetics/ping_statuses', MONITOR_STATUS_HEATMAP = '/internal/synthetics/ping_heatmap', OVERVIEW_TRENDS = '/internal/synthetics/overview_trends', OVERVIEW_STATUS = `/internal/synthetics/overview_status`, diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts b/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts index e97088fd793ae..cf06fb899c948 100644 --- a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts +++ b/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts @@ -255,24 +255,6 @@ export const PingStateType = t.type({ export type Ping = t.TypeOf; export type PingState = t.TypeOf; -export const PingStatusType = t.intersection([ - t.type({ - timestamp: t.string, - docId: t.string, - config_id: t.string, - locationId: t.string, - summary: t.partial({ - down: t.number, - up: t.number, - }), - }), - t.partial({ - error: PingErrorType, - }), -]); - -export type PingStatus = t.TypeOf; - export const PingsResponseType = t.type({ total: t.number, pings: t.array(PingType), @@ -280,15 +262,6 @@ export const PingsResponseType = t.type({ export type PingsResponse = t.TypeOf; -export const PingStatusesResponseType = t.type({ - total: t.number, - pings: t.array(PingStatusType), - from: t.string, - to: t.string, -}); - -export type PingStatusesResponse = t.TypeOf; - export const GetPingsParamsType = t.intersection([ t.type({ dateRange: DateRangeType, diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts index ef319d13740b2..079a68d4444a8 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts @@ -17,7 +17,6 @@ export * from './monitor_list'; export * from './monitor_details'; export * from './overview'; export * from './browser_journey'; -export * from './ping_status'; export * from './private_locations'; export type { UpsertMonitorResponse } from './monitor_management/api'; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/actions.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/actions.ts deleted file mode 100644 index f268a5a2c5600..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/actions.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PingStatusesResponse } from '../../../../../common/runtime_types'; -import { createAsyncAction } from '../utils/actions'; - -import { PingStatusActionArgs } from './models'; - -export const getMonitorPingStatusesAction = createAsyncAction< - PingStatusActionArgs, - PingStatusesResponse ->('[PING STATUSES] GET PING STATUSES'); diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/api.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/api.ts deleted file mode 100644 index 38930dfb02cb8..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/api.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SYNTHETICS_API_URLS } from '../../../../../common/constants'; -import { - PingStatusesResponse, - PingStatusesResponseType, -} from '../../../../../common/runtime_types'; -import { apiService } from '../../../../utils/api_service'; - -export const fetchMonitorPingStatuses = async ({ - monitorId, - locationId, - from, - to, - size, -}: { - monitorId: string; - locationId: string; - from: string; - to: string; - size: number; -}): Promise => { - const locations = JSON.stringify([locationId]); - const sort = 'desc'; - - return await apiService.get( - SYNTHETICS_API_URLS.PING_STATUSES, - { monitorId, from, to, locations, sort, size }, - PingStatusesResponseType - ); -}; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/effects.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/effects.ts deleted file mode 100644 index cffae2fb859f5..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/effects.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { takeEvery } from 'redux-saga/effects'; -import { fetchEffectFactory } from '../utils/fetch_effect'; -import { fetchMonitorPingStatuses } from './api'; - -import { getMonitorPingStatusesAction } from './actions'; - -export function* fetchPingStatusesEffect() { - yield takeEvery( - getMonitorPingStatusesAction.get, - fetchEffectFactory( - fetchMonitorPingStatuses, - getMonitorPingStatusesAction.success, - getMonitorPingStatusesAction.fail - ) as ReturnType - ); -} diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/index.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/index.ts deleted file mode 100644 index 350db7cb41177..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createReducer } from '@reduxjs/toolkit'; - -import { PingStatus } from '../../../../../common/runtime_types'; - -import { IHttpSerializedFetchError } from '../utils/http_error'; - -import { getMonitorPingStatusesAction } from './actions'; - -export interface PingStatusState { - pingStatuses: { - [monitorId: string]: { - [locationId: string]: { - [timestamp: string]: PingStatus; - }; - }; - }; - loading: boolean; - error: IHttpSerializedFetchError | null; -} - -const initialState: PingStatusState = { - pingStatuses: {}, - loading: false, - error: null, -}; - -export const pingStatusReducer = createReducer(initialState, (builder) => { - builder - .addCase(getMonitorPingStatusesAction.get, (state) => { - state.loading = true; - }) - .addCase(getMonitorPingStatusesAction.success, (state, action) => { - (action.payload.pings ?? []).forEach((ping) => { - // eslint-disable-next-line @typescript-eslint/naming-convention - const { config_id, locationId, timestamp } = ping; - if (!state.pingStatuses[config_id]) { - state.pingStatuses[config_id] = {}; - } - - if (!state.pingStatuses[config_id][locationId]) { - state.pingStatuses[config_id][locationId] = {}; - } - - state.pingStatuses[config_id][locationId][timestamp] = ping; - }); - - state.loading = false; - }) - .addCase(getMonitorPingStatusesAction.fail, (state, action) => { - state.error = action.payload; - state.loading = false; - }); -}); - -export * from './actions'; -export * from './effects'; -export * from './selectors'; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/models.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/models.ts deleted file mode 100644 index bae8ae9acb3fa..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/models.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export interface PingStatusActionArgs { - monitorId: string; - locationId: string; - from: string | number; - to: string | number; - size: number; -} diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/selectors.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/selectors.ts deleted file mode 100644 index cf3061e0fab33..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ping_status/selectors.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createSelector } from 'reselect'; - -import { PingStatus } from '../../../../../common/runtime_types'; -import { SyntheticsAppState } from '../root_reducer'; - -import { PingStatusState } from '.'; - -type PingSelectorReturnType = (state: SyntheticsAppState) => PingStatus[]; - -const getState = (appState: SyntheticsAppState) => appState.pingStatus; - -export const selectIsMonitorStatusesLoading = createSelector(getState, (state) => state.loading); - -export const selectPingStatusesForMonitorAndLocationAsc = ( - monitorId: string, - locationId: string -): PingSelectorReturnType => - createSelector([(state: SyntheticsAppState) => state.pingStatus], (state: PingStatusState) => { - return Object.values(state?.pingStatuses?.[monitorId]?.[locationId] ?? {}).sort( - (a, b) => Number(new Date(a.timestamp)) - Number(new Date(b.timestamp)) - ); - }); diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts index e2524a2c3bacd..80a3144aef511 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts @@ -40,7 +40,6 @@ import { } from './overview'; import { fetchServiceLocationsEffect } from './service_locations'; import { browserJourneyEffects, fetchJourneyStepsEffect } from './browser_journey'; -import { fetchPingStatusesEffect } from './ping_status'; import { fetchOverviewStatusEffect } from './overview_status'; import { fetchMonitorStatusHeatmap, quietFetchMonitorStatusHeatmap } from './status_heatmap'; @@ -56,7 +55,6 @@ export const rootEffect = function* root(): Generator { fork(browserJourneyEffects), fork(fetchOverviewStatusEffect), fork(fetchNetworkEventsEffect), - fork(fetchPingStatusesEffect), fork(fetchAgentPoliciesEffect), fork(fetchPrivateLocationsEffect), fork(fetchDynamicSettingsEffect), diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts index 000e7b2225dec..f8ace41e93191 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts @@ -30,13 +30,11 @@ import { monitorListReducer, MonitorListState } from './monitor_list'; import { serviceLocationsReducer, ServiceLocationsState } from './service_locations'; import { monitorOverviewReducer, MonitorOverviewState } from './overview'; import { BrowserJourneyState } from './browser_journey/models'; -import { pingStatusReducer, PingStatusState } from './ping_status'; import { monitorStatusHeatmapReducer, MonitorStatusHeatmap } from './status_heatmap'; export interface SyntheticsAppState { ui: UiState; settings: SettingsState; - pingStatus: PingStatusState; elasticsearch: QueriesState; monitorList: MonitorListState; overview: MonitorOverviewState; @@ -59,7 +57,6 @@ export interface SyntheticsAppState { export const rootReducer = combineReducers({ ui: uiReducer, settings: settingsReducer, - pingStatus: pingStatusReducer, monitorList: monitorListReducer, overview: monitorOverviewReducer, globalParams: globalParamsReducer, diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts index 615ac873cf719..b861fe36b9b96 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts @@ -119,7 +119,6 @@ export const mockState: SyntheticsAppState = { monitorDetails: getMonitorDetailsMockSlice(), browserJourney: getBrowserJourneyMockSlice(), networkEvents: {}, - pingStatus: getPingStatusesMockSlice(), agentPolicies: { loading: false, error: null, @@ -496,33 +495,3 @@ function getMonitorDetailsMockSlice() { selectedLocationId: 'us_central', } as MonitorDetailsState; } - -function getPingStatusesMockSlice() { - const monitorDetails = getMonitorDetailsMockSlice(); - - return { - pingStatuses: monitorDetails.pings.data.reduce((acc, cur) => { - const geoName = cur.observer.geo?.name!; - if (!acc[cur.monitor.id]) { - acc[cur.monitor.id] = {}; - } - - if (!acc[cur.monitor.id][geoName]) { - acc[cur.monitor.id][geoName] = {}; - } - - acc[cur.monitor.id][geoName][cur.timestamp] = { - timestamp: cur.timestamp, - error: undefined, - locationId: geoName, - config_id: cur.config_id!, - docId: cur.docId, - summary: cur.summary!, - }; - - return acc; - }, {} as SyntheticsAppState['pingStatus']['pingStatuses']), - loading: false, - error: null, - } as SyntheticsAppState['pingStatus']; -} diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/index.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/index.ts index f3711da19e120..8e62964c2d833 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/index.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/routes/index.ts @@ -46,11 +46,7 @@ import { installIndexTemplatesRoute } from './synthetics_service/install_index_t import { editSyntheticsMonitorRoute } from './monitor_cruds/edit_monitor'; import { addSyntheticsMonitorRoute } from './monitor_cruds/add_monitor'; import { addSyntheticsProjectMonitorRoute } from './monitor_cruds/add_monitor_project'; -import { - syntheticsGetPingsRoute, - syntheticsGetPingStatusesRoute, - syntheticsGetPingHeatmapRoute, -} from './pings'; +import { syntheticsGetPingsRoute, syntheticsGetPingHeatmapRoute } from './pings'; import { createGetCurrentStatusRoute } from './overview_status/overview_status'; import { getHasIntegrationMonitorsRoute } from './fleet/get_has_integration_monitors'; import { enableDefaultAlertingRoute } from './default_alerts/enable_default_alert'; @@ -81,7 +77,6 @@ export const syntheticsAppRestApiRoutes: SyntheticsRestApiRouteFactory[] = [ getServiceAllowedRoute, getAPIKeySyntheticsRoute, syntheticsGetPingsRoute, - syntheticsGetPingStatusesRoute, getHasIntegrationMonitorsRoute, createGetCurrentStatusRoute, getIndexSizesRoute, diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_ping_statuses.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_ping_statuses.ts deleted file mode 100644 index ffb10e5a931ef..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_ping_statuses.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SyntheticsRestApiRouteFactory } from '../types'; -import { SYNTHETICS_API_URLS } from '../../../common/constants'; -import { PingError, PingStatus } from '../../../common/runtime_types'; -import { queryPings } from '../../common/pings/query_pings'; - -import { getPingsRouteQuerySchema } from './get_pings'; - -export const syntheticsGetPingStatusesRoute: SyntheticsRestApiRouteFactory = () => ({ - method: 'GET', - path: SYNTHETICS_API_URLS.PING_STATUSES, - validate: { - query: getPingsRouteQuerySchema, - }, - handler: async ({ syntheticsEsClient, request, response }): Promise => { - const { - from, - to, - index, - monitorId, - status, - sort, - size, - pageIndex, - locations, - excludedLocations, - } = request.query; - - const result = await queryPings({ - syntheticsEsClient, - dateRange: { from, to }, - index, - monitorId, - status, - sort, - size, - pageIndex, - locations: locations ? JSON.parse(locations) : [], - excludedLocations, - fields: ['@timestamp', 'config_id', 'summary.*', 'error.*', 'observer.geo.name'], - fieldsExtractorFn: extractPingStatus, - }); - - return { - ...result, - from, - to, - }; - }, -}); - -function grabPingError(doc: any): PingError | undefined { - const docContainsError = Object.keys(doc?.fields ?? {}).some((key) => key.startsWith('error.')); - if (!docContainsError) { - return undefined; - } - - return { - code: doc.fields['error.code']?.[0], - id: doc.fields['error.id']?.[0], - stack_trace: doc.fields['error.stack_trace']?.[0], - type: doc.fields['error.type']?.[0], - message: doc.fields['error.message']?.[0], - }; -} - -function extractPingStatus(doc: any) { - return { - timestamp: doc.fields['@timestamp']?.[0], - docId: doc._id, - config_id: doc.fields.config_id?.[0], - locationId: doc.fields['observer.geo.name']?.[0], - summary: { up: doc.fields['summary.up']?.[0], down: doc.fields['summary.down']?.[0] }, - error: grabPingError(doc), - } as PingStatus; -} diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts index 8402fa99ef642..b18a1dcc3a7b8 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts @@ -6,5 +6,4 @@ */ export { syntheticsGetPingsRoute } from './get_pings'; -export { syntheticsGetPingStatusesRoute } from './get_ping_statuses'; export { syntheticsGetPingHeatmapRoute } from './ping_heatmap';