[Stack Monitoring] Add I/O metrics for Elasticsearch (#45870)

* I/O metrics POC

* Gather correct metric for total

* Remove io stats from advanced

* Move io stats to node overview page

* Add new io metrics

* Add new io metrics

* Add note about supported platforms

* Update snapshot

* Add warning about platforms to all metrics

* Another snapshot update

* Update type and units

* Remove errant trailing comma

* Snapshot update for new types

* Add node_io integration testing
This commit is contained in:
Mike Place 2019-09-19 09:57:55 +00:00 committed by GitHub
parent a3f265452b
commit 629623a24e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 153 additions and 1 deletions

View file

@ -32,6 +32,7 @@ export const Node = ({
const metricsToShow = [
metrics.node_jvm_mem,
metrics.node_mem,
metrics.node_total_io,
metrics.node_cpu_metric,
metrics.node_load_average,
metrics.node_latency,

View file

@ -4600,6 +4600,48 @@ Object {
"units": "ms",
"uuidField": "source_node.uuid",
},
"node_total_cumul_io": RequestRateMetric {
"app": "elasticsearch",
"derivative": true,
"description": "Total I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)",
"field": "node_stats.fs.io_stats.total.operations",
"format": "0,0.[00]",
"label": "Total I/O",
"metricAgg": "max",
"timestampField": "timestamp",
"title": "I/O Operations Rate",
"type": "node",
"units": "/s",
"uuidField": "source_node.uuid",
},
"node_total_read_io": RequestRateMetric {
"app": "elasticsearch",
"derivative": true,
"description": "Total Read I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)",
"field": "node_stats.fs.io_stats.total.read_operations",
"format": "0,0.[00]",
"label": "Total Read I/O",
"metricAgg": "max",
"timestampField": "timestamp",
"title": "I/O Operations Rate",
"type": "node",
"units": "/s",
"uuidField": "source_node.uuid",
},
"node_total_write_io": RequestRateMetric {
"app": "elasticsearch",
"derivative": true,
"description": "Total Write I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)",
"field": "node_stats.fs.io_stats.total.write_operations",
"format": "0,0.[00]",
"label": "Total Write I/O",
"metricAgg": "max",
"timestampField": "timestamp",
"title": "I/O Operations Rate",
"type": "node",
"units": "/s",
"uuidField": "source_node.uuid",
},
"search_request_rate": RequestRateMetric {
"app": "elasticsearch",
"derivative": true,

View file

@ -40,6 +40,9 @@ const indexRequestTimeTitle = i18n.translate('xpack.monitoring.metrics.esIndex.r
const indexIndexingRateTitle = i18n.translate('xpack.monitoring.metrics.esIndex.indexingRateTitle', {
defaultMessage: 'Indexing Rate'
});
const nodeIoRateTitle = i18n.translate('xpack.monitoring.metrics.esNode.ioRateTitle', {
defaultMessage: 'I/O Operations Rate'
});
const indexSegmentCountTitle = i18n.translate('xpack.monitoring.metrics.esIndex.segmentCountTitle', {
defaultMessage: 'Segment Count'
});
@ -425,6 +428,48 @@ export const metrics = {
defaultMessage: 'Heap memory used by the Index Writer. This is NOT a part of Lucene Total.'
})
}),
node_total_cumul_io: new RequestRateMetric({
field: 'node_stats.fs.io_stats.total.operations',
title: nodeIoRateTitle,
format: LARGE_FLOAT,
units: 'ops',
type: 'node',
derivative: true,
label: i18n.translate('xpack.monitoring.metrics.esNode.totalIoLabel', {
defaultMessage: 'Total I/O'
}),
description: i18n.translate('xpack.monitoring.metrics.esNode.totalIoDescription', {
defaultMessage: 'Total I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)'
})
}),
node_total_read_io: new RequestRateMetric({
field: 'node_stats.fs.io_stats.total.read_operations',
title: nodeIoRateTitle,
format: LARGE_FLOAT,
units: 'ops',
type: 'node',
derivative: true,
label: i18n.translate('xpack.monitoring.metrics.esNode.totalIoReadLabel', {
defaultMessage: 'Total Read I/O'
}),
description: i18n.translate('xpack.monitoring.metrics.esNode.totalIoReadDescription', {
defaultMessage: 'Total Read I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)'
})
}),
node_total_write_io: new RequestRateMetric({
field: 'node_stats.fs.io_stats.total.write_operations',
title: nodeIoRateTitle,
format: LARGE_FLOAT,
units: 'ops',
type: 'node',
derivative: true,
label: i18n.translate('xpack.monitoring.metrics.esNode.totalIoWriteLabel', {
defaultMessage: 'Total Write I/O'
}),
description: i18n.translate('xpack.monitoring.metrics.esNode.totalIoWriteDescription', {
defaultMessage: 'Total Write I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)'
})
}),
index_request_rate_primary: new ElasticsearchMetric({
field: 'index_stats.primaries.indexing.index_total',
title: indexIndexingRateTitle,

View file

@ -92,9 +92,13 @@ export const metricSets = {
{
keys: ['node_query_latency', 'node_index_latency'],
name: 'node_latency'
}
},
],
overview: [
{
keys: ['node_total_cumul_io', 'node_total_read_io', 'node_total_write_io'],
name: 'node_total_io',
},
{
keys: ['node_query_latency', 'node_index_latency'],
name: 'node_latency'

View file

@ -179,6 +179,66 @@
"isDerivative": false
},
"data": []
}],
"node_total_io": [{
"bucket_size": "10 seconds",
"data": [],
"metric": {
"app": "elasticsearch",
"description": "Total I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)",
"field": "node_stats.fs.io_stats.total.operations",
"format": "0,0.[00]",
"hasCalculation": false,
"isDerivative": true,
"label": "Total I/O",
"metricAgg": "max",
"title": "I/O Operations Rate",
"units": "/s"
},
"timeRange": {
"max": 1507235712000,
"min": 1507235508000
}
},
{
"bucket_size": "10 seconds",
"data": [],
"metric": {
"app": "elasticsearch",
"description": "Total Read I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)",
"field": "node_stats.fs.io_stats.total.read_operations",
"format": "0,0.[00]",
"hasCalculation": false,
"isDerivative": true,
"label": "Total Read I/O",
"metricAgg": "max",
"title": "I/O Operations Rate",
"units": "/s"
},
"timeRange": {
"max": 1507235712000,
"min": 1507235508000
}
},
{
"bucket_size": "10 seconds",
"data": [],
"metric": {
"app": "elasticsearch",
"description": "Total Write I/O. (This metric is not supported on all platforms and may display N/A if I/O data is unavailable.)",
"field": "node_stats.fs.io_stats.total.write_operations",
"format": "0,0.[00]",
"hasCalculation": false,
"isDerivative": true,
"label": "Total Write I/O",
"metricAgg": "max",
"title": "I/O Operations Rate",
"units": "/s"
},
"timeRange": {
"max": 1507235712000,
"min": 1507235508000
}
}],
"node_load_average": [{
"bucket_size": "10 seconds",