diff --git a/x-pack/plugins/monitoring/public/services/clusters.js b/x-pack/plugins/monitoring/public/services/clusters.js index 7f772ac1e1bcdc..d0ca1bc6bbde6b 100644 --- a/x-pack/plugins/monitoring/public/services/clusters.js +++ b/x-pack/plugins/monitoring/public/services/clusters.js @@ -69,9 +69,11 @@ export function monitoringClustersProvider($injector) { if (Legacy.shims.isCloud) { return Promise.resolve(); } - + const globalState = $injector.get('globalState'); return $http - .get('../api/monitoring/v1/elasticsearch_settings/check/internal_monitoring') + .post('../api/monitoring/v1/elasticsearch_settings/check/internal_monitoring', { + ccs: globalState.ccs, + }) .then(({ data }) => { showInternalMonitoringToast({ legacyIndices: data.legacy_indices, diff --git a/x-pack/plugins/monitoring/server/lib/ccs_utils.js b/x-pack/plugins/monitoring/server/lib/ccs_utils.js index 96910dd86a94de..649611742df2ce 100644 --- a/x-pack/plugins/monitoring/server/lib/ccs_utils.js +++ b/x-pack/plugins/monitoring/server/lib/ccs_utils.js @@ -5,7 +5,10 @@ */ import { isFunction, get } from 'lodash'; -export function appendMetricbeatIndex(config, indexPattern) { +export function appendMetricbeatIndex(config, indexPattern, bypass = false) { + if (bypass) { + return indexPattern; + } // Leverage this function to also append the dynamic metricbeat index too let mbIndex = null; // TODO: NP @@ -16,8 +19,7 @@ export function appendMetricbeatIndex(config, indexPattern) { mbIndex = get(config, 'ui.metricbeat.index'); } - const newIndexPattern = `${indexPattern},${mbIndex}`; - return newIndexPattern; + return `${indexPattern},${mbIndex}`; } /** @@ -31,7 +33,7 @@ export function appendMetricbeatIndex(config, indexPattern) { * @param {String} ccs The optional cluster-prefix to prepend. * @return {String} The index pattern with the {@code cluster} prefix appropriately prepended. */ -export function prefixIndexPattern(config, indexPattern, ccs) { +export function prefixIndexPattern(config, indexPattern, ccs, monitoringIndicesOnly = false) { let ccsEnabled = false; // TODO: NP // This function is called with both NP config and LP config @@ -42,7 +44,7 @@ export function prefixIndexPattern(config, indexPattern, ccs) { } if (!ccsEnabled || !ccs) { - return appendMetricbeatIndex(config, indexPattern); + return appendMetricbeatIndex(config, indexPattern, monitoringIndicesOnly); } const patterns = indexPattern.split(','); @@ -50,10 +52,14 @@ export function prefixIndexPattern(config, indexPattern, ccs) { // if a wildcard is used, then we also want to search the local indices if (ccs === '*') { - return appendMetricbeatIndex(config, `${prefixedPattern},${indexPattern}`); + return appendMetricbeatIndex( + config, + `${prefixedPattern},${indexPattern}`, + monitoringIndicesOnly + ); } - return appendMetricbeatIndex(config, prefixedPattern); + return appendMetricbeatIndex(config, prefixedPattern, monitoringIndicesOnly); } /** diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts index 4473d824c9e307..ef2bd8209a4692 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts @@ -4,15 +4,34 @@ * you may not use this file except in compliance with the Elastic License. */ +import { schema } from '@kbn/config-schema'; import { RequestHandlerContext } from 'kibana/server'; +import { + INDEX_PATTERN_ELASTICSEARCH, + INDEX_PATTERN_KIBANA, + INDEX_PATTERN_LOGSTASH, +} from '../../../../../../common/constants'; // @ts-ignore -import { getIndexPatterns } from '../../../../../lib/cluster/get_index_patterns'; +import { prefixIndexPattern } from '../../../../../lib/ccs_utils'; // @ts-ignore import { handleError } from '../../../../../lib/errors'; import { RouteDependencies } from '../../../../../types'; const queryBody = { size: 0, + query: { + bool: { + must: [ + { + range: { + timestamp: { + gte: 'now-12h', + }, + }, + }, + ], + }, + }, aggs: { types: { terms: { @@ -49,20 +68,31 @@ const checkLatestMonitoringIsLegacy = async (context: RequestHandlerContext, ind return counts; }; -export function internalMonitoringCheckRoute(server: unknown, npRoute: RouteDependencies) { - npRoute.router.get( +export function internalMonitoringCheckRoute( + server: { config: () => unknown }, + npRoute: RouteDependencies +) { + npRoute.router.post( { path: '/api/monitoring/v1/elasticsearch_settings/check/internal_monitoring', - validate: false, + validate: { + body: schema.object({ + ccs: schema.maybe(schema.string()), + }), + }, }, - async (context, _request, response) => { + async (context, request, response) => { try { const typeCount = { legacy_indices: 0, mb_indices: 0, }; - const { esIndexPattern, kbnIndexPattern, lsIndexPattern } = getIndexPatterns(server); + const config = server.config(); + const { ccs } = request.body; + const esIndexPattern = prefixIndexPattern(config, INDEX_PATTERN_ELASTICSEARCH, ccs, true); + const kbnIndexPattern = prefixIndexPattern(config, INDEX_PATTERN_KIBANA, ccs, true); + const lsIndexPattern = prefixIndexPattern(config, INDEX_PATTERN_LOGSTASH, ccs, true); const indexCounts = await Promise.all([ checkLatestMonitoringIsLegacy(context, esIndexPattern), checkLatestMonitoringIsLegacy(context, kbnIndexPattern),