-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* Internal Monitoring deprecation * Fixed type * Added if cloud logic * Fixed i18n test * Addressed code review feedback * Fixed types * Changed query * Added delay to fix a test * Fixed tests * Fixed text Co-authored-by: Elastic Machine <[email protected]> Co-authored-by: Elastic Machine <[email protected]>
- Loading branch information
1 parent
e7c7412
commit d121376
Showing
6 changed files
with
245 additions
and
6 deletions.
There are no files selected for viewing
123 changes: 123 additions & 0 deletions
123
x-pack/plugins/monitoring/public/lib/internal_monitoring_toasts.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
/* | ||
* 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 React from 'react'; | ||
import { i18n } from '@kbn/i18n'; | ||
import { FormattedMessage } from '@kbn/i18n/react'; | ||
import { EuiSpacer, EuiLink } from '@elastic/eui'; | ||
import { Legacy } from '../legacy_shims'; | ||
import { toMountPoint } from '../../../../../src/plugins/kibana_react/public'; | ||
import { isInSetupMode, toggleSetupMode } from './setup_mode'; | ||
|
||
export interface MonitoringIndicesTypes { | ||
legacyIndices: number; | ||
metricbeatIndices: number; | ||
} | ||
|
||
const enterSetupModeLabel = () => | ||
i18n.translate('xpack.monitoring.internalMonitoringToast.enterSetupMode', { | ||
defaultMessage: 'Enter setup mode', | ||
}); | ||
|
||
const learnMoreLabel = () => | ||
i18n.translate('xpack.monitoring.internalMonitoringToast.learnMoreAction', { | ||
defaultMessage: 'Learn more', | ||
}); | ||
|
||
const showIfLegacyOnlyIndices = () => { | ||
const { ELASTIC_WEBSITE_URL } = Legacy.shims.docLinks; | ||
const toast = Legacy.shims.toastNotifications.addWarning({ | ||
title: toMountPoint( | ||
<FormattedMessage | ||
id="xpack.monitoring.internalMonitoringToast.title" | ||
defaultMessage="Internal Monitoring Detected" | ||
/> | ||
), | ||
text: toMountPoint( | ||
<div> | ||
<p> | ||
{i18n.translate('xpack.monitoring.internalMonitoringToast.description', { | ||
defaultMessage: `It appears you are using "Legacy Collection" for Stack Monitoring. | ||
This method of monitoring will no longer be supported in the next major release (8.0.0). | ||
Please follow the steps in setup mode to start monitoring with Metricbeat.`, | ||
})} | ||
</p> | ||
<EuiLink | ||
onClick={() => { | ||
Legacy.shims.toastNotifications.remove(toast); | ||
toggleSetupMode(true); | ||
}} | ||
> | ||
{enterSetupModeLabel()} | ||
</EuiLink> | ||
|
||
<EuiSpacer /> | ||
<EuiLink | ||
href={`${ELASTIC_WEBSITE_URL}blog/external-collection-for-elastic-stack-monitoring-is-now-available-via-metricbeat`} | ||
external | ||
target="_blank" | ||
> | ||
{learnMoreLabel()} | ||
</EuiLink> | ||
</div> | ||
), | ||
}); | ||
}; | ||
|
||
const showIfLegacyAndMetricbeatIndices = () => { | ||
const { ELASTIC_WEBSITE_URL } = Legacy.shims.docLinks; | ||
const toast = Legacy.shims.toastNotifications.addWarning({ | ||
title: toMountPoint( | ||
<FormattedMessage | ||
id="xpack.monitoring.internalAndMetricbeatMonitoringToast.title" | ||
defaultMessage="Partial Legacy Monitoring Detected" | ||
/> | ||
), | ||
text: toMountPoint( | ||
<div> | ||
<p> | ||
{i18n.translate('xpack.monitoring.internalAndMetricbeatMonitoringToast.description', { | ||
defaultMessage: `It appears you are using both Metricbeat and "Legacy Collection" for Stack Monitoring. | ||
In 8.0.0, you must use Metricbeat to collect monitoring data. | ||
Please follow the steps in setup mode to migrate the rest of the monitoring to Metricbeat.`, | ||
})} | ||
</p> | ||
<EuiLink | ||
onClick={() => { | ||
Legacy.shims.toastNotifications.remove(toast); | ||
toggleSetupMode(true); | ||
}} | ||
> | ||
{enterSetupModeLabel()} | ||
</EuiLink> | ||
|
||
<EuiSpacer /> | ||
<EuiLink | ||
href={`${ELASTIC_WEBSITE_URL}blog/external-collection-for-elastic-stack-monitoring-is-now-available-via-metricbeat`} | ||
external | ||
target="_blank" | ||
> | ||
{learnMoreLabel()} | ||
</EuiLink> | ||
</div> | ||
), | ||
}); | ||
}; | ||
|
||
export const showInternalMonitoringToast = ({ | ||
legacyIndices, | ||
metricbeatIndices, | ||
}: MonitoringIndicesTypes) => { | ||
if (isInSetupMode()) { | ||
return; | ||
} | ||
|
||
if (legacyIndices && !metricbeatIndices) { | ||
showIfLegacyOnlyIndices(); | ||
} else if (legacyIndices && metricbeatIndices) { | ||
showIfLegacyAndMetricbeatIndices(); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
...ugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
* 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 { RequestHandlerContext } from 'kibana/server'; | ||
// @ts-ignore | ||
import { getIndexPatterns } from '../../../../../lib/cluster/get_index_patterns'; | ||
// @ts-ignore | ||
import { handleError } from '../../../../../lib/errors'; | ||
import { RouteDependencies } from '../../../../../types'; | ||
|
||
const queryBody = { | ||
size: 0, | ||
aggs: { | ||
types: { | ||
terms: { | ||
field: '_index', | ||
size: 10, | ||
}, | ||
}, | ||
}, | ||
}; | ||
|
||
const checkLatestMonitoringIsLegacy = async (context: RequestHandlerContext, index: string) => { | ||
const { client: esClient } = context.core.elasticsearch.legacy; | ||
const result = await esClient.callAsCurrentUser('search', { | ||
index, | ||
body: queryBody, | ||
}); | ||
|
||
const { aggregations } = result; | ||
const counts = { | ||
legacyIndicesCount: 0, | ||
mbIndicesCount: 0, | ||
}; | ||
|
||
if (!aggregations) { | ||
return counts; | ||
} | ||
|
||
const { | ||
types: { buckets }, | ||
} = aggregations; | ||
counts.mbIndicesCount = buckets.filter(({ key }: { key: string }) => key.includes('-mb-')).length; | ||
|
||
counts.legacyIndicesCount = buckets.length - counts.mbIndicesCount; | ||
return counts; | ||
}; | ||
|
||
export function internalMonitoringCheckRoute(server: unknown, npRoute: RouteDependencies) { | ||
npRoute.router.get( | ||
{ | ||
path: '/api/monitoring/v1/elasticsearch_settings/check/internal_monitoring', | ||
validate: false, | ||
}, | ||
async (context, _request, response) => { | ||
try { | ||
const typeCount = { | ||
legacy_indices: 0, | ||
mb_indices: 0, | ||
}; | ||
|
||
const { esIndexPattern, kbnIndexPattern, lsIndexPattern } = getIndexPatterns(server); | ||
const indexCounts = await Promise.all([ | ||
checkLatestMonitoringIsLegacy(context, esIndexPattern), | ||
checkLatestMonitoringIsLegacy(context, kbnIndexPattern), | ||
checkLatestMonitoringIsLegacy(context, lsIndexPattern), | ||
]); | ||
|
||
indexCounts.forEach((counts) => { | ||
typeCount.legacy_indices += counts.legacyIndicesCount; | ||
typeCount.mb_indices += counts.mbIndicesCount; | ||
}); | ||
|
||
return response.ok({ | ||
body: typeCount, | ||
}); | ||
} catch (err) { | ||
throw handleError(err); | ||
} | ||
} | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters