Monitoring design touchup (#29479)

* UI design touchup for 7.0

* clean up chart titles and beta icon

* Make shard list wrap on IE11

* wrap table cells with much content

* fix title height above graphs on ie11

* update tests and snapshots

* update functional test for node detail

* fixing more functional tests
This commit is contained in:
Ryan Keairns 2019-01-31 14:32:04 -06:00 committed by GitHub
parent 0c86822e40
commit de92f9b1b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 386 additions and 384 deletions

View file

@ -1,7 +1,10 @@
@import '@elastic/eui/src/components/header/variables';
#monitoring-app {
// SASSTODO: We need background colors till more of Kibana is converted
.tab-no-data, .tab-overview, .tab-license {
// SASSTODO: We need background colors till more of Kibana is converted
monitoring-main {
background: $euiColorLightestShade;
height: calc(100vh - #{$euiHeaderChildSize});
}
// SASSTODO: PUI tooltips can be replaced with EuiToolTip
@ -15,14 +18,13 @@
}
// SASSTODO: Remove font awesome
.betaIcon {
.monTabs--icon {
margin-left: $euiSizeXS;
color: $euiColorDarkShade;
font-size: $euiFontSize;
}
// SASSTOD: Remove this, it comes from xpack_main/styles/main.less and was imported into monitoring
.xpack-breadcrumbs {
min-height: 37px;
padding: 8px 10px;
margin: 0;
.monCallout--meta {
margin-top: $euiSize;
}
}

View file

@ -13,7 +13,7 @@ describe('mapSeverity', () => {
const low = {
value: 'low',
color: 'warning',
iconType: 'dot',
iconType: 'iInCircle',
title: 'Low severity alert',
};
@ -30,7 +30,7 @@ describe('mapSeverity', () => {
const medium = {
value: 'medium',
color: 'warning',
iconType: 'dot',
iconType: 'alert',
title: 'Medium severity alert',
};
@ -47,7 +47,7 @@ describe('mapSeverity', () => {
const high = {
value: 'high',
color: 'danger',
iconType: 'dot',
iconType: 'bell',
title: 'High severity alert',
};

View file

@ -41,21 +41,21 @@ export function mapSeverity(severity) {
mapped = {
value: i18n.translate('xpack.monitoring.alerts.lowSeverityName', { defaultMessage: 'low' }),
color: 'warning',
iconType: 'dot'
iconType: 'iInCircle'
};
break;
case 1:
mapped = {
value: i18n.translate('xpack.monitoring.alerts.mediumSeverityName', { defaultMessage: 'medium' }),
color: 'warning',
iconType: 'dot'
iconType: 'alert'
};
break;
default: // severity >= 2000
mapped = {
value: i18n.translate('xpack.monitoring.alerts.highSeverityName', { defaultMessage: 'high' }),
color: 'danger',
iconType: 'dot'
iconType: 'bell'
};
break;
}

View file

@ -7,7 +7,7 @@
import React from 'react';
import { MonitoringTimeseriesContainer } from '../../chart';
import { formatMetric } from '../../../lib/format_number';
import { EuiFlexItem, EuiPage, EuiPageBody, EuiFlexGrid, EuiSpacer, EuiPageContent } from '@elastic/eui';
import { EuiFlexItem, EuiPage, EuiPageBody, EuiFlexGrid, EuiSpacer, EuiPageContent, EuiPanel } from '@elastic/eui';
import { injectI18n } from '@kbn/i18n/react';
import { SummaryStatus } from '../../summary_status';
@ -98,7 +98,7 @@ function BeatUi({ summary, metrics, intl, ...props }) {
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<SummaryStatus
metrics={summarytStatsTop}
data-test-subj="beatSummaryStatus01"
@ -107,15 +107,17 @@ function BeatUi({ summary, metrics, intl, ...props }) {
metrics={summarytStatsBot}
data-test-subj="beatSummaryStatus02"
/>
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -37,11 +37,12 @@ function MonitoringTimeseriesContainerUI({ series, onBrush, intl }) {
return (
<EuiFlexGroup direction="column" gutterSize="s">
<EuiFlexItem>
<EuiFlexGroup justifyContent="spaceBetween" alignItems="center" style={{ flexGrow: 0 }}>
<EuiFlexItem>
<EuiTitle tabIndex="0">
<Fragment>
<EuiFlexItem grow={false}>
<EuiFlexGroup gutterSize="s" alignItems="center">
<EuiFlexItem grow={false}>
<EuiTitle size="s" tabIndex="0">
<h2>
{ getTitle(series) }{ units ? ` (${units})` : '' }
<EuiScreenReaderOnly>
<span>
<FormattedMessage
@ -50,10 +51,7 @@ function MonitoringTimeseriesContainerUI({ series, onBrush, intl }) {
/>
</span>
</EuiScreenReaderOnly>
<h2>
{ getTitle(series) }{ units ? ` (${units})` : '' }
</h2>
</Fragment>
</h2>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem grow={false}>

View file

@ -18,7 +18,6 @@ import {
EuiTitle,
EuiButton,
EuiText,
EuiTextColor,
EuiSpacer,
EuiCallOut,
} from '@elastic/eui';
@ -62,17 +61,15 @@ function AlertsPanelUi({ alerts, changeUrl, intl }) {
changeUrl={changeUrl}
/>
<EuiText size="xs">
<p data-test-subj="alertMeta">
<EuiTextColor color="subdued">
<FormattedMessage
id="xpack.monitoring.cluster.overview.alertsPanel.lastCheckedTimeText"
defaultMessage="Last checked {updateDateTime} (triggered {duration} ago)"
values={{
updateDateTime: formatDateTimeLocal(item.update_timestamp),
duration: formatTimestampToDuration(item.timestamp, CALCULATE_DURATION_SINCE)
}}
/>
</EuiTextColor>
<p data-test-subj="alertMeta" className="monCallout--meta">
<FormattedMessage
id="xpack.monitoring.cluster.overview.alertsPanel.lastCheckedTimeText"
defaultMessage="Last checked {updateDateTime} (triggered {duration} ago)"
values={{
updateDateTime: formatDateTimeLocal(item.update_timestamp),
duration: formatTimestampToDuration(item.timestamp, CALCULATE_DURATION_SINCE)
}}
/>
</p>
</EuiText>
</EuiCallOut>
@ -85,13 +82,13 @@ function AlertsPanelUi({ alerts, changeUrl, intl }) {
<div data-test-subj="clusterAlertsContainer">
<EuiFlexGroup justifyContent="spaceBetween">
<EuiFlexItem grow={false}>
<EuiTitle>
<h2>
<EuiTitle size="s">
<h4>
<FormattedMessage
id="xpack.monitoring.cluster.overview.alertsPanel.topClusterTitle"
defaultMessage="Top cluster alerts"
/>
</h2>
</h4>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem grow={false}>

View file

@ -39,7 +39,7 @@ function ApmPanelUi(props) {
url="apm"
title={props.intl.formatMessage({ id: 'xpack.monitoring.cluster.overview.apmPanel.apmTitle', defaultMessage: 'APM' })}
>
<EuiFlexGrid columns={2}>
<EuiFlexGrid columns={4}>
<EuiFlexItem>
<EuiPanel paddingSize="m">
<EuiTitle size="s">

View file

@ -52,7 +52,7 @@ function BeatsPanelUi(props) {
url="beats"
title={props.intl.formatMessage({ id: 'xpack.monitoring.cluster.overview.beatsPanel.beatsTitle', defaultMessage: 'Beats' })}
>
<EuiFlexGrid columns={2}>
<EuiFlexGrid columns={4}>
<EuiFlexItem>
<EuiPanel paddingSize="m">
<EuiTitle size="s">

View file

@ -82,7 +82,7 @@ function ElasticsearchPanelUi(props) {
title="Elasticsearch"
extras={licenseText}
>
<EuiFlexGrid columns={3}>
<EuiFlexGrid columns={4}>
<EuiFlexItem>
<EuiPanel paddingSize="m">

View file

@ -41,7 +41,7 @@ function KibanaPanelUi(props) {
title={props.intl.formatMessage({
id: 'xpack.monitoring.cluster.overview.kibanaPanel.kibanaTitle', defaultMessage: 'Kibana' })}
>
<EuiFlexGrid columns={2}>
<EuiFlexGrid columns={4}>
<EuiFlexItem>
<EuiPanel paddingSize="m">
<EuiTitle size="s">

View file

@ -11,6 +11,7 @@ import { LOGSTASH } from '../../../../common/constants';
import {
EuiFlexGrid,
EuiFlexGroup,
EuiFlexItem,
EuiLink,
EuiTitle,
@ -19,7 +20,7 @@ import {
EuiDescriptionListTitle,
EuiDescriptionListDescription,
EuiHorizontalRule,
EuiToolTip
EuiIconTip,
} from '@elastic/eui';
import { FormattedMessage, injectI18n } from '@kbn/i18n/react';
@ -39,7 +40,7 @@ function LogstashPanelUi(props) {
title={props.intl.formatMessage({
id: 'xpack.monitoring.cluster.overview.logstashPanel.logstashTitle', defaultMessage: 'Logstash' })}
>
<EuiFlexGrid columns={3}>
<EuiFlexGrid columns={4}>
<EuiFlexItem>
<EuiPanel paddingSize="m">
<EuiTitle size="s">
@ -128,33 +129,39 @@ function LogstashPanelUi(props) {
<EuiFlexItem>
<EuiPanel paddingSize="m">
<EuiTitle size="s">
<h3>
<EuiLink
onClick={goToPipelines}
data-test-subj="lsPipelines"
aria-label={props.intl.formatMessage({
id: 'xpack.monitoring.cluster.overview.logstashPanel.pipelineCountLinkAriaLabel',
defaultMessage: 'Logstash Pipelines (beta feature): {pipelineCount}' },
{ pipelineCount: props.pipeline_count }
)}
>
<EuiToolTip
content={props.intl.formatMessage({
id: 'xpack.monitoring.cluster.overview.logstashPanel.betaFeatureTooltip',
defaultMessage: 'Beta Feature' })}
position="bottom"
>
<span className="kuiIcon fa-flask betaIcon" />
</EuiToolTip>
<FormattedMessage
id="xpack.monitoring.cluster.overview.logstashPanel.pipelinesCountLinkLabel"
defaultMessage="Pipelines: {pipelineCount}"
values={{ pipelineCount: (<span data-test-subj="number_of_logstash_pipelines">{ props.pipeline_count }</span>) }}
/>
</EuiLink>
</h3>
</EuiTitle>
<EuiFlexGroup alignItems="center" gutterSize="m">
<EuiFlexItem grow={false}>
<EuiTitle size="s">
<h3>
<EuiLink
onClick={goToPipelines}
data-test-subj="lsPipelines"
aria-label={props.intl.formatMessage({
id: 'xpack.monitoring.cluster.overview.logstashPanel.pipelineCountLinkAriaLabel',
defaultMessage: 'Logstash Pipelines (beta feature): {pipelineCount}' },
{ pipelineCount: props.pipeline_count }
)}
>
<FormattedMessage
id="xpack.monitoring.cluster.overview.logstashPanel.pipelinesCountLinkLabel"
defaultMessage="Pipelines: {pipelineCount}"
values={{ pipelineCount: (<span data-test-subj="number_of_logstash_pipelines">{ props.pipeline_count }</span>) }}
/>
</EuiLink>
</h3>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiIconTip
content={props.intl.formatMessage({
id: 'xpack.monitoring.cluster.overview.logstashPanel.betaFeatureTooltip',
defaultMessage: 'Beta feature' })}
position="bottom"
type="beaker"
aria-label="Beta feature"
/>
</EuiFlexItem>
</EuiFlexGroup>
<EuiHorizontalRule margin="m" />
<EuiDescriptionList type="column">
<EuiDescriptionListTitle>

View file

@ -9,6 +9,7 @@ import {
EuiPage,
EuiPageContent,
EuiPageBody,
EuiPanel,
EuiSpacer,
EuiFlexGrid,
EuiFlexItem,
@ -38,17 +39,19 @@ export const AdvancedIndex = ({
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<IndexDetailStatus stats={indexSummary} />
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -9,6 +9,7 @@ import {
EuiPage,
EuiPageContent,
EuiPageBody,
EuiPanel,
EuiSpacer,
EuiFlexGrid,
EuiFlexItem,
@ -36,17 +37,19 @@ export const Index = ({
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<IndexDetailStatus stats={indexSummary} />
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -16,6 +16,7 @@ import {
EuiPage,
EuiPageContent,
EuiPageBody,
EuiPanel,
EuiSwitch,
EuiSpacer,
} from '@elastic/eui';
@ -148,9 +149,11 @@ const ElasticsearchIndicesUI = ({
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={clusterStatus} />
<EuiSpacer size="xs"/>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiSwitch
label={(
<FormattedMessage

View file

@ -9,6 +9,7 @@ import {
EuiPage,
EuiPageContent,
EuiPageBody,
EuiPanel,
EuiSpacer,
EuiFlexGrid,
EuiFlexItem,
@ -42,17 +43,19 @@ export const AdvancedNode = ({
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<NodeDetailStatus stats={nodeSummary} />
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -12,6 +12,7 @@ import {
EuiSpacer,
EuiFlexGrid,
EuiFlexItem,
EuiPanel,
} from '@elastic/eui';
import { NodeDetailStatus } from '../node_detail_status';
import { MonitoringTimeseriesContainer } from '../../chart';
@ -36,17 +37,19 @@ export const Node = ({
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<NodeDetailStatus stats={nodeSummary} />
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -10,94 +10,68 @@ exports[`Node Listing Metric Cell should format N/A as the metric for an offline
exports[`Node Listing Metric Cell should format a non-percentage metric 1`] = `
<div
class="euiStat euiStat--leftAligned"
class="euiFlexGroup euiFlexGroup--gutterMedium euiFlexGroup--alignItemsCenter euiFlexGroup--directionRow euiFlexGroup--responsive euiFlexGroup--wrap"
intl="[object Object]"
>
<div
class="euiText euiText--small euiStat__description"
class="euiFlexItem euiFlexItem--flexGrowZero"
>
<p />
<h4
class="euiTitle euiTitle--medium"
>
206.3 GB 
<span
class="fa fa-long-arrow-down"
/>
</h4>
</div>
<p
class="euiTitle euiTitle--large euiStat__title"
/>
<div
class="euiFlexGroup euiFlexGroup--gutterLarge euiFlexGroup--alignItemsCenter euiFlexGroup--directionRow euiFlexGroup--responsive"
intl="[object Object]"
class="euiFlexItem euiFlexItem--flexGrowZero"
>
<div
class="euiFlexItem euiFlexItem--flexGrowZero"
class="euiText euiText--extraSmall"
>
<h4
class="euiTitle euiTitle--medium"
>
206.3 GB 
<span
class="fa fa-long-arrow-down"
/>
</h4>
206.5 GB max
</div>
<div
class="euiFlexItem euiFlexItem--flexGrowZero"
class="euiText euiText--extraSmall"
>
<div
class="euiText euiText--extraSmall"
>
206.5 GB max
</div>
<div
class="euiText euiText--extraSmall"
>
206.3 GB min
</div>
206.3 GB min
</div>
</div>
<p />
</div>
`;
exports[`Node Listing Metric Cell should format a percentage metric 1`] = `
<div
class="euiStat euiStat--leftAligned"
class="euiFlexGroup euiFlexGroup--gutterMedium euiFlexGroup--alignItemsCenter euiFlexGroup--directionRow euiFlexGroup--responsive euiFlexGroup--wrap"
intl="[object Object]"
>
<div
class="euiText euiText--small euiStat__description"
class="euiFlexItem euiFlexItem--flexGrowZero"
>
<p />
<h4
class="euiTitle euiTitle--medium"
>
0% 
<span
class="fa fa-long-arrow-down"
/>
</h4>
</div>
<p
class="euiTitle euiTitle--large euiStat__title"
/>
<div
class="euiFlexGroup euiFlexGroup--gutterLarge euiFlexGroup--alignItemsCenter euiFlexGroup--directionRow euiFlexGroup--responsive"
intl="[object Object]"
class="euiFlexItem euiFlexItem--flexGrowZero"
>
<div
class="euiFlexItem euiFlexItem--flexGrowZero"
class="euiText euiText--extraSmall"
>
<h4
class="euiTitle euiTitle--medium"
>
0% 
<span
class="fa fa-long-arrow-down"
/>
</h4>
2% max
</div>
<div
class="euiFlexItem euiFlexItem--flexGrowZero"
class="euiText euiText--extraSmall"
>
<div
class="euiText euiText--extraSmall"
>
2% max
</div>
<div
class="euiText euiText--extraSmall"
>
0% min
</div>
0% min
</div>
</div>
<p />
</div>
`;

View file

@ -7,7 +7,7 @@
import React from 'react';
import { get } from 'lodash';
import { formatMetric } from '../../../lib/format_number';
import { EuiStat, EuiText, EuiTitle, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { EuiText, EuiTitle, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
function OfflineCell() {
@ -38,40 +38,35 @@ function MetricCell({ isOnline, metric = {}, isPercent, ...props }) {
const format = get(metric, 'metric.format');
return (
<EuiStat
description=""
title={(
<EuiFlexGroup alignItems="center" {...props}>
<EuiFlexItem grow={false}>
<EuiTitle size="m">
<h4>
{ metricVal(lastVal, format, isPercent) }
&nbsp;
<span className={`fa fa-long-arrow-${getSlopeArrow(slope)}`} />
</h4>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiText size="xs">
{i18n.translate('xpack.monitoring.elasticsearch.nodes.cells.maxText', {
defaultMessage: '{metric} max',
values: {
metric: metricVal(maxVal, format, isPercent)
}
})}
</EuiText>
<EuiText size="xs">
{i18n.translate('xpack.monitoring.elasticsearch.nodes.cells.minText', {
defaultMessage: '{metric} min',
values: {
metric: metricVal(minVal, format, isPercent)
}
})}
</EuiText>
</EuiFlexItem>
</EuiFlexGroup>
)}
/>
<EuiFlexGroup gutterSize="m" alignItems="center" wrap {...props}>
<EuiFlexItem grow={false}>
<EuiTitle size="m">
<h4>
{ metricVal(lastVal, format, isPercent) }
&nbsp;
<span className={`fa fa-long-arrow-${getSlopeArrow(slope)}`} />
</h4>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiText size="xs">
{i18n.translate('xpack.monitoring.elasticsearch.nodes.cells.maxText', {
defaultMessage: '{metric} max',
values: {
metric: metricVal(maxVal, format, isPercent)
}
})}
</EuiText>
<EuiText size="xs">
{i18n.translate('xpack.monitoring.elasticsearch.nodes.cells.minText', {
defaultMessage: '{metric} min',
values: {
metric: metricVal(minVal, format, isPercent)
}
})}
</EuiText>
</EuiFlexItem>
</EuiFlexGroup>
);
}

View file

@ -17,6 +17,7 @@ import {
EuiPage,
EuiPageContent,
EuiPageBody,
EuiPanel,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { injectI18n } from '@kbn/i18n/react';
@ -207,9 +208,11 @@ function ElasticsearchNodesUI({ clusterStatus, nodes, showCgroupMetricsElasticse
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={clusterStatus} />
<EuiSpacer size="m"/>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiMonitoringTable
className="elasticsearchNodesTable"
rows={nodes}

View file

@ -8,7 +8,7 @@ import React from 'react';
import { ClusterStatus } from '../cluster_status';
import { ShardActivity } from '../shard_activity';
import { MonitoringTimeseriesContainer } from '../../chart';
import { EuiPage, EuiFlexGrid, EuiFlexItem, EuiSpacer, EuiPageBody, EuiPageContent } from '@elastic/eui';
import { EuiPage, EuiFlexGrid, EuiFlexItem, EuiPanel, EuiSpacer, EuiPageBody, EuiPageContent } from '@elastic/eui';
export function ElasticsearchOverview({
clusterStatus,
@ -26,17 +26,19 @@ export function ElasticsearchOverview({
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={clusterStatus} />
<EuiSpacer/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -11,14 +11,14 @@ import { SourceTooltip } from './source_tooltip';
export const SourceDestination = (props) => {
const { sourceName, targetName, targetTransportAddress } = props;
return (
<EuiFlexGroup>
<EuiFlexGroup gutterSize="s" alignItems="center" wrap>
<EuiFlexItem grow={false}>
<SourceTooltip {...props}>
{sourceName}
</SourceTooltip>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiIcon type="arrowRight" />
<EuiIcon type="arrowRight" size="s" />
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiToolTip

View file

@ -28,13 +28,11 @@ monitoring-shard-allocation {
vertical-align: middle;
width: 150px;
}
.children {
display: flex;
flex-flow: row wrap;
}
.child {
display: flex;
float: left;
align-self: center;
&.index {
border-left: $euiSizeXS solid $euiColorSuccess;
&.red {
@ -48,7 +46,7 @@ monitoring-shard-allocation {
margin: 5px;
.title {
padding: 5px 7px;
float: left;
display: inline-block;
text-align: center;
font-size: 12px;
font: 10px sans-serif;
@ -83,6 +81,7 @@ monitoring-shard-allocation {
font: 10px sans-serif;
border-left: 1px solid $euiColorEmptyShade;
position: relative;
display: inline-block;
.shard-tooltip {
padding: 5px;

View file

@ -63,7 +63,7 @@ export function License(props) {
expiryDate={expiryDate}
/>
<EuiSpacer size="l" />
<EuiSpacer />
<LicenseUpdateInfoForPrimary {...props} />
<LicenseUpdateInfoForRemote {...props} />

View file

@ -5,7 +5,7 @@
*/
import React, { PureComponent } from 'react';
import { EuiPage, EuiLink, EuiPageBody, EuiPageContent, EuiSpacer } from '@elastic/eui';
import { EuiPage, EuiLink, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer } from '@elastic/eui';
import { formatPercentageUsage, formatNumber } from '../../../lib/format_number';
import { ClusterStatus } from '..//cluster_status';
import { EuiMonitoringTable } from '../../table';
@ -125,9 +125,11 @@ class ListingUI extends PureComponent {
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={stats} />
<EuiSpacer size="m"/>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiMonitoringTable
className="logstashNodesTable"
rows={flattenedData}

View file

@ -5,7 +5,7 @@
*/
import React, { PureComponent } from 'react';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { DetailStatus } from '../detail_status';
import { MonitoringTimeseriesContainer } from '../../chart';
@ -25,17 +25,19 @@ export class Node extends PureComponent {
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<DetailStatus stats={stats}/>
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...rest}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -5,7 +5,7 @@
*/
import React, { PureComponent } from 'react';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { ClusterStatus } from '../cluster_status';
import { MonitoringTimeseriesContainer } from '../../chart';
@ -21,17 +21,19 @@ export class Overview extends PureComponent {
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={stats} />
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
{...props}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -7,7 +7,7 @@
import React, { Component } from 'react';
import moment from 'moment';
import { partialRight } from 'lodash';
import { EuiPage, EuiLink, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiLink, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { formatMetric } from '../../../lib/format_number';
import { ClusterStatus } from '../cluster_status';
import { Sparkline } from 'plugins/monitoring/components/sparkline';
@ -148,9 +148,11 @@ class PipelineListingUI extends Component {
return (
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
{this.renderStats()}
<EuiSpacer size="m"/>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiMonitoringTable
className={className || 'logstashNodesTable'}
rows={data}

View file

@ -17,7 +17,7 @@ exports[`Summary Status Component should allow label to be optional 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Status:
Status
</p>
</div>
<p
@ -67,7 +67,7 @@ exports[`Summary Status Component should allow label to be optional 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Documents:
Documents
</p>
</div>
<p
@ -78,9 +78,6 @@ exports[`Summary Status Component should allow label to be optional 1`] = `
</div>
</div>
</div>
<hr
class="euiHorizontalRule euiHorizontalRule--full euiHorizontalRule--marginLarge"
/>
</div>
`;
@ -102,7 +99,7 @@ exports[`Summary Status Component should allow status to be optional 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Free Disk Space:
Free Disk Space
</p>
</div>
<p
@ -123,7 +120,7 @@ exports[`Summary Status Component should allow status to be optional 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Documents:
Documents
</p>
</div>
<p
@ -134,9 +131,6 @@ exports[`Summary Status Component should allow status to be optional 1`] = `
</div>
</div>
</div>
<hr
class="euiHorizontalRule euiHorizontalRule--full euiHorizontalRule--marginLarge"
/>
</div>
`;
@ -157,7 +151,7 @@ exports[`Summary Status Component should render metrics in a summary bar 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Status:
Status
</p>
</div>
<p
@ -188,7 +182,7 @@ exports[`Summary Status Component should render metrics in a summary bar 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Free Disk Space:
Free Disk Space
</p>
</div>
<p
@ -209,7 +203,7 @@ exports[`Summary Status Component should render metrics in a summary bar 1`] = `
class="euiText euiText--small euiStat__description"
>
<p>
Documents:
Documents
</p>
</div>
<p
@ -220,8 +214,5 @@ exports[`Summary Status Component should render metrics in a summary bar 1`] = `
</div>
</div>
</div>
<hr
class="euiHorizontalRule euiHorizontalRule--full euiHorizontalRule--marginLarge"
/>
</div>
`;

View file

@ -7,7 +7,7 @@
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { isEmpty, capitalize } from 'lodash';
import { EuiFlexGroup, EuiFlexItem, EuiStat, EuiHorizontalRule } from '@elastic/eui';
import { EuiFlexGroup, EuiFlexItem, EuiStat } from '@elastic/eui';
import { StatusIcon } from '../status_icon/index.js';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n/react';
@ -22,7 +22,7 @@ const wrapChild = ({ label, value, ...props }, index) => (
title={value}
titleSize="s"
textAlign="left"
description={label ? `${label}:` : ''}
description={label ? `${label}` : ''}
/>
</EuiFlexItem>
);
@ -70,7 +70,7 @@ const StatusIndicator = ({ status, isOnline, IconComponent }) => {
titleSize="s"
textAlign="left"
description={i18n.translate('xpack.monitoring.summaryStatus.statusDescription', {
defaultMessage: 'Status:',
defaultMessage: 'Status',
})}
/>
</EuiFlexItem>
@ -84,7 +84,6 @@ export function SummaryStatus({ metrics, status, isOnline, IconComponent = Defau
<StatusIndicator status={status} IconComponent={IconComponent} isOnline={isOnline} />
{metrics.map(wrapChild)}
</EuiFlexGroup>
<EuiHorizontalRule/>
</div>
);
}

View file

@ -6,13 +6,6 @@
margin-bottom: $euiSize;
}
.monChart__tooltipTrigger {
float: right;
position: relative;
top: $euiSizeXS;
right: $euiSize;
}
.monChart__tooltipLabel,
.monChart__tooltipValue {
text-align: left;

View file

@ -17,6 +17,8 @@ import {
EuiPage,
EuiPageContent,
EuiPageBody,
EuiPanel,
EuiSpacer,
} from '@elastic/eui';
import { ClusterStatus } from '../../../components/elasticsearch/cluster_status';
import { i18n } from '@kbn/i18n';
@ -131,8 +133,11 @@ uiModule.directive('monitoringMlListing', kbnUrl => {
<I18nProvider>
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={scope.status} />
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiMonitoringTable
className="mlJobsTable"
rows={jobs}

View file

@ -194,11 +194,11 @@
class="kuiLocalTab"
ng-class="{'kuiLocalTab-isSelected': monitoringMain.isActiveTab('pipelines')}"
>
<span class="kuiIcon fa-flask betaIcon" tooltip="Beta Feature" />
<span
i18n-id="xpack.monitoring.logstashNavigation.pipelinesLinkText"
i18n-default-message="Pipelines"
></span>
<span class="kuiIcon fa-flask monTabs--icon" tooltip="Beta feature" />
</a>
<a
ng-if="monitoringMain.instance"
@ -215,11 +215,11 @@
class="kuiLocalTab"
ng-class="{'kuiLocalTab-isSelected': monitoringMain.page === 'pipelines'}"
>
<span class="kuiIcon fa-flask betaIcon" tooltip="Beta Feature" />
<span
i18n-id="xpack.monitoring.logstashNavigation.instance.pipelinesLinkText"
i18n-default-message="Pipelines"
></span>
<span class="kuiIcon fa-flask fa-sm monTabs--icon" tooltip="Beta feature" />
</a>
<a
ng-if="monitoringMain.instance"

View file

@ -14,7 +14,7 @@ import { ajaxErrorHandlersProvider } from 'plugins/monitoring/lib/ajax_error_han
import { routeInitProvider } from 'plugins/monitoring/lib/route_init';
import template from './index.html';
import { timefilter } from 'ui/timefilter';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGrid, EuiFlexItem, EuiPanel } from '@elastic/eui';
import { MonitoringTimeseriesContainer } from '../../../components/chart';
import { DetailStatus } from 'plugins/monitoring/components/kibana/detail_status';
import { I18nProvider } from '@kbn/i18n/react';
@ -74,51 +74,55 @@ uiRoutes.when('/kibana/instances/:uuid', {
<I18nProvider>
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<DetailStatus stats={data.kibanaSummary} />
<EuiSpacer size="m"/>
<EuiFlexGroup>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer
series={data.metrics.kibana_requests}
onBrush={this.onBrush}
/>
<EuiSpacer />
</EuiFlexItem>
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer
series={data.metrics.kibana_response_times}
onBrush={this.onBrush}
/>
<EuiSpacer />
</EuiFlexItem>
</EuiFlexGroup>
<EuiFlexGroup>
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer
series={data.metrics.kibana_memory}
onBrush={this.onBrush}
/>
<EuiSpacer />
</EuiFlexItem>
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer
series={data.metrics.kibana_average_concurrent_connections}
onBrush={this.onBrush}
/>
<EuiSpacer />
</EuiFlexItem>
</EuiFlexGroup>
<EuiFlexGroup>
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer
series={data.metrics.kibana_os_load}
onBrush={this.onBrush}
/>
<EuiSpacer />
</EuiFlexItem>
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer
series={data.metrics.kibana_process_delay}
onBrush={this.onBrush}
/>
<EuiSpacer />
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexGrid>
</EuiPageContent>
</EuiPageBody>
</EuiPage>

View file

@ -11,7 +11,7 @@ import { routeInitProvider } from 'plugins/monitoring/lib/route_init';
import { MonitoringViewBaseEuiTableController } from '../../';
import { getPageData } from './get_page_data';
import template from './index.html';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiLink } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiLink } from '@elastic/eui';
import { ClusterStatus } from '../../../components/kibana/cluster_status';
import { EuiMonitoringTable } from '../../../components/table';
import { KibanaStatusIcon } from '../../../components/kibana/status_icon';
@ -148,9 +148,11 @@ uiRoutes.when('/kibana/instances', {
<I18nProvider>
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={$scope.pageData.clusterStatus} />
<EuiSpacer size="m"/>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiMonitoringTable
className="kibanaInstancesTable"
rows={dataFlattened}

View file

@ -14,7 +14,7 @@ import { ajaxErrorHandlersProvider } from 'plugins/monitoring/lib/ajax_error_han
import { routeInitProvider } from 'plugins/monitoring/lib/route_init';
import template from './index.html';
import { timefilter } from 'ui/timefilter';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { ClusterStatus } from '../../../components/kibana/cluster_status';
import { I18nProvider } from '@kbn/i18n/react';
import { MonitoringViewBaseController } from '../../base_controller';
@ -70,9 +70,11 @@ uiRoutes.when('/kibana', {
<I18nProvider>
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<ClusterStatus stats={data.clusterStatus} />
<EuiSpacer size="m"/>
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGroup>
<EuiFlexItem grow={true}>
<MonitoringTimeseriesContainer

View file

@ -15,7 +15,7 @@ import template from './index.html';
import { timefilter } from 'ui/timefilter';
import { MonitoringViewBaseController } from '../../../base_controller';
import { DetailStatus } from 'plugins/monitoring/components/logstash/detail_status';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { MonitoringTimeseriesContainer } from '../../../../components/chart';
import { I18nProvider } from '@kbn/i18n/react';
@ -85,18 +85,20 @@ uiRoutes.when('/logstash/node/:uuid/advanced', {
<I18nProvider>
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<DetailStatus stats={data.nodeSummary}/>
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
onBrush={this.onBrush}
{...data}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -14,7 +14,7 @@ import { routeInitProvider } from 'plugins/monitoring/lib/route_init';
import template from './index.html';
import { timefilter } from 'ui/timefilter';
import { DetailStatus } from 'plugins/monitoring/components/logstash/detail_status';
import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { EuiPage, EuiPageBody, EuiPageContent, EuiPanel, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui';
import { MonitoringTimeseriesContainer } from '../../../components/chart';
import { I18nProvider } from '@kbn/i18n/react';
import { MonitoringViewBaseController } from '../../base_controller';
@ -86,18 +86,20 @@ uiRoutes.when('/logstash/node/:uuid', {
<I18nProvider>
<EuiPage>
<EuiPageBody>
<EuiPageContent>
<EuiPanel>
<DetailStatus stats={data.nodeSummary}/>
<EuiSpacer size="m"/>
<EuiFlexGrid columns={2} gutterSize="none">
</EuiPanel>
<EuiSpacer size="m" />
<EuiPageContent>
<EuiFlexGrid columns={2} gutterSize="s">
{metricsToShow.map((metric, index) => (
<EuiFlexItem key={index} style={{ width: '50%' }}>
<EuiFlexItem key={index}>
<MonitoringTimeseriesContainer
series={metric}
onBrush={this.onBrush}
{...data}
/>
<EuiSpacer size="m"/>
<EuiSpacer />
</EuiFlexItem>
))}
</EuiFlexGrid>

View file

@ -36,17 +36,17 @@ export default function ({ getService, getPageObjects }) {
it('cluster status bar shows correct information', async () => {
expect(await detail.getSummary()).to.eql({
name: 'Name:\ntsullivan.local-1-17',
version: 'Version:\n7.0.0-alpha1',
type: 'Type:\nDuckbeat',
host: 'Host:\ntsullivan.local',
output: 'Output:\nElasticsearch',
configReloads: 'Config reloads:\n0',
uptime: 'Uptime:\n6 minutes',
eventsTotal: 'Events total:\n17',
eventsEmitted: 'Events emitted:\n17',
eventsDropped: 'Events dropped:\n0',
bytesWritten: 'Bytes sent:\n18.3 KB',
name: 'Name\ntsullivan.local-1-17',
version: 'Version\n7.0.0-alpha1',
type: 'Type\nDuckbeat',
host: 'Host\ntsullivan.local',
output: 'Output\nElasticsearch',
configReloads: 'Config reloads\n0',
uptime: 'Uptime\n6 minutes',
eventsTotal: 'Events total\n17',
eventsEmitted: 'Events emitted\n17',
eventsDropped: 'Events dropped\n0',
bytesWritten: 'Bytes sent\n18.3 KB',
});
});

View file

@ -39,8 +39,8 @@ export default function ({ getService, getPageObjects }) {
duckbeat: 1,
sheepbeat: 1,
winlogbeat: 1,
totalEvents: 'Total Events:\n699.9k',
bytesSent: 'Bytes Sent:\n427.9 MB',
totalEvents: 'Total Events\n699.9k',
bytesSent: 'Bytes Sent\n427.9 MB',
});
});

View file

@ -43,8 +43,8 @@ export default function ({ getService, getPageObjects }) {
duckbeat: 1,
sheepbeat: 1,
winlogbeat: 1,
totalEvents: 'Total Events:\n699.9k',
bytesSent: 'Bytes Sent:\n427.9 MB',
totalEvents: 'Total Events\n699.9k',
bytesSent: 'Bytes Sent\n427.9 MB',
});
});

View file

@ -42,11 +42,11 @@ export default function ({ getService, getPageObjects }) {
await indicesList.clickRowByName('avocado-tweets-2017.10.02');
expect(await indexDetail.getSummary()).to.eql({
dataSize: 'Total:\n8.8 MB',
dataSizePrimaries: 'Primaries:\n4.4 MB',
documentCount: 'Documents:\n628',
totalShards: 'Total Shards:\n10',
unassignedShards: 'Unassigned Shards:\n0',
dataSize: 'Total\n8.8 MB',
dataSizePrimaries: 'Primaries\n4.4 MB',
documentCount: 'Documents\n628',
totalShards: 'Total Shards\n10',
unassignedShards: 'Unassigned Shards\n0',
health: 'Health: green',
});
});
@ -55,11 +55,11 @@ export default function ({ getService, getPageObjects }) {
await indicesList.clickRowByName('relocation_test');
expect(await indexDetail.getSummary()).to.eql({
dataSize: 'Total:\n4.8 KB',
dataSizePrimaries: 'Primaries:\n4.8 KB',
documentCount: 'Documents:\n1',
totalShards: 'Total Shards:\n1',
unassignedShards: 'Unassigned Shards:\n0',
dataSize: 'Total\n4.8 KB',
dataSizePrimaries: 'Primaries\n4.8 KB',
documentCount: 'Documents\n1',
totalShards: 'Total Shards\n1',
unassignedShards: 'Unassigned Shards\n0',
health: 'Health: green',
});
});
@ -68,11 +68,11 @@ export default function ({ getService, getPageObjects }) {
await indicesList.clickRowByName('phone-home');
expect(await indexDetail.getSummary()).to.eql({
dataSize: 'Total:\n1.2 MB',
dataSizePrimaries: 'Primaries:\n657.6 KB',
documentCount: 'Documents:\n10',
totalShards: 'Total Shards:\n10',
unassignedShards: 'Unassigned Shards:\n1',
dataSize: 'Total\n1.2 MB',
dataSizePrimaries: 'Primaries\n657.6 KB',
documentCount: 'Documents\n10',
totalShards: 'Total Shards\n10',
unassignedShards: 'Unassigned Shards\n1',
health: 'Health: yellow',
});
});

View file

@ -32,13 +32,13 @@ export default function ({ getService, getPageObjects }) {
it('should have an Elasticsearch cluster summary with correct info', async () => {
expect(await esClusterSummaryStatus.getContent()).to.eql({
nodesCount: 'Nodes:\n1',
indicesCount: 'Indices:\n19',
memory: 'Memory:\n267.7 MB / 676.8 MB',
totalShards: 'Total Shards:\n46',
unassignedShards: 'Unassigned Shards:\n23',
documentCount: 'Documents:\n4,535',
dataSize: 'Data:\n8.6 MB',
nodesCount: 'Nodes\n1',
indicesCount: 'Indices\n19',
memory: 'Memory\n267.7 MB / 676.8 MB',
totalShards: 'Total Shards\n46',
unassignedShards: 'Unassigned Shards\n23',
documentCount: 'Documents\n4,535',
dataSize: 'Data\n8.6 MB',
health: 'Health: red',
});
});

View file

@ -40,14 +40,14 @@ export default function ({ getService, getPageObjects }) {
await nodesList.clickRowByResolver('jUT5KdxfRbORSCWkb5zjmA');
expect(await nodeDetail.getSummary()).to.eql({
transportAddress: 'Transport Address:\n127.0.0.1:9300',
jvmHeap: 'JVM Heap:\n29%',
freeDiskSpace: 'Free Disk Space:\n173.9 GB',
documentCount: 'Documents:\n24.8k',
dataSize: 'Data:\n50.4 MB',
indicesCount: 'Indices:\n20',
shardsCount: 'Shards:\n38',
nodeType: 'Type:\nMaster Node',
transportAddress: 'Transport Address\n127.0.0.1:9300',
jvmHeap: 'JVM Heap\n29%',
freeDiskSpace: 'Free Disk Space\n173.9 GB',
documentCount: 'Documents\n24.8k',
dataSize: 'Data\n50.4 MB',
indicesCount: 'Indices\n20',
shardsCount: 'Shards\n38',
nodeType: 'Type\nMaster Node',
status: 'Status: Online',
});
});
@ -56,14 +56,14 @@ export default function ({ getService, getPageObjects }) {
await nodesList.clickRowByResolver('bwQWH-7IQY-mFPpfoaoFXQ');
expect(await nodeDetail.getSummary()).to.eql({
transportAddress: 'Transport Address:\n127.0.0.1:9302',
jvmHeap: 'JVM Heap:\n17%',
freeDiskSpace: 'Free Disk Space:\n173.9 GB',
documentCount: 'Documents:\n240',
dataSize: 'Data:\n1.4 MB',
indicesCount: 'Indices:\n4',
shardsCount: 'Shards:\n4',
nodeType: 'Type:\nNode',
transportAddress: 'Transport Address\n127.0.0.1:9302',
jvmHeap: 'JVM Heap\n17%',
freeDiskSpace: 'Free Disk Space\n173.9 GB',
documentCount: 'Documents\n240',
dataSize: 'Data\n1.4 MB',
indicesCount: 'Indices\n4',
shardsCount: 'Shards\n4',
nodeType: 'Type\nNode',
status: 'Status: Online',
});
});
@ -91,14 +91,14 @@ export default function ({ getService, getPageObjects }) {
await nodesList.clickRowByResolver('1jxg5T33TWub-jJL4qP0Wg');
expect(await nodeDetail.getSummary()).to.eql({
transportAddress: 'Transport Address:\n127.0.0.1:9302',
jvmHeap: 'JVM Heap:\nN/A',
freeDiskSpace: 'Free Disk Space:\nN/A',
documentCount: 'Documents:\nN/A',
dataSize: 'Data:\nN/A',
indicesCount: 'Indices:\nN/A',
shardsCount: 'Shards:\nN/A',
nodeType: 'Type:\nOffline Node',
transportAddress: 'Transport Address\n127.0.0.1:9302',
jvmHeap: 'JVM Heap\nN/A',
freeDiskSpace: 'Free Disk Space\nN/A',
documentCount: 'Documents\nN/A',
dataSize: 'Data\nN/A',
indicesCount: 'Indices\nN/A',
shardsCount: 'Shards\nN/A',
nodeType: 'Type\nOffline Node',
status: 'Status: Offline',
});
});

View file

@ -33,13 +33,13 @@ export default function ({ getService, getPageObjects }) {
it('should have an Elasticsearch Cluster Summary Status with correct info', async () => {
expect(await esClusterSummaryStatus.getContent()).to.eql({
nodesCount: 'Nodes:\n2',
indicesCount: 'Indices:\n20',
memory: 'Memory:\n696.6 MB / 1.3 GB',
totalShards: 'Total Shards:\n79',
unassignedShards: 'Unassigned Shards:\n7',
documentCount: 'Documents:\n25,758',
dataSize: 'Data:\n100.0 MB',
nodesCount: 'Nodes\n2',
indicesCount: 'Indices\n20',
memory: 'Memory\n696.6 MB / 1.3 GB',
totalShards: 'Total Shards\n79',
unassignedShards: 'Unassigned Shards\n7',
documentCount: 'Documents\n25,758',
dataSize: 'Data\n100.0 MB',
health: 'Health: yellow',
});
});
@ -203,13 +203,13 @@ export default function ({ getService, getPageObjects }) {
it('should have an Elasticsearch Cluster Summary Status with correct info', async () => {
expect(await esClusterSummaryStatus.getContent()).to.eql({
nodesCount: 'Nodes:\n3',
indicesCount: 'Indices:\n20',
memory: 'Memory:\n575.3 MB / 2.0 GB',
totalShards: 'Total Shards:\n80',
unassignedShards: 'Unassigned Shards:\n5',
documentCount: 'Documents:\n25,927',
dataSize: 'Data:\n101.6 MB',
nodesCount: 'Nodes\n3',
indicesCount: 'Indices\n20',
memory: 'Memory\n575.3 MB / 2.0 GB',
totalShards: 'Total Shards\n80',
unassignedShards: 'Unassigned Shards\n5',
documentCount: 'Documents\n25,927',
dataSize: 'Data\n101.6 MB',
health: 'Health: yellow',
});
});

View file

@ -32,13 +32,13 @@ export default function ({ getService, getPageObjects }) {
it('should have an Elasticsearch Cluster Summary Status with correct info', async () => {
expect(await esClusterSummaryStatus.getContent()).to.eql({
nodesCount: 'Nodes:\n3',
indicesCount: 'Indices:\n20',
memory: 'Memory:\n575.3 MB / 2.0 GB',
totalShards: 'Total Shards:\n80',
unassignedShards: 'Unassigned Shards:\n5',
documentCount: 'Documents:\n25,927',
dataSize: 'Data:\n101.6 MB',
nodesCount: 'Nodes\n3',
indicesCount: 'Indices\n20',
memory: 'Memory\n575.3 MB / 2.0 GB',
totalShards: 'Total Shards\n80',
unassignedShards: 'Unassigned Shards\n5',
documentCount: 'Documents\n25,927',
dataSize: 'Data\n101.6 MB',
health: 'Health: yellow',
});
});

View file

@ -36,10 +36,10 @@ export default function ({ getService, getPageObjects }) {
it('should have Instance Summary Status showing correct info', async () => {
expect(await instance.getSummary()).to.eql({
transportAddress: 'Transport Address:\ntsullivan.local:5601',
osFreeMemory: 'OS Free Memory:\n1.5 GB',
version: 'Version:\n7.0.0-alpha1',
uptime: 'Uptime:\n3 minutes',
transportAddress: 'Transport Address\ntsullivan.local:5601',
osFreeMemory: 'OS Free Memory\n1.5 GB',
version: 'Version\n7.0.0-alpha1',
uptime: 'Uptime\n3 minutes',
health: 'Health: green',
});
});

View file

@ -32,11 +32,11 @@ export default function ({ getService, getPageObjects }) {
it('should have Kibana Cluster Summary Status showing correct info', async () => {
expect(await kibanaClusterSummaryStatus.getContent()).to.eql({
instances: 'Instances:\n1',
memory: 'Memory:\n219.6 MB / 1.4 GB',
requests: 'Requests:\n174',
connections: 'Connections:\n174',
maxResponseTime: 'Max. Response Time:\n2203 ms',
instances: 'Instances\n1',
memory: 'Memory\n219.6 MB / 1.4 GB',
requests: 'Requests\n174',
connections: 'Connections\n174',
maxResponseTime: 'Max. Response Time\n2203 ms',
health: 'Health: green',
});
});

View file

@ -32,11 +32,11 @@ export default function ({ getService, getPageObjects }) {
it('should have Kibana Cluster Summary Status showing correct info', async () => {
expect(await kibanaClusterSummaryStatus.getContent()).to.eql({
instances: 'Instances:\n1',
memory: 'Memory:\n219.6 MB / 1.4 GB',
requests: 'Requests:\n174',
connections: 'Connections:\n174',
maxResponseTime: 'Max. Response Time:\n2203 ms',
instances: 'Instances\n1',
memory: 'Memory\n219.6 MB / 1.4 GB',
requests: 'Requests\n174',
connections: 'Connections\n174',
maxResponseTime: 'Max. Response Time\n2203 ms',
health: 'Health: green',
});
});

View file

@ -32,10 +32,10 @@ export default function ({ getService, getPageObjects }) {
it('should have Logstash Cluster Summary Status showing correct info', async () => {
expect(await lsClusterSummaryStatus.getContent()).to.eql({
nodeCount: 'Nodes:\n2',
memoryUsed: 'Memory:\n528.4 MB / 1.9 GB',
eventsInTotal: 'Events Received:\n117.9k',
eventsOutTotal: 'Events Emitted:\n111.9k'
nodeCount: 'Nodes\n2',
memoryUsed: 'Memory\n528.4 MB / 1.9 GB',
eventsInTotal: 'Events Received\n117.9k',
eventsOutTotal: 'Events Emitted\n111.9k'
});
});