diff --git a/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/apm_panel.js b/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/apm_panel.js index f1f36fde6d899..9032378966b26 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/apm_panel.js +++ b/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/apm_panel.js @@ -23,7 +23,7 @@ import { EuiHorizontalRule, EuiFlexGroup, EuiToolTip, - EuiBadge + EuiIcon } from '@elastic/eui'; import { formatTimestampToDuration } from '../../../../common'; import { CALCULATE_DURATION_SINCE } from '../../../../common/constants'; @@ -39,35 +39,47 @@ export function ApmPanel(props) { const goToApm = () => props.changeUrl('apm'); const goToInstances = () => props.changeUrl('apm/instances'); - const setupModeApmData = get(setupMode.data, 'apm'); + const setupModeAPMData = get(setupMode.data, 'apm'); let setupModeInstancesData = null; if (setupMode.enabled && setupMode.data) { - const migratedNodesCount = Object.values(setupModeApmData.byUuid).filter(node => node.isFullyMigrated).length; - let totalNodesCount = Object.values(setupModeApmData.byUuid).length; - if (totalNodesCount === 0 && get(setupMode.data, 'apm.detected.mightExist', false)) { - totalNodesCount = 1; - } + const { + totalUniqueInstanceCount, + totalUniqueFullyMigratedCount, + totalUniquePartiallyMigratedCount + } = setupModeAPMData; + const hasInstances = totalUniqueInstanceCount > 0 || get(setupModeAPMData, 'detected.mightExist', false); + const allMonitoredByMetricbeat = totalUniqueInstanceCount > 0 && + (totalUniqueFullyMigratedCount === totalUniqueInstanceCount || totalUniquePartiallyMigratedCount === totalUniqueInstanceCount); + const internalCollectionOn = totalUniquePartiallyMigratedCount > 0; + if (hasInstances && (!allMonitoredByMetricbeat || internalCollectionOn)) { + let tooltipText = null; - const badgeColor = migratedNodesCount === totalNodesCount - ? 'secondary' - : 'danger'; + if (!allMonitoredByMetricbeat) { + tooltipText = i18n.translate('xpack.monitoring.cluster.overview.apmPanel.setupModeNodesTooltip.oneInternal', { + defaultMessage: `There's at least one server that isn't being monitored using Metricbeat. Click the flag + icon to visit the servers listing page and find out more information about the status of each server.` + }); + } + else if (internalCollectionOn) { + tooltipText = i18n.translate('xpack.monitoring.cluster.overview.apmPanel.setupModeNodesTooltip.disableInternal', { + defaultMessage: `All servers are being monitored using Metricbeat but internal collection still needs to be turned + off. Click the flag icon to visit the servers listing page and disable internal collection.` + }); + } - setupModeInstancesData = ( - - - - {migratedNodesCount}/{totalNodesCount} - - - - ); + setupModeInstancesData = ( + + + + + + + + ); + } } return ( @@ -85,7 +97,7 @@ export function ApmPanel(props) {

node.isFullyMigrated).length; - let totalNodesCount = Object.values(setupModeBeatsData.byUuid).length; - if (totalNodesCount === 0 && get(setupMode.data, 'beats.detected.mightExist', false)) { - totalNodesCount = 1; - } + const { + totalUniqueInstanceCount, + totalUniqueFullyMigratedCount, + totalUniquePartiallyMigratedCount + } = setupModeBeatsData; + const hasInstances = totalUniqueInstanceCount > 0 || get(setupModeBeatsData, 'detected.mightExist', false); + const allMonitoredByMetricbeat = totalUniqueInstanceCount > 0 && + (totalUniqueFullyMigratedCount === totalUniqueInstanceCount || totalUniquePartiallyMigratedCount === totalUniqueInstanceCount); + const internalCollectionOn = totalUniquePartiallyMigratedCount > 0; + if (hasInstances && (!allMonitoredByMetricbeat || internalCollectionOn)) { + let tooltipText = null; - const badgeColor = migratedNodesCount === totalNodesCount - ? 'secondary' - : 'danger'; + if (!allMonitoredByMetricbeat) { + tooltipText = i18n.translate('xpack.monitoring.cluster.overview.beatsPanel.setupModeNodesTooltip.oneInternal', { + defaultMessage: `There's at least one instance that isn't being monitored using Metricbeat. Click the flag + icon to visit the instances listing page and find out more information about the status of each instance.` + }); + } + else if (internalCollectionOn) { + tooltipText = i18n.translate('xpack.monitoring.cluster.overview.beatsPanel.setupModeNodesTooltip.disableInternal', { + defaultMessage: `All instances are being monitored using Metricbeat but internal collection still needs to be turned + off. Click the flag icon to visit the instances listing page and disable internal collection.` + }); + } - setupModeInstancesData = ( - - - - {migratedNodesCount}/{totalNodesCount} - - - - ); + setupModeInstancesData = ( + + + + + + + + ); + } } const beatTypes = props.beats.types.map((beat, index) => { diff --git a/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/logstash_panel.js b/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/logstash_panel.js index a3dfa7f2ef72b..ff647c1c219aa 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/logstash_panel.js +++ b/x-pack/legacy/plugins/monitoring/public/components/cluster/overview/logstash_panel.js @@ -22,7 +22,7 @@ import { EuiHorizontalRule, EuiIconTip, EuiToolTip, - EuiBadge + EuiIcon } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; @@ -45,32 +45,44 @@ export function LogstashPanel(props) { const setupModeLogstashData = get(setupMode.data, 'logstash'); let setupModeInstancesData = null; if (setupMode.enabled && setupMode.data) { - const migratedNodesCount = Object.values(setupModeLogstashData.byUuid).filter(node => node.isFullyMigrated).length; - let totalNodesCount = Object.values(setupModeLogstashData.byUuid).length; - if (totalNodesCount === 0 && get(setupMode.data, 'logstash.detected.mightExist', false)) { - totalNodesCount = 1; - } + const { + totalUniqueInstanceCount, + totalUniqueFullyMigratedCount, + totalUniquePartiallyMigratedCount + } = setupModeLogstashData; + const hasInstances = totalUniqueInstanceCount > 0 || get(setupModeLogstashData, 'detected.mightExist', false); + const allMonitoredByMetricbeat = totalUniqueInstanceCount > 0 && + (totalUniqueFullyMigratedCount === totalUniqueInstanceCount || totalUniquePartiallyMigratedCount === totalUniqueInstanceCount); + const internalCollectionOn = totalUniquePartiallyMigratedCount > 0; + if (hasInstances && (!allMonitoredByMetricbeat || internalCollectionOn)) { + let tooltipText = null; - const badgeColor = migratedNodesCount === totalNodesCount - ? 'secondary' - : 'danger'; + if (!allMonitoredByMetricbeat) { + tooltipText = i18n.translate('xpack.monitoring.cluster.overview.logstashPanel.setupModeNodesTooltip.oneInternal', { + defaultMessage: `There's at least one node that isn't being monitored using Metricbeat. Click the flag + icon to visit the nodes listing page and find out more information about the status of each node.` + }); + } + else if (internalCollectionOn) { + tooltipText = i18n.translate('xpack.monitoring.cluster.overview.logstashPanel.setupModeNodesTooltip.disableInternal', { + defaultMessage: `All nodes are being monitored using Metricbeat but internal collection still needs to be turned + off. Click the flag icon to visit the nodes listing page and disable internal collection.` + }); + } - setupModeInstancesData = ( - - - - {formatNumber(migratedNodesCount, 'int_commas')}/{formatNumber(totalNodesCount, 'int_commas')} - - - - ); + setupModeInstancesData = ( + + + + + + + + ); + } } return ( diff --git a/x-pack/legacy/plugins/monitoring/public/components/elasticsearch/nodes/nodes.js b/x-pack/legacy/plugins/monitoring/public/components/elasticsearch/nodes/nodes.js index f8073937a7e4d..1f5d2712418ac 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/elasticsearch/nodes/nodes.js +++ b/x-pack/legacy/plugins/monitoring/public/components/elasticsearch/nodes/nodes.js @@ -222,7 +222,7 @@ const getColumns = (showCgroupMetricsElasticsearch, setupMode) => { }; export function ElasticsearchNodes({ clusterStatus, showCgroupMetricsElasticsearch, ...props }) { - const { sorting, pagination, onTableChange, setupMode } = props; + const { sorting, pagination, onTableChange, clusterUuid, setupMode } = props; const columns = getColumns(showCgroupMetricsElasticsearch, setupMode); // Merge the nodes data with the setup data if enabled @@ -251,6 +251,10 @@ export function ElasticsearchNodes({ clusterStatus, showCgroupMetricsElasticsear // Think net new user scenario const hasInstances = setupMode.data.totalUniqueInstanceCount > 0; if (hasInstances && setupMode.data.totalUniquePartiallyMigratedCount === setupMode.data.totalUniqueInstanceCount) { + const finishMigrationAction = _.get(setupMode.meta, 'liveClusterUuid') === clusterUuid + ? setupMode.shortcutToFinishMigration + : setupMode.openFlyout; + disableInternalCollectionForMigrationMessage = ( - setupMode.openFlyout()} size="s" color="warning" fill> + {i18n.translate('xpack.monitoring.elasticsearch.nodes.metribeatMigration.disableInternalCollectionMigrationButtonLabel', { defaultMessage: 'Disable and finish migration' })} diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/flyout.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/flyout.js index 4f5e9135894b1..f8f13866f0938 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/flyout.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/flyout.js @@ -27,10 +27,8 @@ import { import { getInstructionSteps } from '../instruction_steps'; import { Storage } from 'ui/storage'; import { STORAGE_KEY, ELASTICSEARCH_CUSTOM_ID } from '../../../../common/constants'; -import { ensureMinimumTime } from '../../../lib/ensure_minimum_time'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { get } from 'lodash'; import { INSTRUCTION_STEP_SET_MONITORING_URL, INSTRUCTION_STEP_ENABLE_METRICBEAT, @@ -38,11 +36,9 @@ import { } from '../constants'; import { KIBANA_SYSTEM_ID, BEATS_SYSTEM_ID } from '../../../../../telemetry/common/constants'; import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; -import { setNewlyDiscoveredClusterUuid } from '../../../lib/setup_mode'; const storage = new Storage(window.localStorage); const ES_MONITORING_URL_KEY = `${STORAGE_KEY}.mb_migration.esMonitoringUrl`; -const AUTO_CHECK_INTERVAL_IN_MS = 5000; const DEFAULT_ES_MONITORING_URL = 'http://localhost:9200'; export class Flyout extends Component { @@ -67,66 +63,18 @@ export class Flyout extends Component { checkedStatusByStep: { [INSTRUCTION_STEP_ENABLE_METRICBEAT]: false, [INSTRUCTION_STEP_DISABLE_INTERNAL]: false, + userAcknowledgedNoClusterUuidPrompt: false }, - checkingMigrationStatus: false, - userAcknowledgedNoClusterUuidPrompt: false }; } - componentWillUpdate(_nextProps, nextState) { - // We attempt to provide a better UX for the user by automatically rechecking - // the status of their current step, once they have initiated a check manually. - // The logic here aims to remove the recheck one they have moved on from the - // step - - const thisActiveStep = this.state.activeStep; - const nextActiveStep = nextState.activeStep; - const nextEnableMbStatus = nextState.checkedStatusByStep[INSTRUCTION_STEP_ENABLE_METRICBEAT]; - const nowEnableMbStatus = this.state.checkedStatusByStep[INSTRUCTION_STEP_ENABLE_METRICBEAT]; - const nextDisableInternalStatus = nextState.checkedStatusByStep[INSTRUCTION_STEP_DISABLE_INTERNAL]; - const nowDisableInternalStatus = this.state.checkedStatusByStep[INSTRUCTION_STEP_DISABLE_INTERNAL]; - - const setupInterval = (nextEnableMbStatus && !nowEnableMbStatus) || (nextDisableInternalStatus && !nowDisableInternalStatus); - const removeInterval = thisActiveStep !== nextActiveStep; - if (removeInterval) { - clearInterval(this.checkInterval); - this.clearInterval = null; - } - - if (setupInterval) { - this.checkInterval = setInterval(async () => { - await this.checkForMigrationStatus(); - }, AUTO_CHECK_INTERVAL_IN_MS); - } - } - - componentWillUnmount() { - clearInterval(this.checkInterval); - } - - checkForMigrationStatus = async () => { - this.setState({ checkingMigrationStatus: true }); - await ensureMinimumTime( - this.props.updateProduct(this.props.instance.uuid, true), 1000 - ); - this.setState(state => ({ - ...state, - checkingMigrationStatus: false, - checkedStatusByStep: { - ...state.checkedStatusByStep, - [this.state.activeStep]: true, - } - })); - } - setEsMonitoringUrl = esMonitoringUrl => { storage.set(ES_MONITORING_URL_KEY, esMonitoringUrl); this.setState({ esMonitoringUrl }); } finishedFlyout() { - const { onClose, meta } = this.props; - setNewlyDiscoveredClusterUuid(get(meta, 'clusterUuid')); + const { onClose } = this.props; onClose(); } @@ -136,7 +84,6 @@ export class Flyout extends Component { activeStep, esMonitoringUrl, checkedStatusByStep, - checkingMigrationStatus, } = this.state; switch (activeStep) { @@ -166,10 +113,7 @@ export class Flyout extends Component { const instructionSteps = getInstructionSteps(productName, product, activeStep, meta, { doneWithMigration: onClose, esMonitoringUrl, - checkForMigrationStatus: this.checkForMigrationStatus, - checkingMigrationStatus, hasCheckedStatus: checkedStatusByStep[activeStep], - autoCheckIntervalInMs: AUTO_CHECK_INTERVAL_IN_MS, }); return ( diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/apm/enable_metricbeat_instructions.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/apm/enable_metricbeat_instructions.js index cfc478761b62c..3f27cdd35ace0 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/apm/enable_metricbeat_instructions.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/apm/enable_metricbeat_instructions.js @@ -9,9 +9,6 @@ import { EuiSpacer, EuiCodeBlock, EuiLink, - EuiFlexGroup, - EuiFlexItem, - EuiButton, EuiCallOut, EuiText } from '@elastic/eui'; @@ -22,10 +19,6 @@ import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; export function getApmInstructionsForEnablingMetricbeat(product, _meta, { esMonitoringUrl, - hasCheckedStatus, - checkingMigrationStatus, - checkForMigrationStatus, - autoCheckIntervalInMs }) { const securitySetup = ( @@ -174,60 +167,18 @@ export function getApmInstructionsForEnablingMetricbeat(product, _meta, { let migrationStatusStep = null; if (product.isInternalCollector || product.isNetNewUser) { - let status = null; - if (hasCheckedStatus) { - status = ( - - - - - ); - } - - let buttonLabel; - if (checkingMigrationStatus) { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.apmInstructions.checkingStatusButtonLabel', { - defaultMessage: 'Checking for data...' - }); - } else { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.apmInstructions.checkStatusButtonLabel', { - defaultMessage: 'Check for data' - }); - } - migrationStatusStep = { title: statusTitle, status: 'incomplete', children: ( - - - - -

- {i18n.translate('xpack.monitoring.metricbeatMigration.apmInstructions.statusDescription', { - defaultMessage: 'Check that data is received from the Metricbeat' - })} -

-
-
- - - {buttonLabel} - - -
- {status} -
+ ) }; } diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/beats/enable_metricbeat_instructions.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/beats/enable_metricbeat_instructions.js index 810304cf2a7ce..8d167379615d5 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/beats/enable_metricbeat_instructions.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/beats/enable_metricbeat_instructions.js @@ -9,9 +9,6 @@ import { EuiSpacer, EuiCodeBlock, EuiLink, - EuiFlexGroup, - EuiFlexItem, - EuiButton, EuiCallOut, EuiText } from '@elastic/eui'; @@ -22,10 +19,6 @@ import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; export function getBeatsInstructionsForEnablingMetricbeat(product, _meta, { esMonitoringUrl, - hasCheckedStatus, - checkingMigrationStatus, - checkForMigrationStatus, - autoCheckIntervalInMs }) { const beatType = product.beatType; const securitySetup = ( @@ -214,60 +207,18 @@ export function getBeatsInstructionsForEnablingMetricbeat(product, _meta, { let migrationStatusStep = null; if (product.isInternalCollector || product.isNetNewUser) { - let status = null; - if (hasCheckedStatus) { - status = ( - - - - - ); - } - - let buttonLabel; - if (checkingMigrationStatus) { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.beatsInstructions.checkingStatusButtonLabel', { - defaultMessage: 'Checking for data...' - }); - } else { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.beatsInstructions.checkStatusButtonLabel', { - defaultMessage: 'Check for data' - }); - } - migrationStatusStep = { title: statusTitle, status: 'incomplete', children: ( - - - - -

- {i18n.translate('xpack.monitoring.metricbeatMigration.beatsInstructions.statusDescription', { - defaultMessage: 'Check that data is received from the Metricbeat' - })} -

-
-
- - - {buttonLabel} - - -
- {status} -
+ ) }; } diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/disable_internal_collection_instructions.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/disable_internal_collection_instructions.js index 91aaca02de056..d09f134b1d299 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/disable_internal_collection_instructions.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/disable_internal_collection_instructions.js @@ -8,9 +8,6 @@ import React, { Fragment } from 'react'; import { EuiSpacer, EuiCodeBlock, - EuiFlexGroup, - EuiFlexItem, - EuiButton, EuiCallOut, EuiText } from '@elastic/eui'; @@ -20,12 +17,7 @@ import { Monospace } from '../components/monospace'; import { FormattedMessage } from '@kbn/i18n/react'; import { statusTitle } from './common_elasticsearch_instructions'; -export function getElasticsearchInstructionsForDisablingInternalCollection(product, meta, { - checkForMigrationStatus, - checkingMigrationStatus, - hasCheckedStatus, - autoCheckIntervalInMs, -}) { +export function getElasticsearchInstructionsForDisablingInternalCollection(product, meta) { const disableInternalCollectionStep = { title: i18n.translate('xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollectionTitle', { defaultMessage: 'Disable internal collection of Elasticsearch monitoring metrics' @@ -65,100 +57,51 @@ export function getElasticsearchInstructionsForDisablingInternalCollection(produ let migrationStatusStep = null; if (!product || !product.isFullyMigrated) { - let status = null; - if (hasCheckedStatus) { - let lastInternallyCollectedMessage = ''; - // It is possible that, during the migration steps, products are not reporting - // monitoring data for a period of time outside the window of our server-side check - // and this is most likely temporary so we want to be defensive and not error out - // and hopefully wait for the next check and this state will be self-corrected. - if (product) { - const lastInternallyCollectedTimestamp = product.lastInternallyCollectedTimestamp || product.lastTimestamp; - const secondsSinceLastInternalCollectionLabel = - formatTimestampToDuration(lastInternallyCollectedTimestamp, CALCULATE_DURATION_SINCE); - lastInternallyCollectedMessage = (); - } - - status = ( - - - -

- -

-

- {lastInternallyCollectedMessage} -

-
-
- ); - } - - let buttonLabel; - if (checkingMigrationStatus) { - buttonLabel = i18n.translate( - 'xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.checkingStatusButtonLabel', - { - defaultMessage: 'Checking...' - } - ); - } else { - buttonLabel = i18n.translate( - 'xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.checkStatusButtonLabel', - { - defaultMessage: 'Check' - } - ); + let lastInternallyCollectedMessage = ''; + // It is possible that, during the migration steps, products are not reporting + // monitoring data for a period of time outside the window of our server-side check + // and this is most likely temporary so we want to be defensive and not error out + // and hopefully wait for the next check and this state will be self-corrected. + if (product) { + const lastInternallyCollectedTimestamp = product.lastInternallyCollectedTimestamp || product.lastTimestamp; + const secondsSinceLastInternalCollectionLabel = + formatTimestampToDuration(lastInternallyCollectedTimestamp, CALCULATE_DURATION_SINCE); + lastInternallyCollectedMessage = (); } migrationStatusStep = { title: statusTitle, status: 'incomplete', children: ( - - - - -

- {i18n.translate( - 'xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.statusDescription', - { - defaultMessage: 'Check that no documents are coming from internal collection.' - } - )} -

-
-
- - - {buttonLabel} - - -
- {status} -
+ +

+ +

+

+ {lastInternallyCollectedMessage} +

+
) }; } diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/enable_metricbeat_instructions.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/enable_metricbeat_instructions.js index 80c9878c9182f..2de84fa883e6e 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/enable_metricbeat_instructions.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/elasticsearch/enable_metricbeat_instructions.js @@ -9,9 +9,6 @@ import { EuiSpacer, EuiCodeBlock, EuiLink, - EuiFlexGroup, - EuiFlexItem, - EuiButton, EuiCallOut, EuiText } from '@elastic/eui'; @@ -22,10 +19,6 @@ import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; export function getElasticsearchInstructionsForEnablingMetricbeat(product, _meta, { esMonitoringUrl, - hasCheckedStatus, - checkingMigrationStatus, - checkForMigrationStatus, - autoCheckIntervalInMs }) { const securitySetup = ( @@ -178,60 +171,18 @@ export function getElasticsearchInstructionsForEnablingMetricbeat(product, _meta let migrationStatusStep = null; if (product.isInternalCollector || product.isNetNewUser) { - let status = null; - if (hasCheckedStatus) { - status = ( - - - - - ); - } - - let buttonLabel; - if (checkingMigrationStatus) { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.elasticsearchInstructions.checkingStatusButtonLabel', { - defaultMessage: 'Checking for data...' - }); - } else { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.elasticsearchInstructions.checkStatusButtonLabel', { - defaultMessage: 'Check for data' - }); - } - migrationStatusStep = { title: product.isNetNewUser ? statusTitleNewUser : statusTitle, status: 'incomplete', children: ( - - - - -

- {i18n.translate('xpack.monitoring.metricbeatMigration.elasticsearchInstructions.statusDescription', { - defaultMessage: 'Check that data is received from the Metricbeat' - })} -

-
-
- - - {buttonLabel} - - -
- {status} -
+ ) }; } diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/kibana/enable_metricbeat_instructions.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/kibana/enable_metricbeat_instructions.js index 7871f45ad8a30..1cd8fdea25151 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/kibana/enable_metricbeat_instructions.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/kibana/enable_metricbeat_instructions.js @@ -9,9 +9,6 @@ import { EuiSpacer, EuiCodeBlock, EuiLink, - EuiFlexGroup, - EuiFlexItem, - EuiButton, EuiCallOut, EuiText } from '@elastic/eui'; @@ -22,10 +19,6 @@ import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; export function getKibanaInstructionsForEnablingMetricbeat(product, _meta, { esMonitoringUrl, - hasCheckedStatus, - checkingMigrationStatus, - checkForMigrationStatus, - autoCheckIntervalInMs }) { const securitySetup = ( @@ -174,60 +167,18 @@ export function getKibanaInstructionsForEnablingMetricbeat(product, _meta, { let migrationStatusStep = null; if (product.isInternalCollector || product.isNetNewUser) { - let status = null; - if (hasCheckedStatus) { - status = ( - - - - - ); - } - - let buttonLabel; - if (checkingMigrationStatus) { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.kibanaInstructions.checkingStatusButtonLabel', { - defaultMessage: 'Checking for data...' - }); - } else { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.kibanaInstructions.checkStatusButtonLabel', { - defaultMessage: 'Check for data' - }); - } - migrationStatusStep = { title: product.isNetNewUser ? statusTitleNewUser : statusTitle, status: 'incomplete', children: ( - - - - -

- {i18n.translate('xpack.monitoring.metricbeatMigration.kibanaInstructions.statusDescription', { - defaultMessage: 'Check that data is received from the Metricbeat' - })} -

-
-
- - - {buttonLabel} - - -
- {status} -
+ ) }; } diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/logstash/enable_metricbeat_instructions.js b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/logstash/enable_metricbeat_instructions.js index bbdd208ad3628..71300163ce6d2 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/logstash/enable_metricbeat_instructions.js +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/instruction_steps/logstash/enable_metricbeat_instructions.js @@ -9,9 +9,6 @@ import { EuiSpacer, EuiCodeBlock, EuiLink, - EuiFlexGroup, - EuiFlexItem, - EuiButton, EuiCallOut, EuiText } from '@elastic/eui'; @@ -22,10 +19,6 @@ import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; export function getLogstashInstructionsForEnablingMetricbeat(product, _meta, { esMonitoringUrl, - hasCheckedStatus, - checkingMigrationStatus, - checkForMigrationStatus, - autoCheckIntervalInMs }) { const securitySetup = ( @@ -174,60 +167,18 @@ export function getLogstashInstructionsForEnablingMetricbeat(product, _meta, { let migrationStatusStep = null; if (product.isInternalCollector || product.isNetNewUser) { - let status = null; - if (hasCheckedStatus) { - status = ( - - - - - ); - } - - let buttonLabel; - if (checkingMigrationStatus) { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.logstashInstructions.checkingStatusButtonLabel', { - defaultMessage: 'Checking for data...' - }); - } else { - buttonLabel = i18n.translate('xpack.monitoring.metricbeatMigration.logstashInstructions.checkStatusButtonLabel', { - defaultMessage: 'Check for data' - }); - } - migrationStatusStep = { title: statusTitle, status: 'incomplete', children: ( - - - - -

- {i18n.translate('xpack.monitoring.metricbeatMigration.logstashInstructions.statusDescription', { - defaultMessage: 'Check that data is received from the Metricbeat' - })} -

-
-
- - - {buttonLabel} - - -
- {status} -
+ ) }; } diff --git a/x-pack/legacy/plugins/monitoring/public/components/renderers/setup_mode.js b/x-pack/legacy/plugins/monitoring/public/components/renderers/setup_mode.js index 9e664aada7efb..f1bfebe7851ca 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/renderers/setup_mode.js +++ b/x-pack/legacy/plugins/monitoring/public/components/renderers/setup_mode.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import React from 'react'; -import { getSetupModeState, initSetupModeState, updateSetupModeData } from '../../lib/setup_mode'; +import { getSetupModeState, initSetupModeState, updateSetupModeData, disableElasticsearchInternalCollection } from '../../lib/setup_mode'; import { Flyout } from '../metricbeat_migration/flyout'; import { findNewUuid } from './lib/find_new_uuid'; @@ -97,6 +97,11 @@ export class SetupModeRenderer extends React.Component { ); } + async shortcutToFinishMigration() { + await disableElasticsearchInternalCollection(); + await updateSetupModeData(); + } + render() { const { render, productName } = this.props; const setupModeState = getSetupModeState(); @@ -116,9 +121,11 @@ export class SetupModeRenderer extends React.Component { return render({ setupMode: { data, + meta, enabled: setupModeState.enabled, productName, updateSetupModeData, + shortcutToFinishMigration: () => this.shortcutToFinishMigration(), openFlyout: (instance, isSettingUpNew) => this.setState({ isFlyoutOpen: true, instance, isSettingUpNew }), closeFlyout: () => this.setState({ isFlyoutOpen: false }), }, diff --git a/x-pack/legacy/plugins/monitoring/public/components/table/eui_table.js b/x-pack/legacy/plugins/monitoring/public/components/table/eui_table.js index a52bafd1858cd..9bd04e89c8512 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/table/eui_table.js +++ b/x-pack/legacy/plugins/monitoring/public/components/table/eui_table.js @@ -26,6 +26,7 @@ export class EuiMonitoringTable extends React.PureComponent { setupMode, uuidField, nameField, + setupNewButtonLabel, ...props } = this.props; @@ -193,7 +194,7 @@ export class EuiMonitoringTable extends React.PureComponent { setupMode.openFlyout({}, true)}> - {props.setupNewButtonLabel} + {setupNewButtonLabel} ); diff --git a/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js b/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js index 6907c91b6ef64..dbfbdb324f7aa 100644 --- a/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js +++ b/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js @@ -52,6 +52,9 @@ export const fetchCollectionData = async (uuid, fetchWithoutClusterUuid = false) else if (!fetchWithoutClusterUuid && clusterUuid) { url += `/cluster/${clusterUuid}`; } + else { + url += '/cluster'; + } try { const response = await http.post(url, { ccs }); @@ -70,11 +73,41 @@ const notifySetupModeDataChange = (oldData) => { export const updateSetupModeData = async (uuid, fetchWithoutClusterUuid = false) => { const oldData = setupModeState.data; - setupModeState.data = await fetchCollectionData(uuid, fetchWithoutClusterUuid); - if (get(setupModeState.data, '_meta.isOnCloud', false)) { + const data = await fetchCollectionData(uuid, fetchWithoutClusterUuid); + setupModeState.data = data; + if (get(data, '_meta.isOnCloud', false)) { return toggleSetupMode(false); // eslint-disable-line no-use-before-define } notifySetupModeDataChange(oldData); + + const globalState = angularState.injector.get('globalState'); + const clusterUuid = globalState.cluster_uuid; + if (!clusterUuid) { + const liveClusterUuid = get(data, '_meta.liveClusterUuid'); + const migratedEsNodes = Object.values(get(data, 'elasticsearch.byUuid', {})) + .filter(node => node.isPartiallyMigrated || node.isFullyMigrated); + if (liveClusterUuid && migratedEsNodes.length > 0) { + setNewlyDiscoveredClusterUuid(liveClusterUuid); + } + } +}; + +export const disableElasticsearchInternalCollection = async () => { + checkAngularState(); + + const http = angularState.injector.get('$http'); + const globalState = angularState.injector.get('globalState'); + const clusterUuid = globalState.cluster_uuid; + const url = `../api/monitoring/v1/setup/collection/${clusterUuid}/disable_internal_collection`; + try { + const response = await http.post(url); + return response.data; + } + catch (err) { + const Private = angularState.injector.get('Private'); + const ajaxErrorHandlers = Private(ajaxErrorHandlersProvider); + return ajaxErrorHandlers(err); + } }; export const toggleSetupMode = inSetupMode => { diff --git a/x-pack/legacy/plugins/monitoring/public/views/base_controller.js b/x-pack/legacy/plugins/monitoring/public/views/base_controller.js index 4fa5ed1f79b89..15abe5ed3e949 100644 --- a/x-pack/legacy/plugins/monitoring/public/views/base_controller.js +++ b/x-pack/legacy/plugins/monitoring/public/views/base_controller.js @@ -12,6 +12,7 @@ import { PageLoading } from 'plugins/monitoring/components'; import { timefilter } from 'ui/timefilter'; import { I18nContext } from 'ui/i18n'; import { PromiseWithCancel } from '../../common/cancel_promise'; +import { updateSetupModeData, getSetupModeState } from '../lib/setup_mode'; /** * Class to manage common instantiation behaviors in a view controller @@ -118,8 +119,13 @@ export class MonitoringViewBaseController { this.updateDataPromise = null; } const _api = apiUrlFn ? apiUrlFn() : api; - this.updateDataPromise = new PromiseWithCancel(_getPageData($injector, _api)); - return this.updateDataPromise.promise().then((pageData) => { + const promises = [_getPageData($injector, _api)]; + const setupMode = getSetupModeState(); + if (setupMode.enabled) { + promises.push(updateSetupModeData()); + } + this.updateDataPromise = new PromiseWithCancel(Promise.all(promises)); + return this.updateDataPromise.promise().then(([pageData]) => { $scope.$apply(() => { this._isDataInitialized = true; // render will replace loading screen with the react component $scope.pageData = this.data = pageData; // update the view's data with the fetch result diff --git a/x-pack/legacy/plugins/monitoring/public/views/elasticsearch/nodes/index.js b/x-pack/legacy/plugins/monitoring/public/views/elasticsearch/nodes/index.js index b9c1c15de324d..67658c665d3cf 100644 --- a/x-pack/legacy/plugins/monitoring/public/views/elasticsearch/nodes/index.js +++ b/x-pack/legacy/plugins/monitoring/public/views/elasticsearch/nodes/index.js @@ -89,6 +89,7 @@ uiRoutes.when('/elasticsearch/nodes', { {flyoutComponent} 0 - || get(beatsManagementDetectionResponse, 'hits.total.value', 0) > 0) { - result[BEATS_SYSTEM_ID].mightExist = true; - } - - if (get(logstashDataDetectionResponse, 'hits.total.value', 0) > 0 - || get(logstashManagementDetectionResponse, 'hits.total.value', 0) > 0) { - result[LOGSTASH_SYSTEM_ID].mightExist = true; - } - - if (get(apmDetectionResponse, 'hits.total.value', 0) > 0) { - result[APM_CUSTOM_ID].mightExist = true; + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('data'); + for (const { id, indices } of detectionSearch) { + const response = await callWithRequest(req, 'cat.indices', { index: indices, format: 'json' }); + if (response.length) { + result[id].mightExist = true; + } } return result; @@ -269,6 +258,27 @@ async function getLiveElasticsearchClusterUuid(req) { return clusterUuid; } +async function getLiveElasticsearchCollectionEnabled(req) { + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('admin'); + const response = await callWithRequest(req, 'transport.request', { + method: 'GET', + path: '/_cluster/settings?include_defaults', + filter_path: [ + 'persistent.xpack.monitoring', + 'transient.xpack.monitoring', + 'defaults.xpack.monitoring' + ] + }); + const sources = ['persistent', 'transient', 'defaults']; + for (const source of sources) { + const collectionSettings = get(response[source], 'xpack.monitoring.collection'); + if (collectionSettings && collectionSettings.enabled === 'true') { + return true; + } + } + return false; +} + /** * This function will scan all monitoring documents within the past 30s (or a custom time range is supported too) * and determine which products fall into one of four states: @@ -319,6 +329,7 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU const liveEsNodes = skipLiveData ? [] : await getLivesNodes(req); const liveKibanaInstance = skipLiveData ? {} : await getLiveKibanaInstance(req); const indicesBuckets = get(recentDocuments, 'aggregations.indices.buckets', []); + const liveClusterInternalCollectionEnabled = await getLiveElasticsearchCollectionEnabled(req); const status = PRODUCTS.reduce((products, product) => { const token = product.token || product.name; @@ -362,7 +373,6 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU // If there is no data, then they are a net new user if (!indexBuckets || indexBuckets.length === 0) { productStatus.totalUniqueInstanceCount = 0; - productStatus.detected = detectedProducts[product.name]; } // If there is a single bucket, then they are fully migrated or fully on the internal collector else if (indexBuckets.length === 1) { @@ -425,9 +435,11 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU } // If there are multiple buckets, they are partially upgraded assuming a single mb index exists else { + const considerAllInstancesMigrated = product.name === ELASTICSEARCH_CUSTOM_ID && + clusterUuid === liveClusterUuid && !liveClusterInternalCollectionEnabled; const internalTimestamps = []; for (const indexBucket of indexBuckets) { - const isFullyMigrated = indexBucket.key.includes(METRICBEAT_INDEX_NAME_UNIQUE_TOKEN); + const isFullyMigrated = considerAllInstancesMigrated || indexBucket.key.includes(METRICBEAT_INDEX_NAME_UNIQUE_TOKEN); const map = isFullyMigrated ? fullyMigratedUuidsMap : internalCollectorsUuidsMap; const otherMap = !isFullyMigrated ? fullyMigratedUuidsMap : internalCollectorsUuidsMap; @@ -502,6 +514,10 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU }; } + if (productStatus.totalUniqueInstanceCount === 0) { + productStatus.detected = detectedProducts[product.name]; + } + return { ...products, [product.name]: productStatus, @@ -510,7 +526,7 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU status._meta = { secondsAgo: NUMBER_OF_SECONDS_AGO_TO_LOOK, - clusterUuid: liveClusterUuid, + liveClusterUuid, isOnCloud: get(req.server.plugins, 'cloud.config.isCloudEnabled', false) }; diff --git a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/cluster_setup_status.js b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/cluster_setup_status.js index 16fca6636abba..de4ba8b171c26 100644 --- a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/cluster_setup_status.js +++ b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/cluster_setup_status.js @@ -16,11 +16,11 @@ export function clusterSetupStatusRoute(server) { */ server.route({ method: 'POST', - path: '/api/monitoring/v1/setup/collection/cluster/{clusterUuid}', + path: '/api/monitoring/v1/setup/collection/cluster/{clusterUuid?}', config: { validate: { params: Joi.object({ - clusterUuid: Joi.string().required(), + clusterUuid: Joi.string().optional(), }), query: Joi.object({ // This flag is not intended to be used in production. It was introduced diff --git a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/clusters_setup_status.js b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/clusters_setup_status.js deleted file mode 100644 index 5ed4ba54bb5d5..0000000000000 --- a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/clusters_setup_status.js +++ /dev/null @@ -1,58 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import Joi from 'joi'; -import { verifyMonitoringAuth } from '../../../../lib/elasticsearch/verify_monitoring_auth'; -import { handleError } from '../../../../lib/errors'; -import { getCollectionStatus } from '../../../../lib/setup/collection'; -import { getIndexPatterns } from '../../../../lib/cluster/get_index_patterns'; - -export function clustersSetupStatusRoute(server) { - /* - * Monitoring Home - * Route Init (for checking license and compatibility for multi-cluster monitoring - */ - server.route({ - method: 'POST', - path: '/api/monitoring/v1/setup/collection', - config: { - validate: { - query: Joi.object({ - // This flag is not intended to be used in production. It was introduced - // as a way to ensure consistent API testing - the typical data source - // for API tests are archived data, where the cluster configuration and data - // are consistent from environment to environment. However, this endpoint - // also attempts to retrieve data from the running stack products (ES and Kibana) - // which will vary from environment to environment making it difficult - // to write tests against. Therefore, this flag exists and should only be used - // in our testing environment. - skipLiveData: Joi.boolean().default(false) - }), - payload: Joi.object({ - timeRange: Joi.object({ - min: Joi.date().required(), - max: Joi.date().required() - }).optional() - }).allow(null) - } - }, - handler: async (req) => { - let status = null; - - // NOTE using try/catch because checkMonitoringAuth is expected to throw - // an error when current logged-in user doesn't have permission to read - // the monitoring data. `try/catch` makes it a little more explicit. - try { - await verifyMonitoringAuth(req); - const indexPatterns = getIndexPatterns(server); - status = await getCollectionStatus(req, indexPatterns, null, null, req.query.skipLiveData); - } catch (err) { - throw handleError(err, req); - } - - return status; - } - }); -} diff --git a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/disable_elasticsearch_internal_collection.js b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/disable_elasticsearch_internal_collection.js new file mode 100644 index 0000000000000..32e9034ac051f --- /dev/null +++ b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/disable_elasticsearch_internal_collection.js @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import Joi from 'joi'; +import { verifyMonitoringAuth } from '../../../../lib/elasticsearch/verify_monitoring_auth'; +import { handleError } from '../../../../lib/errors'; +import { setCollectionDisabled } from '../../../../lib/elasticsearch_settings/set/collection_disabled'; + +export function disableElasticsearchInternalCollectionRoute(server) { + server.route({ + method: 'POST', + path: '/api/monitoring/v1/setup/collection/{clusterUuid}/disable_internal_collection', + config: { + validate: { + params: Joi.object({ + clusterUuid: Joi.string().required() + }) + } + }, + handler: async (req) => { + // NOTE using try/catch because checkMonitoringAuth is expected to throw + // an error when current logged-in user doesn't have permission to read + // the monitoring data. `try/catch` makes it a little more explicit. + try { + await verifyMonitoringAuth(req); + await setCollectionDisabled(req); + } catch (err) { + throw handleError(err, req); + } + return null; + } + }); +} diff --git a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/index.js b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/index.js index 3adbb1981d2f4..3ad6a421025dc 100644 --- a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/index.js +++ b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/setup/index.js @@ -4,6 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -export { clustersSetupStatusRoute } from './clusters_setup_status'; export { clusterSetupStatusRoute } from './cluster_setup_status'; export { nodeSetupStatusRoute } from './node_setup_status'; +export { disableElasticsearchInternalCollectionRoute } from './disable_elasticsearch_internal_collection'; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index b74956f1ccd9d..8e69735582672 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7874,16 +7874,11 @@ "xpack.monitoring.logstashNavigation.overviewLinkText": "概要", "xpack.monitoring.logstashNavigation.pipelinesLinkText": "パイプライン", "xpack.monitoring.logstashNavigation.pipelineVersionDescription": "バージョンは {relativeLastSeen} 時点でアクティブ、初回検知 {relativeFirstSeen}", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.checkingStatusButtonLabel": "データを確認中...", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.checkStatusButtonLabel": "データを確認", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.configureMetricbeatDescription": "{file} にこれらの変更を加えます。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.configureMetricbeatTitle": "Metricbeat を構成して監視クラスターに送ります", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.checkingStatusButtonLabel": "確認中...", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.checkStatusButtonLabel": "確認", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.fullyMigratedStatusDescription": "内部収集からのドキュメントがありません。移行完了!", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.fullyMigratedStatusTitle": "お疲れさまでした!", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.partiallyMigratedStatusDescription": "最後の内部収集は {secondsSinceLastInternalCollectionLabel} 前に行われました。", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.statusDescription": "内部収集からのドキュメントがないことを確認してください。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollectionDescription": "Elasticsearch 監視メトリックの内部収集を無効にします。本番クラスターの各サーバーの {monospace} を false に設定します。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollectionTitle": "Elasticsearch 監視メトリックの内部収集を無効にする", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.enableMetricbeatModuleDescription": "モジュールはデフォルトで {url} から Elasticsearch 監視メトリックを収集します。ローカル Elasticsearch サーバーのアドレスが異なる場合は、{module} ファイルのホスト設定で指定する必要があります。", @@ -7892,14 +7887,11 @@ "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.fullyMigratedStatusTitle": "お疲れさまでした!", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.installMetricbeatLinkText": "こちらの手順に従ってください", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.installMetricbeatTitle": "Metricbeat を Elasticsearch と同じサーバーにインストール", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.isInternalCollectorStatusTitle": "この Elasticsearch の Metricbeat からの監視データが検出されていません。\n 引き続きバックグラウンドで {timePeriod} 秒ごとに確認します。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.metricbeatSecuritySetup": "セキュリティ機能が有効な場合、追加セットアップが必要な可能性があります。{link}", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.metricbeatSecuritySetupLinkText": "詳細をご覧ください。", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.partiallyMigratedStatusDescription": "検出には最長 {secondsAgo} 秒かかる場合がありますが、引き続きバックグラウンドで {timePeriod} 秒ごとに確認します。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.partiallyMigratedStatusTitle": "現在も Elasticsearch の内部収集からデータが送信されています。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.startMetricbeatLinkText": "こちらの手順に従ってください", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.startMetricbeatTitle": "Metricbeat を起動します", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.statusDescription": "Metricbeat データを受け取ったことを確認してください", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.statusTitle": "移行ステータス", "xpack.monitoring.metricbeatMigration.flyout.closeButtonLabel": "閉じる", "xpack.monitoring.metricbeatMigration.flyout.doneButtonLabel": "完了", @@ -7910,8 +7902,6 @@ "xpack.monitoring.metricbeatMigration.flyout.nextButtonLabel": "次へ", "xpack.monitoring.metricbeatMigration.flyout.step1.monitoringUrlHelpText": "これは通常単一のインスタンスですが、複数ある場合は、すべてのインスタンス URL をコンマ区切りで入力します。\n Metricbeat インスタンスの実行には、Elasticsearch サーバーとの通信が必要です。", "xpack.monitoring.metricbeatMigration.flyout.step1.monitoringUrlLabel": "監視クラスター URL", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.checkingStatusButtonLabel": "データを確認中...", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.checkStatusButtonLabel": "データを確認", "xpack.monitoring.metricbeatMigration.kibanaInstructions.configureMetricbeatDescription": "{file} にこれらの変更を加えます。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.configureMetricbeatTitle": "Metricbeat を構成して監視クラスターに送ります", "xpack.monitoring.metricbeatMigration.kibanaInstructions.disableInternalCollection.checkingStatusButtonLabel": "確認中...", @@ -7931,14 +7921,12 @@ "xpack.monitoring.metricbeatMigration.kibanaInstructions.fullyMigratedStatusTitle": "お疲れさまでした!", "xpack.monitoring.metricbeatMigration.kibanaInstructions.installMetricbeatLinkText": "こちらの手順に従ってください", "xpack.monitoring.metricbeatMigration.kibanaInstructions.installMetricbeatTitle": "Metricbeat を Kibana と同じサーバーにインストール", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.isInternalCollectorStatusTitle": "この Kibana の Metricbeat からの監視データが検出されていません。\n 引き続きバックグラウンドで {timePeriod} 秒ごとに確認します。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.metricbeatSecuritySetup": "セキュリティ機能が有効な場合、追加セットアップが必要な可能性があります。{link}", "xpack.monitoring.metricbeatMigration.kibanaInstructions.metricbeatSecuritySetupLinkText": "詳細をご覧ください。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.partiallyMigratedStatusDescription": "検出には最長 {secondsAgo} 秒かかる場合がありますが、引き続きバックグラウンドで {timePeriod} 秒ごとに確認します。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.partiallyMigratedStatusTitle": "現在も Kibana の内部収集からデータが送信されています。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.startMetricbeatLinkText": "こちらの手順に従ってください", "xpack.monitoring.metricbeatMigration.kibanaInstructions.startMetricbeatTitle": "Metricbeat を起動します", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.statusDescription": "Metricbeat データを受け取ったことを確認してください", "xpack.monitoring.metricbeatMigration.kibanaInstructions.statusTitle": "移行ステータス", "xpack.monitoring.metrics.apm.outputAckedEventsRate.ackedDescription": "アウトプットにより処理されたイベントです (再試行を含む)", "xpack.monitoring.metrics.apm.outputAckedEventsRate.ackedLabel": "承認済み", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index f38ecafd20bb4..1f13cc5929bdd 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -8017,16 +8017,11 @@ "xpack.monitoring.logstashNavigation.overviewLinkText": "概览", "xpack.monitoring.logstashNavigation.pipelinesLinkText": "管道", "xpack.monitoring.logstashNavigation.pipelineVersionDescription": "活动版本 {relativeLastSeen} 和首次看到 {relativeFirstSeen}", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.checkingStatusButtonLabel": "正在检查数据......", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.checkStatusButtonLabel": "检查数据", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.configureMetricbeatDescription": "在 {file} 文件中进行这些更改。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.configureMetricbeatTitle": "配置 Metricbeat 以发送至监测集群", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.checkingStatusButtonLabel": "正在检查......", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.checkStatusButtonLabel": "检查", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.fullyMigratedStatusDescription": "我们未看到任何来自内部收集的文档。迁移完成!", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.fullyMigratedStatusTitle": "恭喜您!", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.partiallyMigratedStatusDescription": "上次内部收集发生于 {secondsSinceLastInternalCollectionLabel}前。", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollection.statusDescription": "确认没有文档来自内部收集。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollectionDescription": "禁用 Elasticsearch 监测指标的内部收集。在生产集群中的每个服务器上将 {monospace} 设置为 false。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.disableInternalCollectionTitle": "禁用 Elasticsearch 监测指标的内部收集", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.enableMetricbeatModuleDescription": "默认情况下,该模块将从 {url} 收集 Elasticsearch 监测指标。如果本地 Elasticsearch 服务器有不同的地址,则必须通过 {module} 文件中的 hosts 设置来进行指定。", @@ -8035,14 +8030,11 @@ "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.fullyMigratedStatusTitle": "恭喜您!", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.installMetricbeatLinkText": "按照此处的说明执行操作", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.installMetricbeatTitle": "在安装 Elasticsearch 的同一台服务器上安装 Metricbeat", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.isInternalCollectorStatusTitle": "我们未检测到任何监测数据来自此 Elasticsearch 的 Metricbeat。\n 我们将在后台每 {timePeriod} 秒检查一次。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.metricbeatSecuritySetup": "如果已启用安全功能,则可能需要更多的设置。{link}", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.metricbeatSecuritySetupLinkText": "查看更多信息。", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.partiallyMigratedStatusDescription": "请注意,检测最多花费 {secondsAgo} 秒,但我们在后台每 {timePeriod} 秒检查一次。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.partiallyMigratedStatusTitle": "我们仍看到数据来自 Elasticsearch 的内部收集。", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.startMetricbeatLinkText": "按照此处的说明执行操作", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.startMetricbeatTitle": "启动 Metricbeat", - "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.statusDescription": "确认从 Metricbeat 收到数据", "xpack.monitoring.metricbeatMigration.elasticsearchInstructions.statusTitle": "迁移状态", "xpack.monitoring.metricbeatMigration.flyout.closeButtonLabel": "关闭", "xpack.monitoring.metricbeatMigration.flyout.doneButtonLabel": "完成", @@ -8053,8 +8045,6 @@ "xpack.monitoring.metricbeatMigration.flyout.nextButtonLabel": "下一个", "xpack.monitoring.metricbeatMigration.flyout.step1.monitoringUrlHelpText": "这通常是单个实例,但如果您有多个,请输入所有实例 url,以逗号分隔。\n 切记运行的 Metricbeat 实例需要能够与这些 Elasticsearch 实例通信。", "xpack.monitoring.metricbeatMigration.flyout.step1.monitoringUrlLabel": "监测集群 URL", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.checkingStatusButtonLabel": "正在检查数据......", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.checkStatusButtonLabel": "检查数据", "xpack.monitoring.metricbeatMigration.kibanaInstructions.configureMetricbeatDescription": "在 {file} 文件中进行这些更改。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.configureMetricbeatTitle": "配置 Metricbeat 以发送至监测集群", "xpack.monitoring.metricbeatMigration.kibanaInstructions.disableInternalCollection.checkingStatusButtonLabel": "正在检查......", @@ -8074,14 +8064,12 @@ "xpack.monitoring.metricbeatMigration.kibanaInstructions.fullyMigratedStatusTitle": "恭喜您!", "xpack.monitoring.metricbeatMigration.kibanaInstructions.installMetricbeatLinkText": "按照此处的说明执行操作", "xpack.monitoring.metricbeatMigration.kibanaInstructions.installMetricbeatTitle": "在安装 Kibana 的同一台服务器上安装 Metricbeat", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.isInternalCollectorStatusTitle": "我们未检测到任何监测数据来自此 Kibana 的 Metricbeat。\n 我们将在后台每 {timePeriod} 秒检查一次。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.metricbeatSecuritySetup": "如果已启用安全功能,则可能需要更多的设置。{link}", "xpack.monitoring.metricbeatMigration.kibanaInstructions.metricbeatSecuritySetupLinkText": "查看更多信息。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.partiallyMigratedStatusDescription": "请注意,检测最多花费 {secondsAgo} 秒,但我们在后台每 {timePeriod} 秒检查一次。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.partiallyMigratedStatusTitle": "我们仍看到数据来自 Kibana 的内部收集。", "xpack.monitoring.metricbeatMigration.kibanaInstructions.startMetricbeatLinkText": "按照此处的说明执行操作", "xpack.monitoring.metricbeatMigration.kibanaInstructions.startMetricbeatTitle": "启动 Metricbeat", - "xpack.monitoring.metricbeatMigration.kibanaInstructions.statusDescription": "确认从 Metricbeat 收到数据", "xpack.monitoring.metricbeatMigration.kibanaInstructions.statusTitle": "迁移状态", "xpack.monitoring.metrics.apm.outputAckedEventsRate.ackedDescription": "输出处理的事件(包括重试)", "xpack.monitoring.metrics.apm.outputAckedEventsRate.ackedLabel": "已确认", diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_apm.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_apm.js index 1f11e3c457644..042b93b5e5979 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_apm.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_apm.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats.js index 30e263a1a81d7..336202c5afd6b 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats_management.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats_management.js index 64008f27ff8f8..95a7e1ba0c219 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats_management.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_beats_management.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash.js index dcf5df172ea1b..741a60ea7f3d5 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash_management.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash_management.js index 86cfcbddd80c2..fd1d89ddfb055 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash_management.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/detect_logstash_management.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_exclusive_mb.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_exclusive_mb.js index f9980fea605c9..59ca189650546 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_exclusive_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_exclusive_mb.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_mb.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_mb.js index 7a5c4a2d35eb4..09da226189c74 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/es_and_kibana_mb.js @@ -29,7 +29,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json index 6f6b9365d72a5..518c074bc985d 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json @@ -47,6 +47,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json index 874317c32268a..219b2194d04db 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json @@ -56,6 +56,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json index 6a07a501f01e2..72e44a3227728 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json @@ -47,6 +47,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json index 483298faea8c3..a30ee6c04640d 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json @@ -47,6 +47,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json index 483298faea8c3..a30ee6c04640d 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json @@ -47,6 +47,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json index ba00987b1569b..28f90aeba7ceb 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json @@ -46,7 +46,9 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "detected": null, + "detected": { + "mightExist": false + }, "byUuid": {} }, "elasticsearch": { @@ -65,6 +67,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json index e6fd107b6170d..16d079ea9b7e9 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json @@ -46,7 +46,9 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "detected": null, + "detected": { + "mightExist": false + }, "byUuid": {} }, "elasticsearch": { @@ -65,6 +67,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json index 0f5f7db7c14d1..7f5e8cb889782 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json @@ -46,7 +46,9 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "detected": null, + "detected": { + "mightExist": false + }, "byUuid": {} }, "elasticsearch": { @@ -65,6 +67,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json index 98e161832ddc0..3c6da934bbf94 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json @@ -46,7 +46,9 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "detected": null, + "detected": { + "mightExist": false + }, "byUuid": {} }, "elasticsearch": { @@ -65,6 +67,6 @@ "_meta": { "secondsAgo": 30, "isOnCloud": false, - "clusterUuid": null + "liveClusterUuid": null } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_exclusive_mb.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_exclusive_mb.js index 3540cb050909d..cc2e608e9513d 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_exclusive_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_exclusive_mb.js @@ -28,7 +28,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200); diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_mb.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_mb.js index e7cfd0df94162..6f8fdd5840049 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/kibana_mb.js @@ -28,7 +28,7 @@ export default function ({ getService }) { it('should get collection status', async () => { const { body } = await supertest - .post('/api/monitoring/v1/setup/collection?skipLiveData=true') + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') .set('kbn-xsrf', 'xxx') .send({ timeRange }) .expect(200);