From 0e6c38d630a485f3e46ff007636f2385ec6dcdbf Mon Sep 17 00:00:00 2001 From: igoristic Date: Tue, 23 Feb 2021 12:19:10 -0500 Subject: [PATCH] [Monitoring] Added cgroup option for APM cpu usage (#90873) * Added APM cpu cgroup * Fixed tests * Fixed i18n * Removed agent logic and fixed tests * Fixed test * Fixed tests and backup field * Removed backup field fix * Fixed cluster tests Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/components/apm/apm_metrics.tsx | 85 +++++++++++++++++++ .../components/apm/instance/instance.js | 60 +++---------- .../public/components/apm/instance/status.js | 2 +- .../public/components/apm/overview/index.js | 58 +++---------- .../components/cluster/overview/apm_panel.js | 2 +- .../plugins/monitoring/server/config.test.ts | 3 + x-pack/plugins/monitoring/server/config.ts | 3 + .../monitoring/server/lib/apm/get_apm_info.ts | 11 ++- .../server/lib/apm/get_apms_for_clusters.js | 3 + .../lib/cluster/get_clusters_from_request.js | 6 +- .../__snapshots__/metrics.test.js.snap | 49 +++++++++++ .../server/lib/metrics/apm/metrics.js | 26 ++++++ .../api/v1/apm/_get_apm_cluster_status.js | 9 +- .../server/routes/api/v1/apm/instance.js | 6 ++ .../server/routes/api/v1/apm/overview.js | 6 ++ .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - .../apis/monitoring/apm/fixtures/cluster.json | 3 + .../monitoring/apm/fixtures/instance.json | 3 + .../cluster/fixtures/multicluster.json | 9 ++ .../monitoring/cluster/fixtures/overview.json | 3 + .../standalone_cluster/fixtures/cluster.json | 3 + .../standalone_cluster/fixtures/clusters.json | 6 ++ 23 files changed, 252 insertions(+), 108 deletions(-) create mode 100644 x-pack/plugins/monitoring/public/components/apm/apm_metrics.tsx diff --git a/x-pack/plugins/monitoring/public/components/apm/apm_metrics.tsx b/x-pack/plugins/monitoring/public/components/apm/apm_metrics.tsx new file mode 100644 index 000000000000..7efddcfe66b0 --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/apm/apm_metrics.tsx @@ -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 + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiFlexItem, + EuiPanel, + EuiSpacer, + EuiPage, + EuiPageBody, + EuiFlexGroup, + EuiPageContent, + EuiScreenReaderOnly, + EuiTitle, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; + +// @ts-ignore could not find declaration file +import { MonitoringTimeseriesContainer } from '../chart'; +// @ts-ignore could not find declaration file +import { Status } from './instance/status'; + +interface Props { + stats: unknown; + metrics: { [key: string]: unknown }; + seriesToShow: unknown[]; + title: string; +} + +const createCharts = (series: unknown[], props: Partial) => { + return series.map((data, index) => { + return ( + + + + ); + }); +}; + +export const ApmMetrics = ({ stats, metrics, seriesToShow, title, ...props }: Props) => { + const topSeries = [metrics.apm_cpu, metrics.apm_memory, metrics.apm_os_load]; + + return ( + + + +

+ +

+
+ + + + + + +

+ {i18n.translate('xpack.monitoring.apm.metrics.topCharts.nonAgentTitle', { + defaultMessage: 'APM Server - Resource Usage', + })} +

+
+ + {createCharts(topSeries, props)} +
+ + + +

{title}

+
+ + {createCharts(seriesToShow, props)} +
+
+
+ ); +}; diff --git a/x-pack/plugins/monitoring/public/components/apm/instance/instance.js b/x-pack/plugins/monitoring/public/components/apm/instance/instance.js index e66cca480ba4..f52ca7cf8ad4 100644 --- a/x-pack/plugins/monitoring/public/components/apm/instance/instance.js +++ b/x-pack/plugins/monitoring/public/components/apm/instance/instance.js @@ -6,66 +6,28 @@ */ import React from 'react'; -import { MonitoringTimeseriesContainer } from '../../chart'; -import { - EuiFlexItem, - EuiPanel, - EuiSpacer, - EuiPage, - EuiPageBody, - EuiFlexGroup, - EuiPageContent, - EuiScreenReaderOnly, -} from '@elastic/eui'; -import { Status } from './status'; -import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { ApmMetrics } from '../apm_metrics'; -export function ApmServerInstance({ summary, metrics, ...props }) { +const title = i18n.translate('xpack.monitoring.apm.instance.panels.title', { + defaultMessage: 'APM Server - Metrics', +}); + +export function ApmServerInstance(props) { + const { metrics } = props; const seriesToShow = [ metrics.apm_requests, metrics.apm_responses_valid, - metrics.apm_responses_errors, metrics.apm_acm_request_count, - metrics.apm_acm_response, metrics.apm_acm_response_errors, - metrics.apm_output_events_rate_success, metrics.apm_output_events_rate_failure, - metrics.apm_transformations, - metrics.apm_cpu, - - metrics.apm_memory, - metrics.apm_os_load, ]; - const charts = seriesToShow.map((data, index) => ( - - - - )); - - return ( - - - -

- -

-
- - - - - - {charts} - -
-
- ); + const stats = props.summary; + const metricProps = { ...props, title, seriesToShow, stats }; + return ; } diff --git a/x-pack/plugins/monitoring/public/components/apm/instance/status.js b/x-pack/plugins/monitoring/public/components/apm/instance/status.js index 2fb70edc87dc..9a199d6f6f9c 100644 --- a/x-pack/plugins/monitoring/public/components/apm/instance/status.js +++ b/x-pack/plugins/monitoring/public/components/apm/instance/status.js @@ -15,7 +15,7 @@ import { CALCULATE_DURATION_SINCE } from '../../../../common/constants'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -export function Status({ alerts, stats }) { +export function Status({ alerts = null, stats }) { const { name, output, version, uptime, timeOfLastEvent } = stats; const metrics = [ diff --git a/x-pack/plugins/monitoring/public/components/apm/overview/index.js b/x-pack/plugins/monitoring/public/components/apm/overview/index.js index 2a57bb09c89a..ec622535444b 100644 --- a/x-pack/plugins/monitoring/public/components/apm/overview/index.js +++ b/x-pack/plugins/monitoring/public/components/apm/overview/index.js @@ -6,62 +6,24 @@ */ import React from 'react'; -import { MonitoringTimeseriesContainer } from '../../chart'; -import { - EuiSpacer, - EuiPage, - EuiFlexGroup, - EuiFlexItem, - EuiPageBody, - EuiPanel, - EuiPageContent, - EuiScreenReaderOnly, -} from '@elastic/eui'; -import { Status } from '../instances/status'; -import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { ApmMetrics } from '../apm_metrics'; -export function ApmOverview({ stats, metrics, alerts, ...props }) { +const title = i18n.translate('xpack.monitoring.apm.overview.panels.title', { + defaultMessage: 'APM Server - Metrics', +}); + +export function ApmOverview(props) { + const { metrics } = props; const seriesToShow = [ metrics.apm_responses_valid, metrics.apm_responses_errors, - metrics.apm_output_events_rate_success, metrics.apm_output_events_rate_failure, - metrics.apm_requests, metrics.apm_transformations, - - metrics.apm_cpu, - metrics.apm_memory, - - metrics.apm_os_load, ]; - const charts = seriesToShow.map((data, index) => ( - - - - )); - - return ( - - - -

- -

-
- - - - - - {charts} - -
-
- ); + const metricProps = { ...props, title, seriesToShow }; + return ; } diff --git a/x-pack/plugins/monitoring/public/components/cluster/overview/apm_panel.js b/x-pack/plugins/monitoring/public/components/cluster/overview/apm_panel.js index 7f72620cb02d..a8b71bbfb234 100644 --- a/x-pack/plugins/monitoring/public/components/cluster/overview/apm_panel.js +++ b/x-pack/plugins/monitoring/public/components/cluster/overview/apm_panel.js @@ -135,7 +135,7 @@ export function ApmPanel(props) { {apmsTotal} }} + values={{ apmsTotal }} /> diff --git a/x-pack/plugins/monitoring/server/config.test.ts b/x-pack/plugins/monitoring/server/config.test.ts index 0d366641d576..c285ff27c5a6 100644 --- a/x-pack/plugins/monitoring/server/config.test.ts +++ b/x-pack/plugins/monitoring/server/config.test.ts @@ -56,6 +56,9 @@ describe('config schema', () => { "enabled": true, }, "container": Object { + "apm": Object { + "enabled": false, + }, "elasticsearch": Object { "enabled": false, }, diff --git a/x-pack/plugins/monitoring/server/config.ts b/x-pack/plugins/monitoring/server/config.ts index 978a571f8a58..860c564ce324 100644 --- a/x-pack/plugins/monitoring/server/config.ts +++ b/x-pack/plugins/monitoring/server/config.ts @@ -40,6 +40,9 @@ export const configSchema = schema.object({ elasticsearch: schema.object({ enabled: schema.boolean({ defaultValue: false }), }), + apm: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), logstash: schema.object({ enabled: schema.boolean({ defaultValue: false }), }), diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.ts b/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.ts index 049dd21dc031..df74d6b609f9 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.ts +++ b/x-pack/plugins/monitoring/server/lib/apm/get_apm_info.ts @@ -18,7 +18,11 @@ import { getTimeOfLastEvent } from './_get_time_of_last_event'; import { LegacyRequest } from '../../types'; import { ElasticsearchResponse } from '../../../common/types/es'; -export function handleResponse(response: ElasticsearchResponse, apmUuid: string) { +export function handleResponse( + response: ElasticsearchResponse, + apmUuid: string, + config: { get: (key: string) => string | undefined } +) { if (!response.hits || response.hits.hits.length === 0) { return {}; } @@ -59,6 +63,9 @@ export function handleResponse(response: ElasticsearchResponse, apmUuid: string) eventsEmitted: getDiffCalculation(eventsEmittedLast, eventsEmittedFirst), eventsDropped: getDiffCalculation(eventsDroppedLast, eventsDroppedFirst), bytesWritten: getDiffCalculation(bytesWrittenLast, bytesWrittenFirst), + config: { + container: config.get('monitoring.ui.container.apm.enabled'), + }, }; } @@ -138,7 +145,7 @@ export async function getApmInfo( }), ]); - const formattedResponse = handleResponse(response, apmUuid); + const formattedResponse = handleResponse(response, apmUuid, req.server.config()); return { ...formattedResponse, timeOfLastEvent, diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js b/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js index aa494cdce338..446cf19adf2a 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js +++ b/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js @@ -73,6 +73,9 @@ export function getApmsForClusters(req, apmIndexPattern, clusters) { const formattedResponse = handleResponse(clusterUuid, response); return { ...formattedResponse, + config: { + container: config.get('monitoring.ui.container.apm.enabled'), + }, stats: { ...formattedResponse.stats, timeOfLastEvent, diff --git a/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js b/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js index 0bed25a70d04..990a4df85c5f 100644 --- a/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js +++ b/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js @@ -258,7 +258,11 @@ export async function getClustersFromRequest( : []; apmsByCluster.forEach((apm) => { const clusterIndex = findIndex(clusters, { cluster_uuid: apm.clusterUuid }); - set(clusters[clusterIndex], 'apm', apm.stats); + const { stats, config } = apm; + clusters[clusterIndex].apm = { + ...stats, + config, + }; }); // check ccr configuration diff --git a/x-pack/plugins/monitoring/server/lib/metrics/__snapshots__/metrics.test.js.snap b/x-pack/plugins/monitoring/server/lib/metrics/__snapshots__/metrics.test.js.snap index 74916fb0a078..e9c89037c905 100644 --- a/x-pack/plugins/monitoring/server/lib/metrics/__snapshots__/metrics.test.js.snap +++ b/x-pack/plugins/monitoring/server/lib/metrics/__snapshots__/metrics.test.js.snap @@ -412,6 +412,55 @@ Object { "units": "/s", "uuidField": "cluster_uuid", }, + "apm_cgroup_cpu": QuotaMetric { + "aggs": Object { + "periods": Object { + "max": Object { + "field": "beats_stats.metrics.beat.cgroup.cpu.stats.periods", + }, + }, + "periods_deriv": Object { + "derivative": Object { + "buckets_path": "periods", + "gap_policy": "skip", + "unit": "1s", + }, + }, + "quota": Object { + "min": Object { + "field": "beats_stats.metrics.beat.cgroup.cpu.cfs.quota.us", + }, + }, + "usage": Object { + "max": Object { + "field": "beats_stats.metrics.beat.cgroup.cpuacct.total.ns", + }, + }, + "usage_deriv": Object { + "derivative": Object { + "buckets_path": "usage", + "gap_policy": "skip", + "unit": "1s", + }, + }, + }, + "app": "apm", + "calculation": [Function], + "derivative": true, + "description": "CPU Usage time compared to the CPU quota shown in percentage. If CPU quotas are not set, then no data will be shown.", + "field": "beats_stats.metrics.beat.cpu.total.value", + "fieldSource": "beats_stats.metrics.beat.cgroup", + "format": "0,0.[00]", + "label": "Cgroup CPU Utilization", + "metricAgg": "max", + "periodsField": "cpu.stats.periods", + "quotaField": "cpu.cfs.quota.us", + "timestampField": "beats_stats.timestamp", + "title": "CPU Utilization", + "units": "%", + "usageField": "cpuacct.total.ns", + "uuidField": "beats_stats.beat.uuid", + }, "apm_cpu_total": ApmCpuUtilizationMetric { "app": "apm", "calculation": [Function], diff --git a/x-pack/plugins/monitoring/server/lib/metrics/apm/metrics.js b/x-pack/plugins/monitoring/server/lib/metrics/apm/metrics.js index 66cb5159a21f..ecbd4c4204be 100644 --- a/x-pack/plugins/monitoring/server/lib/metrics/apm/metrics.js +++ b/x-pack/plugins/monitoring/server/lib/metrics/apm/metrics.js @@ -8,6 +8,7 @@ import { LARGE_BYTES, LARGE_FLOAT } from '../../../../common/formatting'; import { ApmMetric, ApmCpuUtilizationMetric, ApmEventsRateClusterMetric } from './classes'; import { i18n } from '@kbn/i18n'; +import { QuotaMetric } from '../classes'; const instanceSystemLoadTitle = i18n.translate( 'xpack.monitoring.metrics.apmInstance.systemLoadTitle', @@ -39,6 +40,31 @@ export const metrics = { ), field: 'beats_stats.metrics.beat.cpu.total.value', }), + apm_cgroup_cpu: new QuotaMetric({ + app: 'apm', + ...ApmMetric.getMetricFields(), + fieldSource: 'beats_stats.metrics.beat.cgroup', + usageField: 'cpuacct.total.ns', + periodsField: 'cpu.stats.periods', + quotaField: 'cpu.cfs.quota.us', + field: 'beats_stats.metrics.beat.cpu.total.value', // backup field if quota is not configured + title: i18n.translate('xpack.monitoring.metrics.apmInstance.cpuUtilizationTitle', { + defaultMessage: 'CPU Utilization', + }), + label: i18n.translate( + 'xpack.monitoring.metrics.apmInstance.cpuUtilization.cgroupCpuUtilizationLabel', + { + defaultMessage: 'Cgroup CPU Utilization', + } + ), + description: i18n.translate( + 'xpack.monitoring.metrics.apmInstance.cpuUtilization.cgroupCpuUtilizationDescription', + { + defaultMessage: + 'CPU Usage time compared to the CPU quota shown in percentage. If CPU quotas are not set, then no data will be shown.', + } + ), + }), apm_system_os_load_1: new ApmMetric({ field: 'beats_stats.metrics.system.load.1', label: i18n.translate('xpack.monitoring.metrics.apmInstance.systemLoad.last1MinuteLabel', { diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/apm/_get_apm_cluster_status.js b/x-pack/plugins/monitoring/server/routes/api/v1/apm/_get_apm_cluster_status.js index a7b586e55076..a28312de78af 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/apm/_get_apm_cluster_status.js +++ b/x-pack/plugins/monitoring/server/routes/api/v1/apm/_get_apm_cluster_status.js @@ -5,10 +5,15 @@ * 2.0. */ -import { get } from 'lodash'; import { getApmsForClusters } from '../../../../lib/apm/get_apms_for_clusters'; export const getApmClusterStatus = (req, apmIndexPattern, { clusterUuid }) => { const clusters = [{ cluster_uuid: clusterUuid }]; - return getApmsForClusters(req, apmIndexPattern, clusters).then((apms) => get(apms, '[0].stats')); + return getApmsForClusters(req, apmIndexPattern, clusters).then((apms) => { + const [{ stats, config }] = apms; + return { + ...stats, + config, + }; + }); }; diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/apm/instance.js b/x-pack/plugins/monitoring/server/routes/api/v1/apm/instance.js index a7c1872c35af..4884b8151f61 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/apm/instance.js +++ b/x-pack/plugins/monitoring/server/routes/api/v1/apm/instance.js @@ -39,6 +39,12 @@ export function apmInstanceRoute(server) { const ccs = req.payload.ccs; const apmIndexPattern = prefixIndexPattern(config, INDEX_PATTERN_BEATS, ccs); + const showCgroupMetrics = config.get('monitoring.ui.container.apm.enabled'); + if (showCgroupMetrics) { + const metricCpu = metricSet.find((m) => m.name === 'apm_cpu'); + metricCpu.keys = ['apm_cgroup_cpu']; + } + try { const [metrics, apmSummary] = await Promise.all([ getMetrics(req, apmIndexPattern, metricSet, [ diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/apm/overview.js b/x-pack/plugins/monitoring/server/routes/api/v1/apm/overview.js index bca9150a8a8c..7a772594b4bc 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/apm/overview.js +++ b/x-pack/plugins/monitoring/server/routes/api/v1/apm/overview.js @@ -37,6 +37,12 @@ export function apmOverviewRoute(server) { const clusterUuid = req.params.clusterUuid; const apmIndexPattern = prefixIndexPattern(config, INDEX_PATTERN_BEATS, ccs); + const showCgroupMetrics = config.get('monitoring.ui.container.apm.enabled'); + if (showCgroupMetrics) { + const metricCpu = metricSet.find((m) => m.name === 'apm_cpu'); + metricCpu.keys = ['apm_cgroup_cpu']; + } + try { const [stats, metrics] = await Promise.all([ getApmClusterStatus(req, apmIndexPattern, { clusterUuid }), diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 8b3912bb9359..3496d7b0b52f 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -14451,7 +14451,6 @@ "xpack.monitoring.alerts.validation.threshold": "有効な数字が必要です。", "xpack.monitoring.alerts.writeThreadPoolRejections.description": "書き込みスレッドプールの拒否数がしきい値を超過するときにアラートを発行します。", "xpack.monitoring.apm.healthStatusLabel": "ヘルス: {status}", - "xpack.monitoring.apm.instance.heading": "APMサーバーインスタンス", "xpack.monitoring.apm.instance.pageTitle": "APMサーバーインスタンス:{instanceName}", "xpack.monitoring.apm.instance.routeTitle": "{apm} - インスタンス", "xpack.monitoring.apm.instance.status.lastEventDescription": "{timeOfLastEvent} 前", @@ -14480,7 +14479,6 @@ "xpack.monitoring.apm.instances.totalEventsRateTitle": "合計イベントレート", "xpack.monitoring.apm.instances.versionFilter": "バージョン", "xpack.monitoring.apm.instances.versionTitle": "バージョン", - "xpack.monitoring.apm.overview.heading": "APMサーバー概要", "xpack.monitoring.apm.overview.pageTitle": "APMサーバー概要", "xpack.monitoring.apm.overview.routeTitle": "APMサーバー", "xpack.monitoring.apmNavigation.instancesLinkText": "インスタンス", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 2561d76bca1a..0e87e36bef82 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -14492,7 +14492,6 @@ "xpack.monitoring.alerts.validation.threshold": "需要有效的数字。", "xpack.monitoring.alerts.writeThreadPoolRejections.description": "当写入线程池中的拒绝数量超过阈值时告警。", "xpack.monitoring.apm.healthStatusLabel": "运行状况:{status}", - "xpack.monitoring.apm.instance.heading": "APM 服务器实例", "xpack.monitoring.apm.instance.pageTitle": "APM 服务器实例:{instanceName}", "xpack.monitoring.apm.instance.routeTitle": "{apm} - 实例", "xpack.monitoring.apm.instance.status.lastEventDescription": "{timeOfLastEvent}前", @@ -14521,7 +14520,6 @@ "xpack.monitoring.apm.instances.totalEventsRateTitle": "事件合计速率", "xpack.monitoring.apm.instances.versionFilter": "版本", "xpack.monitoring.apm.instances.versionTitle": "版本", - "xpack.monitoring.apm.overview.heading": "APM 服务器概览", "xpack.monitoring.apm.overview.pageTitle": "APM 服务器概览", "xpack.monitoring.apm.overview.routeTitle": "APM 服务器", "xpack.monitoring.apmNavigation.instancesLinkText": "实例", diff --git a/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json b/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json index e54a1c2210d4..f56440f2e4c4 100644 --- a/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json +++ b/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json @@ -6,6 +6,9 @@ "apms": { "total": 2 }, + "config": { + "container": false + }, "timeOfLastEvent": "2018-08-31T13:59:21.201Z" }, "metrics": { diff --git a/x-pack/test/api_integration/apis/monitoring/apm/fixtures/instance.json b/x-pack/test/api_integration/apis/monitoring/apm/fixtures/instance.json index f1747507b71d..089ad3db5406 100644 --- a/x-pack/test/api_integration/apis/monitoring/apm/fixtures/instance.json +++ b/x-pack/test/api_integration/apis/monitoring/apm/fixtures/instance.json @@ -899,6 +899,9 @@ "eventsEmitted": 6, "eventsDropped": 0, "bytesWritten": 10478, + "config": { + "container": false + }, "timeOfLastEvent": "2018-08-31T13:59:21.201Z" } } diff --git a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json index a000324d121e..48861c88e86a 100644 --- a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json +++ b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json @@ -98,6 +98,9 @@ "memTotal": null, "apms": { "total": null + }, + "config": { + "container": false } }, "alerts": { @@ -214,6 +217,9 @@ "memTotal": null, "apms": { "total": null + }, + "config": { + "container": false } }, "alerts": { @@ -326,6 +332,9 @@ "memTotal": null, "apms": { "total": null + }, + "config": { + "container": false } }, "alerts": { diff --git a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json index 15ff90547893..8fed03d9a8a3 100644 --- a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json +++ b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json @@ -112,6 +112,9 @@ "memTotal": null, "apms": { "total": null + }, + "config": { + "container": false } }, "isCcrEnabled": true, diff --git a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json index f0fe8c152b49..b3b5b38faedb 100644 --- a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json +++ b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json @@ -43,6 +43,9 @@ "memTotal": 0, "apms": { "total": 0 + }, + "config": { + "container": false } }, "isPrimary": false diff --git a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json index 7091e584344e..602e6d5c2be4 100644 --- a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json +++ b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json @@ -98,6 +98,9 @@ "memTotal": 0, "apms": { "total": 0 + }, + "config": { + "container": false } }, "alerts": { @@ -166,6 +169,9 @@ "memTotal": 0, "apms": { "total": 0 + }, + "config": { + "container": false } }, "alerts": {