From 77608f79b31784ce00a6021df7f51a998a5524a4 Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Thu, 7 Jun 2018 18:22:13 -0700 Subject: [PATCH] [Monitoring] Fix Node Advanced page (#19740) (#19749) * [Monitoring] Fix Node Advanced page * fix metrics snapshot --- .../server/lib/details/get_series.js | 3 + .../__snapshots__/metrics.test.js.snap | 145 +- .../lib/metrics/elasticsearch/classes.js | 99 + .../lib/metrics/elasticsearch/metrics.js | 64 +- .../fixtures/node_detail_advanced.json | 3643 +++++++++++++++++ .../apis/monitoring/elasticsearch/index.js | 1 + .../elasticsearch/node_detail_advanced.js | 43 + 7 files changed, 3890 insertions(+), 108 deletions(-) create mode 100644 x-pack/test/api_integration/apis/monitoring/elasticsearch/fixtures/node_detail_advanced.json create mode 100644 x-pack/test/api_integration/apis/monitoring/elasticsearch/node_detail_advanced.js diff --git a/x-pack/plugins/monitoring/server/lib/details/get_series.js b/x-pack/plugins/monitoring/server/lib/details/get_series.js index 31ffe1e76168..5c74ef47b4dc 100644 --- a/x-pack/plugins/monitoring/server/lib/details/get_series.js +++ b/x-pack/plugins/monitoring/server/lib/details/get_series.js @@ -216,6 +216,9 @@ export async function getSeries(req, indexPattern, metricName, filters, { min, m checkParam(indexPattern, 'indexPattern in details/getSeries'); const metric = metrics[metricName]; + if (!metric) { + throw new Error(`Not a valid metric: ${metricName}`); + } const response = await fetchSeries(req, indexPattern, metric, min, max, bucketSize, filters); return handleSeries(metric, min, max, bucketSize, response); diff --git a/x-pack/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap b/x-pack/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap index f164fac18882..401fc150ba39 100644 --- a/x-pack/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap +++ b/x-pack/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap @@ -2863,36 +2863,6 @@ Object { "units": "B", "uuidField": "source_node.uuid", }, - "node_index_threads_bulk_queue": ElasticsearchMetric { - "app": "elasticsearch", - "derivative": true, - "description": "Number of bulk operations in the queue.", - "field": "node_stats.thread_pool.bulk.queue", - "format": "0,0.[00]", - "label": "Bulk Queue", - "metricAgg": "max", - "min": 0, - "timestampField": "timestamp", - "title": "Indexing Threads", - "type": "node", - "units": "", - "uuidField": "source_node.uuid", - }, - "node_index_threads_bulk_rejected": ElasticsearchMetric { - "app": "elasticsearch", - "derivative": true, - "description": "Number of bulk operations that have been rejected, which occurs when the queue is full.", - "field": "node_stats.thread_pool.bulk.rejected", - "format": "0,0.[00]", - "label": "Bulk Rejections", - "metricAgg": "max", - "min": 0, - "timestampField": "timestamp", - "title": "Indexing Threads", - "type": "node", - "units": "", - "uuidField": "source_node.uuid", - }, "node_index_threads_get_queue": ElasticsearchMetric { "app": "elasticsearch", "derivative": true, @@ -2923,36 +2893,6 @@ Object { "units": "", "uuidField": "source_node.uuid", }, - "node_index_threads_index_queue": ElasticsearchMetric { - "app": "elasticsearch", - "derivative": true, - "description": "Number of non-bulk, index operations in the queue.", - "field": "node_stats.thread_pool.index.queue", - "format": "0,0.[00]", - "label": "Index Queue", - "metricAgg": "max", - "min": 0, - "timestampField": "timestamp", - "title": "Indexing Threads", - "type": "node", - "units": "", - "uuidField": "source_node.uuid", - }, - "node_index_threads_index_rejected": ElasticsearchMetric { - "app": "elasticsearch", - "derivative": true, - "description": "Number of non-bulk, index operations that have been rejected, which occurs when the queue is full. Generally indicates that bulk should be used.", - "field": "node_stats.thread_pool.index.rejected", - "format": "0,0.[00]", - "label": "Index Rejections", - "metricAgg": "max", - "min": 0, - "timestampField": "timestamp", - "title": "Indexing Threads", - "type": "node", - "units": "", - "uuidField": "source_node.uuid", - }, "node_index_threads_search_queue": ElasticsearchMetric { "app": "elasticsearch", "derivative": true, @@ -2983,6 +2923,91 @@ Object { "units": "", "uuidField": "source_node.uuid", }, + "node_index_threads_write_queue": WriteThreadPoolQueueMetric { + "app": "elasticsearch", + "calculation": [Function], + "dateHistogramSubAggs": Object { + "bulk": Object { + "max": Object { + "field": "node_stats.thread_pool.bulk.queue", + }, + }, + "index": Object { + "max": Object { + "field": "node_stats.thread_pool.index.queue", + }, + }, + "write": Object { + "max": Object { + "field": "node_stats.thread_pool.write.queue", + }, + }, + }, + "derivative": false, + "description": "Number of index, bulk, and write operations in the queue. The bulk threadpool was renamed to write in 6.3, and the index threadpool is deprecated.", + "field": "node_stats.thread_pool.write.queue", + "format": "0.[00]", + "label": "Write Queue", + "metricAgg": "max", + "timestampField": "timestamp", + "title": "Indexing Threads", + "type": "node", + "units": "", + "uuidField": "source_node.uuid", + }, + "node_index_threads_write_rejected": WriteThreadPoolRejectedMetric { + "app": "elasticsearch", + "calculation": [Function], + "dateHistogramSubAggs": Object { + "bulk_deriv": Object { + "derivative": Object { + "buckets_path": "bulk_rejections", + "gap_policy": "skip", + "unit": "1s", + }, + }, + "bulk_rejections": Object { + "max": Object { + "field": "node_stats.thread_pool.bulk.rejected", + }, + }, + "index_deriv": Object { + "derivative": Object { + "buckets_path": "index_rejections", + "gap_policy": "skip", + "unit": "1s", + }, + }, + "index_rejections": Object { + "max": Object { + "field": "node_stats.thread_pool.index.rejected", + }, + }, + "write_deriv": Object { + "derivative": Object { + "buckets_path": "write_rejections", + "gap_policy": "skip", + "unit": "1s", + }, + }, + "write_rejections": Object { + "max": Object { + "field": "node_stats.thread_pool.write.rejected", + }, + }, + }, + "derivative": false, + "description": "Number of index, bulk, and write operations that have been rejected, which occurs when the queue is full. The bulk threadpool was renamed to write in 6.3, and the index threadpool is deprecated.", + "field": "node_stats.thread_pool.write.rejected", + "format": "0.[00]", + "label": "Write Rejections", + "metricAgg": "max", + "timestampField": "timestamp", + "title": "Indexing Threads", + "type": "node", + "units": "", + "uuidField": "source_node.uuid", + }, "node_index_time": ElasticsearchMetric { "app": "elasticsearch", "derivative": true, diff --git a/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/classes.js b/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/classes.js index 8fb8a6cc9652..b68cf3c94867 100644 --- a/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/classes.js +++ b/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/classes.js @@ -194,3 +194,102 @@ export class SingleIndexMemoryMetric extends IndexMemoryMetric { this.field = 'index_stats.total.segments.' + opts.field; } } + +export class WriteThreadPoolQueueMetric extends ElasticsearchMetric { + constructor(opts) { + super({ + ...opts, + field: 'node_stats.thread_pool.write.queue', // in 7.0, we can only check for this threadpool + type: 'node', + format: SMALL_FLOAT, + metricAgg: 'max', + units: '', + }); + + this.dateHistogramSubAggs = { + index: { + max: { field: 'node_stats.thread_pool.index.queue' }, + }, + bulk: { + max: { field: 'node_stats.thread_pool.bulk.queue' }, + }, + write: { + max: { field: 'node_stats.thread_pool.write.queue' }, + }, + }; + + this.calculation = bucket => { + const index = _.get(bucket, 'index.value', null); + const bulk = _.get(bucket, 'bulk.value', null); + const write = _.get(bucket, 'write.value', null); + + if (index !== null || bulk !== null || write !== null) { + return (index || 0) + (bulk || 0) + (write || 0); + } + + // ignore the data if none of them exist + return null; + }; + } +} + +export class WriteThreadPoolRejectedMetric extends ElasticsearchMetric { + constructor(opts) { + super({ + ...opts, + field: 'node_stats.thread_pool.write.rejected', // in 7.0, we can only check for this threadpool + type: 'node', + format: SMALL_FLOAT, + metricAgg: 'max', + units: '', + }); + + this.dateHistogramSubAggs = { + index_rejections: { + max: { field: 'node_stats.thread_pool.index.rejected' }, + }, + bulk_rejections: { + max: { field: 'node_stats.thread_pool.bulk.rejected' }, + }, + write_rejections: { + max: { field: 'node_stats.thread_pool.write.rejected' }, + }, + index_deriv: { + derivative: { + buckets_path: 'index_rejections', + gap_policy: 'skip', + unit: NORMALIZED_DERIVATIVE_UNIT, + }, + }, + bulk_deriv: { + derivative: { + buckets_path: 'bulk_rejections', + gap_policy: 'skip', + unit: NORMALIZED_DERIVATIVE_UNIT, + }, + }, + write_deriv: { + derivative: { + buckets_path: 'write_rejections', + gap_policy: 'skip', + unit: NORMALIZED_DERIVATIVE_UNIT, + }, + }, + }; + + this.calculation = bucket => { + const index = _.get(bucket, 'index_deriv.normalized_value', null); + const bulk = _.get(bucket, 'bulk_deriv.normalized_value', null); + const write = _.get(bucket, 'write_deriv.normalized_value', null); + + if (index !== null || bulk !== null || write !== null) { + const valueOrZero = value => (value < 0 ? 0 : value || 0); + + return valueOrZero(index) + valueOrZero(bulk) + valueOrZero(write); + } + + // ignore the data if none of them exist + return null; + }; + } +} diff --git a/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/metrics.js b/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/metrics.js index b6fa138b3f52..592b4147edd9 100644 --- a/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/metrics.js +++ b/x-pack/plugins/monitoring/server/lib/metrics/elasticsearch/metrics.js @@ -13,7 +13,9 @@ import { IndexMemoryMetric, NodeIndexMemoryMetric, ThreadPoolQueueMetric, - ThreadPoolRejectedMetric + ThreadPoolRejectedMetric, + WriteThreadPoolQueueMetric, + WriteThreadPoolRejectedMetric } from './classes'; import { LARGE_FLOAT, @@ -691,31 +693,6 @@ export const metrics = { description: 'Heap memory used by the Index Writer. This is NOT a part of Lucene Total.' }), - node_index_threads_bulk_queue: new ElasticsearchMetric({ - field: 'node_stats.thread_pool.bulk.queue', - title: 'Indexing Threads', - label: 'Bulk Queue', - description: 'Number of bulk operations in the queue.', - type: 'node', - derivative: true, - format: LARGE_FLOAT, - metricAgg: 'max', - units: '', - min: 0 - }), - node_index_threads_bulk_rejected: new ElasticsearchMetric({ - field: 'node_stats.thread_pool.bulk.rejected', - title: 'Indexing Threads', - label: 'Bulk Rejections', - description: - 'Number of bulk operations that have been rejected, which occurs when the queue is full.', - type: 'node', - derivative: true, - format: LARGE_FLOAT, - metricAgg: 'max', - units: '', - min: 0 - }), node_index_threads_get_queue: new ElasticsearchMetric({ field: 'node_stats.thread_pool.get.queue', title: 'Read Threads', @@ -741,31 +718,22 @@ export const metrics = { units: '', min: 0 }), - node_index_threads_index_queue: new ElasticsearchMetric({ - field: 'node_stats.thread_pool.index.queue', + node_index_threads_write_queue: new WriteThreadPoolQueueMetric({ title: 'Indexing Threads', - label: 'Index Queue', - description: 'Number of non-bulk, index operations in the queue.', - type: 'node', - derivative: true, - format: LARGE_FLOAT, - metricAgg: 'max', - units: '', - min: 0 + label: 'Write Queue', + description: ( + 'Number of index, bulk, and write operations in the queue. ' + + 'The bulk threadpool was renamed to write in 6.3, and the index threadpool is deprecated.' + ), }), - node_index_threads_index_rejected: new ElasticsearchMetric({ - field: 'node_stats.thread_pool.index.rejected', + node_index_threads_write_rejected: new WriteThreadPoolRejectedMetric({ + field: 'node_stats.thread_pool.bulk.rejected', title: 'Indexing Threads', - label: 'Index Rejections', - description: - 'Number of non-bulk, index operations that have been rejected, which occurs when the queue is full. ' + - 'Generally indicates that bulk should be used.', - type: 'node', - derivative: true, - format: LARGE_FLOAT, - metricAgg: 'max', - units: '', - min: 0 + label: 'Write Rejections', + description: ( + 'Number of index, bulk, and write operations that have been rejected, which occurs when the queue is full. ' + + 'The bulk threadpool was renamed to write in 6.3, and the index threadpool is deprecated.' + ), }), node_index_threads_search_queue: new ElasticsearchMetric({ field: 'node_stats.thread_pool.search.queue', diff --git a/x-pack/test/api_integration/apis/monitoring/elasticsearch/fixtures/node_detail_advanced.json b/x-pack/test/api_integration/apis/monitoring/elasticsearch/fixtures/node_detail_advanced.json new file mode 100644 index 000000000000..14c2faf20f17 --- /dev/null +++ b/x-pack/test/api_integration/apis/monitoring/elasticsearch/fixtures/node_detail_advanced.json @@ -0,0 +1,3643 @@ +{ + "nodeSummary": { + "resolver": "jUT5KdxfRbORSCWkb5zjmA", + "node_ids": [ + "jUT5KdxfRbORSCWkb5zjmA" + ], + "attributes": { + "ml.max_open_jobs": "10", + "ml.enabled": "true" + }, + "transport_address": "127.0.0.1:9300", + "name": "whatever-01", + "type": "master", + "nodeTypeLabel": "Master Node", + "nodeTypeClass": "fa-star", + "totalShards": 38, + "indexCount": 20, + "documents": 24830, + "dataSize": 52847579, + "freeSpace": 186755088384, + "usedHeap": 29, + "status": "Online", + "isOnline": true + }, + "metrics": { + "node_jvm_mem": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.jvm.mem.heap_max_in_bytes", + "metricAgg": "max", + "label": "Max Heap", + "title": "JVM Heap", + "description": "Total heap available to Elasticsearch running in the JVM.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 709623808 + ], + [ + 1507235530000, + 709623808 + ], + [ + 1507235540000, + 709623808 + ], + [ + 1507235550000, + 709623808 + ], + [ + 1507235560000, + 709623808 + ], + [ + 1507235570000, + 709623808 + ], + [ + 1507235580000, + 709623808 + ], + [ + 1507235590000, + 709623808 + ], + [ + 1507235600000, + 709623808 + ], + [ + 1507235610000, + 709623808 + ], + [ + 1507235620000, + 709623808 + ], + [ + 1507235630000, + 709623808 + ], + [ + 1507235640000, + 709623808 + ], + [ + 1507235650000, + 709623808 + ], + [ + 1507235660000, + 709623808 + ], + [ + 1507235670000, + 709623808 + ], + [ + 1507235680000, + 709623808 + ], + [ + 1507235690000, + 709623808 + ], + [ + 1507235700000, + 709623808 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.jvm.mem.heap_used_in_bytes", + "metricAgg": "max", + "label": "Used Heap", + "title": "JVM Heap", + "description": "Total heap used by Elasticsearch running in the JVM.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 317052776 + ], + [ + 1507235530000, + 344014976 + ], + [ + 1507235540000, + 368593248 + ], + [ + 1507235550000, + 253850400 + ], + [ + 1507235560000, + 348095032 + ], + [ + 1507235570000, + 182919712 + ], + [ + 1507235580000, + 212395016 + ], + [ + 1507235590000, + 244004144 + ], + [ + 1507235600000, + 270412240 + ], + [ + 1507235610000, + 245052864 + ], + [ + 1507235620000, + 370270616 + ], + [ + 1507235630000, + 196944168 + ], + [ + 1507235640000, + 223491760 + ], + [ + 1507235650000, + 253878472 + ], + [ + 1507235660000, + 280811736 + ], + [ + 1507235670000, + 371931976 + ], + [ + 1507235680000, + 329874616 + ], + [ + 1507235690000, + 363869776 + ], + [ + 1507235700000, + 211045968 + ] + ] + } + ], + "node_gc": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.jvm.gc.collectors.old.collection_count", + "metricAgg": "max", + "label": "Old", + "title": "GC Count", + "description": "Number of old Garbage Collections.", + "units": "", + "format": "0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.jvm.gc.collectors.young.collection_count", + "metricAgg": "max", + "label": "Young", + "title": "GC Count", + "description": "Number of young Garbage Collections.", + "units": "", + "format": "0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0.1 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0.1 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0.1 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0.1 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0.1 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0.1 + ] + ] + } + ], + "node_gc_time": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.jvm.gc.collectors.old.collection_time_in_millis", + "metricAgg": "max", + "label": "Old", + "title": "GC Duration", + "description": "Time spent performing old Garbage Collections.", + "units": "ms", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.jvm.gc.collectors.young.collection_time_in_millis", + "metricAgg": "max", + "label": "Young", + "title": "GC Duration", + "description": "Time spent performing young Garbage Collections.", + "units": "ms", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 1.1 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 1.2 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 1 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 1.1 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 2.9 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 2.1 + ] + ] + } + ], + "node_index_1": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.memory_in_bytes", + "metricAgg": "max", + "label": "Lucene Total", + "title": "Index Memory - Lucene 1", + "description": "Total heap memory used by Lucene for current index. This is the sum of other fields for primary and replica shards on this node.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 4797457 + ], + [ + 1507235530000, + 4797457 + ], + [ + 1507235540000, + 4797457 + ], + [ + 1507235550000, + 4797457 + ], + [ + 1507235560000, + 4823580 + ], + [ + 1507235570000, + 4823580 + ], + [ + 1507235580000, + 4823580 + ], + [ + 1507235590000, + 4823580 + ], + [ + 1507235600000, + 4823580 + ], + [ + 1507235610000, + 4838368 + ], + [ + 1507235620000, + 4741420 + ], + [ + 1507235630000, + 4741420 + ], + [ + 1507235640000, + 4741420 + ], + [ + 1507235650000, + 4741420 + ], + [ + 1507235660000, + 4741420 + ], + [ + 1507235670000, + 4757998 + ], + [ + 1507235680000, + 4787542 + ], + [ + 1507235690000, + 4787542 + ], + [ + 1507235700000, + 4787542 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.stored_fields_memory_in_bytes", + "metricAgg": "max", + "label": "Stored Fields", + "title": "Index Memory", + "description": "Heap memory used by Stored Fields (e.g., _source). This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 56792 + ], + [ + 1507235530000, + 56792 + ], + [ + 1507235540000, + 56792 + ], + [ + 1507235550000, + 56792 + ], + [ + 1507235560000, + 57728 + ], + [ + 1507235570000, + 57728 + ], + [ + 1507235580000, + 57728 + ], + [ + 1507235590000, + 57728 + ], + [ + 1507235600000, + 57728 + ], + [ + 1507235610000, + 58352 + ], + [ + 1507235620000, + 56192 + ], + [ + 1507235630000, + 56192 + ], + [ + 1507235640000, + 56192 + ], + [ + 1507235650000, + 56192 + ], + [ + 1507235660000, + 56192 + ], + [ + 1507235670000, + 56816 + ], + [ + 1507235680000, + 57440 + ], + [ + 1507235690000, + 57440 + ], + [ + 1507235700000, + 57440 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.doc_values_memory_in_bytes", + "metricAgg": "max", + "label": "Doc Values", + "title": "Index Memory", + "description": "Heap memory used by Doc Values. This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 516824 + ], + [ + 1507235530000, + 516824 + ], + [ + 1507235540000, + 516824 + ], + [ + 1507235550000, + 516824 + ], + [ + 1507235560000, + 517292 + ], + [ + 1507235570000, + 517292 + ], + [ + 1507235580000, + 517292 + ], + [ + 1507235590000, + 517292 + ], + [ + 1507235600000, + 517292 + ], + [ + 1507235610000, + 517612 + ], + [ + 1507235620000, + 514808 + ], + [ + 1507235630000, + 514808 + ], + [ + 1507235640000, + 514808 + ], + [ + 1507235650000, + 514808 + ], + [ + 1507235660000, + 514808 + ], + [ + 1507235670000, + 515312 + ], + [ + 1507235680000, + 516008 + ], + [ + 1507235690000, + 516008 + ], + [ + 1507235700000, + 516008 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.norms_memory_in_bytes", + "metricAgg": "max", + "label": "Norms", + "title": "Index Memory", + "description": "Heap memory used by Norms (normalization factors for query-time, text scoring). This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 447232 + ], + [ + 1507235530000, + 447232 + ], + [ + 1507235540000, + 447232 + ], + [ + 1507235550000, + 447232 + ], + [ + 1507235560000, + 449600 + ], + [ + 1507235570000, + 449600 + ], + [ + 1507235580000, + 449600 + ], + [ + 1507235590000, + 449600 + ], + [ + 1507235600000, + 449600 + ], + [ + 1507235610000, + 450880 + ], + [ + 1507235620000, + 442304 + ], + [ + 1507235630000, + 442304 + ], + [ + 1507235640000, + 442304 + ], + [ + 1507235650000, + 442304 + ], + [ + 1507235660000, + 442304 + ], + [ + 1507235670000, + 443840 + ], + [ + 1507235680000, + 446400 + ], + [ + 1507235690000, + 446400 + ], + [ + 1507235700000, + 446400 + ] + ] + } + ], + "node_index_2": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.memory_in_bytes", + "metricAgg": "max", + "label": "Lucene Total", + "title": "Index Memory - Lucene 2", + "description": "Total heap memory used by Lucene for current index. This is the sum of other fields for primary and replica shards on this node.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 4797457 + ], + [ + 1507235530000, + 4797457 + ], + [ + 1507235540000, + 4797457 + ], + [ + 1507235550000, + 4797457 + ], + [ + 1507235560000, + 4823580 + ], + [ + 1507235570000, + 4823580 + ], + [ + 1507235580000, + 4823580 + ], + [ + 1507235590000, + 4823580 + ], + [ + 1507235600000, + 4823580 + ], + [ + 1507235610000, + 4838368 + ], + [ + 1507235620000, + 4741420 + ], + [ + 1507235630000, + 4741420 + ], + [ + 1507235640000, + 4741420 + ], + [ + 1507235650000, + 4741420 + ], + [ + 1507235660000, + 4741420 + ], + [ + 1507235670000, + 4757998 + ], + [ + 1507235680000, + 4787542 + ], + [ + 1507235690000, + 4787542 + ], + [ + 1507235700000, + 4787542 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.terms_memory_in_bytes", + "metricAgg": "max", + "label": "Terms", + "title": "Index Memory", + "description": "Heap memory used by Terms (e.g., text). This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 3764438 + ], + [ + 1507235530000, + 3764438 + ], + [ + 1507235540000, + 3764438 + ], + [ + 1507235550000, + 3764438 + ], + [ + 1507235560000, + 3786762 + ], + [ + 1507235570000, + 3786762 + ], + [ + 1507235580000, + 3786762 + ], + [ + 1507235590000, + 3786762 + ], + [ + 1507235600000, + 3786762 + ], + [ + 1507235610000, + 3799306 + ], + [ + 1507235620000, + 3715996 + ], + [ + 1507235630000, + 3715996 + ], + [ + 1507235640000, + 3715996 + ], + [ + 1507235650000, + 3715996 + ], + [ + 1507235660000, + 3715996 + ], + [ + 1507235670000, + 3729890 + ], + [ + 1507235680000, + 3755528 + ], + [ + 1507235690000, + 3755528 + ], + [ + 1507235700000, + 3755528 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.points_memory_in_bytes", + "metricAgg": "max", + "label": "Points", + "title": "Index Memory", + "description": "Heap memory used by Points (e.g., numbers, IPs, and geo data). This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 12171 + ], + [ + 1507235530000, + 12171 + ], + [ + 1507235540000, + 12171 + ], + [ + 1507235550000, + 12171 + ], + [ + 1507235560000, + 12198 + ], + [ + 1507235570000, + 12198 + ], + [ + 1507235580000, + 12198 + ], + [ + 1507235590000, + 12198 + ], + [ + 1507235600000, + 12198 + ], + [ + 1507235610000, + 12218 + ], + [ + 1507235620000, + 12120 + ], + [ + 1507235630000, + 12120 + ], + [ + 1507235640000, + 12120 + ], + [ + 1507235650000, + 12120 + ], + [ + 1507235660000, + 12120 + ], + [ + 1507235670000, + 12140 + ], + [ + 1507235680000, + 12166 + ], + [ + 1507235690000, + 12166 + ], + [ + 1507235700000, + 12166 + ] + ] + } + ], + "node_index_3": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.memory_in_bytes", + "metricAgg": "max", + "label": "Lucene Total", + "title": "Index Memory - Lucene 3", + "description": "Total heap memory used by Lucene for current index. This is the sum of other fields for primary and replica shards on this node.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 4797457 + ], + [ + 1507235530000, + 4797457 + ], + [ + 1507235540000, + 4797457 + ], + [ + 1507235550000, + 4797457 + ], + [ + 1507235560000, + 4823580 + ], + [ + 1507235570000, + 4823580 + ], + [ + 1507235580000, + 4823580 + ], + [ + 1507235590000, + 4823580 + ], + [ + 1507235600000, + 4823580 + ], + [ + 1507235610000, + 4838368 + ], + [ + 1507235620000, + 4741420 + ], + [ + 1507235630000, + 4741420 + ], + [ + 1507235640000, + 4741420 + ], + [ + 1507235650000, + 4741420 + ], + [ + 1507235660000, + 4741420 + ], + [ + 1507235670000, + 4757998 + ], + [ + 1507235680000, + 4787542 + ], + [ + 1507235690000, + 4787542 + ], + [ + 1507235700000, + 4787542 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.fixed_bit_set_memory_in_bytes", + "metricAgg": "max", + "label": "Fixed Bitsets", + "title": "Index Memory", + "description": "Heap memory used by Fixed Bit Sets (e.g., deeply nested documents). This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 4024 + ], + [ + 1507235530000, + 4024 + ], + [ + 1507235540000, + 4024 + ], + [ + 1507235550000, + 4024 + ], + [ + 1507235560000, + 4120 + ], + [ + 1507235570000, + 4120 + ], + [ + 1507235580000, + 4120 + ], + [ + 1507235590000, + 4120 + ], + [ + 1507235600000, + 4120 + ], + [ + 1507235610000, + 4168 + ], + [ + 1507235620000, + 3832 + ], + [ + 1507235630000, + 3832 + ], + [ + 1507235640000, + 3832 + ], + [ + 1507235650000, + 3832 + ], + [ + 1507235660000, + 3832 + ], + [ + 1507235670000, + 3880 + ], + [ + 1507235680000, + 3976 + ], + [ + 1507235690000, + 3976 + ], + [ + 1507235700000, + 3976 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.term_vectors_memory_in_bytes", + "metricAgg": "max", + "label": "Term Vectors", + "title": "Index Memory", + "description": "Heap memory used by Term Vectors. This is a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 0 + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.version_map_memory_in_bytes", + "metricAgg": "max", + "label": "Version Map", + "title": "Index Memory", + "description": "Heap memory used by Versioning (e.g., updates and deletes). This is NOT a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 5551 + ], + [ + 1507235530000, + 5551 + ], + [ + 1507235540000, + 5551 + ], + [ + 1507235550000, + 6594 + ], + [ + 1507235560000, + 6662 + ], + [ + 1507235570000, + 6662 + ], + [ + 1507235580000, + 6662 + ], + [ + 1507235590000, + 6662 + ], + [ + 1507235600000, + 6662 + ], + [ + 1507235610000, + 7531 + ], + [ + 1507235620000, + 7837 + ], + [ + 1507235630000, + 7837 + ], + [ + 1507235640000, + 7837 + ], + [ + 1507235650000, + 7837 + ], + [ + 1507235660000, + 7837 + ], + [ + 1507235670000, + 9974 + ], + [ + 1507235680000, + 9716 + ], + [ + 1507235690000, + 9716 + ], + [ + 1507235700000, + 9716 + ] + ] + } + ], + "node_index_4": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.query_cache.memory_size_in_bytes", + "metricAgg": "max", + "label": "Query Cache", + "title": "Index Memory - Elasticsearch", + "description": "Heap memory used by Query Cache (e.g., cached filters). This is for the same shards, but not a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 0 + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.request_cache.memory_size_in_bytes", + "metricAgg": "max", + "label": "Request Cache", + "title": "Index Memory", + "description": "Heap memory used by Request Cache (e.g., instant aggregations). This is for the same shards, but not a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 2921 + ], + [ + 1507235530000, + 2921 + ], + [ + 1507235540000, + 2921 + ], + [ + 1507235550000, + 2921 + ], + [ + 1507235560000, + 2921 + ], + [ + 1507235570000, + 2921 + ], + [ + 1507235580000, + 2921 + ], + [ + 1507235590000, + 2921 + ], + [ + 1507235600000, + 2921 + ], + [ + 1507235610000, + 2921 + ], + [ + 1507235620000, + 2921 + ], + [ + 1507235630000, + 2921 + ], + [ + 1507235640000, + 2921 + ], + [ + 1507235650000, + 2921 + ], + [ + 1507235660000, + 2921 + ], + [ + 1507235670000, + 2921 + ], + [ + 1507235680000, + 2921 + ], + [ + 1507235690000, + 2921 + ], + [ + 1507235700000, + 2921 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.fielddata.memory_size_in_bytes", + "metricAgg": "max", + "label": "Fielddata", + "title": "Index Memory", + "description": "Heap memory used by Fielddata (e.g., global ordinals or explicitly enabled fielddata on text fields). This is for the same shards, but not a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 0 + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.segments.index_writer_memory_in_bytes", + "metricAgg": "max", + "label": "Index Writer", + "title": "Index Memory", + "description": "Heap memory used by the Index Writer. This is NOT a part of Lucene Total.", + "units": "B", + "format": "0.0 b", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 153549 + ], + [ + 1507235530000, + 153549 + ], + [ + 1507235540000, + 153549 + ], + [ + 1507235550000, + 849833 + ], + [ + 1507235560000, + 156505 + ], + [ + 1507235570000, + 156505 + ], + [ + 1507235580000, + 156505 + ], + [ + 1507235590000, + 156505 + ], + [ + 1507235600000, + 156505 + ], + [ + 1507235610000, + 3140275 + ], + [ + 1507235620000, + 159637 + ], + [ + 1507235630000, + 159637 + ], + [ + 1507235640000, + 159637 + ], + [ + 1507235650000, + 159637 + ], + [ + 1507235660000, + 159637 + ], + [ + 1507235670000, + 3737997 + ], + [ + 1507235680000, + 164351 + ], + [ + 1507235690000, + 164351 + ], + [ + 1507235700000, + 164351 + ] + ] + } + ], + "node_request_total": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.search.query_total", + "metricAgg": "max", + "label": "Search Total", + "title": "Request Rate", + "description": "Amount of search operations (per shard).", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0.3 + ], + [ + 1507235540000, + 0.3 + ], + [ + 1507235550000, + 0.3 + ], + [ + 1507235560000, + 0.3 + ], + [ + 1507235570000, + 0.3 + ], + [ + 1507235580000, + 0.3 + ], + [ + 1507235590000, + 0.4 + ], + [ + 1507235600000, + 0.3 + ], + [ + 1507235610000, + 0.5 + ], + [ + 1507235620000, + 0.3 + ], + [ + 1507235630000, + 0.3 + ], + [ + 1507235640000, + 0.2 + ], + [ + 1507235650000, + 0.3 + ], + [ + 1507235660000, + 0.3 + ], + [ + 1507235670000, + 0.5 + ], + [ + 1507235680000, + 0.5 + ], + [ + 1507235690000, + 0.1 + ], + [ + 1507235700000, + 0.4 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.indexing.index_total", + "metricAgg": "max", + "label": "Indexing Total", + "title": "Request Rate", + "description": "Amount of indexing operations.", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0.9 + ], + [ + 1507235560000, + 0.6 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0.9 + ], + [ + 1507235620000, + 0.6 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 1.8 + ], + [ + 1507235680000, + 0.8 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + } + ], + "node_index_time": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.indexing.index_time_in_millis", + "metricAgg": "max", + "label": "Index Time", + "title": "Indexing Time", + "description": "Amount of time spent on indexing operations.", + "units": "ms", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0.8 + ], + [ + 1507235560000, + 0.7 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 1.2 + ], + [ + 1507235620000, + 0.7 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 4.2 + ], + [ + 1507235680000, + 2.3 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.indices.indexing.throttle_time_in_millis", + "metricAgg": "max", + "label": "Index Throttling Time", + "title": "Indexing Time", + "description": "Amount of time spent with index throttling, which indicates slow disks on a node.", + "units": "ms", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + } + ], + "node_index_threads": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.thread_pool.write.queue", + "metricAgg": "max", + "label": "Write Queue", + "title": "Indexing Threads", + "description": "Number of index, bulk, and write operations in the queue. The bulk threadpool was renamed to write in 6.3, and the index threadpool is deprecated.", + "units": "", + "format": "0.[00]", + "hasCalculation": true, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 0 + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.thread_pool.write.rejected", + "metricAgg": "max", + "label": "Write Rejections", + "title": "Indexing Threads", + "description": "Number of index, bulk, and write operations that have been rejected, which occurs when the queue is full. The bulk threadpool was renamed to write in 6.3, and the index threadpool is deprecated.", + "units": "", + "format": "0.[00]", + "hasCalculation": true, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + } + ], + "node_read_threads": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.thread_pool.search.queue", + "metricAgg": "max", + "label": "Search Queue", + "title": "Read Threads", + "description": "Number of search operations in the queue (e.g., shard level searches).", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0.2 + ], + [ + 1507235680000, + null + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.thread_pool.search.rejected", + "metricAgg": "max", + "label": "Search Rejections", + "title": "Read Threads", + "description": "Number of search operations that have been rejected, which occurs when the queue is full.", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.thread_pool.get.queue", + "metricAgg": "max", + "label": "GET Queue", + "title": "Read Threads", + "description": "Number of GET operations in the queue.", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.thread_pool.get.rejected", + "metricAgg": "max", + "label": "GET Rejections", + "title": "Read Threads", + "description": "Number of GET operations that have been rejected, which occurs when the queue is full.", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 0 + ], + [ + 1507235560000, + 0 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 0 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 0 + ], + [ + 1507235620000, + 0 + ], + [ + 1507235630000, + 0 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 0 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 0 + ], + [ + 1507235680000, + 0 + ], + [ + 1507235690000, + 0 + ], + [ + 1507235700000, + 0 + ] + ] + } + ], + "node_cpu_utilization": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.process.cpu.percent", + "metricAgg": "max", + "label": "CPU Utilization", + "description": "Percentage of CPU usage for the Elasticsearch process.", + "units": "%", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1507235520000, + 1 + ], + [ + 1507235530000, + 0 + ], + [ + 1507235540000, + 0 + ], + [ + 1507235550000, + 1 + ], + [ + 1507235560000, + 2 + ], + [ + 1507235570000, + 0 + ], + [ + 1507235580000, + 2 + ], + [ + 1507235590000, + 0 + ], + [ + 1507235600000, + 0 + ], + [ + 1507235610000, + 3 + ], + [ + 1507235620000, + 2 + ], + [ + 1507235630000, + 2 + ], + [ + 1507235640000, + 0 + ], + [ + 1507235650000, + 1 + ], + [ + 1507235660000, + 0 + ], + [ + 1507235670000, + 2 + ], + [ + 1507235680000, + 2 + ], + [ + 1507235690000, + 1 + ], + [ + 1507235700000, + 0 + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.process.cpu.percent", + "metricAgg": "max", + "label": "Cgroup CPU Utilization", + "title": "CPU Utilization", + "description": "CPU Usage time compared to the CPU quota shown in percentage. If CPU quotas are not set, then no data will be shown.", + "units": "%", + "format": "0,0.[00]", + "hasCalculation": true, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + null + ], + [ + 1507235540000, + null + ], + [ + 1507235550000, + null + ], + [ + 1507235560000, + null + ], + [ + 1507235570000, + null + ], + [ + 1507235580000, + null + ], + [ + 1507235590000, + null + ], + [ + 1507235600000, + null + ], + [ + 1507235610000, + null + ], + [ + 1507235620000, + null + ], + [ + 1507235630000, + null + ], + [ + 1507235640000, + null + ], + [ + 1507235650000, + null + ], + [ + 1507235660000, + null + ], + [ + 1507235670000, + null + ], + [ + 1507235680000, + null + ], + [ + 1507235690000, + null + ], + [ + 1507235700000, + null + ] + ] + } + ], + "node_cgroup_cpu": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.os.cgroup.cpuacct.usage_nanos", + "metricAgg": "max", + "label": "Cgroup Usage", + "title": "Cgroup CPU Performance", + "description": "The usage, reported in nanoseconds, of the Cgroup. Compare this with the throttling to discover issues.", + "units": "ns", + "format": "0,0.[0]a", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + null + ], + [ + 1507235540000, + null + ], + [ + 1507235550000, + null + ], + [ + 1507235560000, + null + ], + [ + 1507235570000, + null + ], + [ + 1507235580000, + null + ], + [ + 1507235590000, + null + ], + [ + 1507235600000, + null + ], + [ + 1507235610000, + null + ], + [ + 1507235620000, + null + ], + [ + 1507235630000, + null + ], + [ + 1507235640000, + null + ], + [ + 1507235650000, + null + ], + [ + 1507235660000, + null + ], + [ + 1507235670000, + null + ], + [ + 1507235680000, + null + ], + [ + 1507235690000, + null + ], + [ + 1507235700000, + null + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.os.cgroup.cpu.stat.time_throttled_nanos", + "metricAgg": "max", + "label": "Cgroup Throttling", + "title": "Cgroup CPU Performance", + "description": "The amount of throttled time, reported in nanoseconds, of the Cgroup.", + "units": "ns", + "format": "0,0.[0]a", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + null + ], + [ + 1507235540000, + null + ], + [ + 1507235550000, + null + ], + [ + 1507235560000, + null + ], + [ + 1507235570000, + null + ], + [ + 1507235580000, + null + ], + [ + 1507235590000, + null + ], + [ + 1507235600000, + null + ], + [ + 1507235610000, + null + ], + [ + 1507235620000, + null + ], + [ + 1507235630000, + null + ], + [ + 1507235640000, + null + ], + [ + 1507235650000, + null + ], + [ + 1507235660000, + null + ], + [ + 1507235670000, + null + ], + [ + 1507235680000, + null + ], + [ + 1507235690000, + null + ], + [ + 1507235700000, + null + ] + ] + } + ], + "node_cgroup_stats": [ + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.os.cgroup.cpu.stat.number_of_elapsed_periods", + "metricAgg": "max", + "label": "Cgroup Elapsed Periods", + "title": "Cgroup CFS Stats", + "description": "The number of sampling periods from the Completely Fair Scheduler (CFS). Compare against the number of times throttled.", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + null + ], + [ + 1507235540000, + null + ], + [ + 1507235550000, + null + ], + [ + 1507235560000, + null + ], + [ + 1507235570000, + null + ], + [ + 1507235580000, + null + ], + [ + 1507235590000, + null + ], + [ + 1507235600000, + null + ], + [ + 1507235610000, + null + ], + [ + 1507235620000, + null + ], + [ + 1507235630000, + null + ], + [ + 1507235640000, + null + ], + [ + 1507235650000, + null + ], + [ + 1507235660000, + null + ], + [ + 1507235670000, + null + ], + [ + 1507235680000, + null + ], + [ + 1507235690000, + null + ], + [ + 1507235700000, + null + ] + ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1507235508000, + "max": 1507235712000 + }, + "metric": { + "app": "elasticsearch", + "field": "node_stats.os.cgroup.cpu.stat.number_of_times_throttled", + "metricAgg": "max", + "label": "Cgroup Throttled Count", + "title": "Cgroup CFS Stats", + "description": "The number of times that the CPU was throttled by the Cgroup.", + "units": "", + "format": "0,0.[00]", + "hasCalculation": false, + "isDerivative": true + }, + "data": [ + [ + 1507235520000, + null + ], + [ + 1507235530000, + null + ], + [ + 1507235540000, + null + ], + [ + 1507235550000, + null + ], + [ + 1507235560000, + null + ], + [ + 1507235570000, + null + ], + [ + 1507235580000, + null + ], + [ + 1507235590000, + null + ], + [ + 1507235600000, + null + ], + [ + 1507235610000, + null + ], + [ + 1507235620000, + null + ], + [ + 1507235630000, + null + ], + [ + 1507235640000, + null + ], + [ + 1507235650000, + null + ], + [ + 1507235660000, + null + ], + [ + 1507235670000, + null + ], + [ + 1507235680000, + null + ], + [ + 1507235690000, + null + ], + [ + 1507235700000, + null + ] + ] + } + ] + } +} diff --git a/x-pack/test/api_integration/apis/monitoring/elasticsearch/index.js b/x-pack/test/api_integration/apis/monitoring/elasticsearch/index.js index a69144ecc5b0..1d3a0f7f5a58 100644 --- a/x-pack/test/api_integration/apis/monitoring/elasticsearch/index.js +++ b/x-pack/test/api_integration/apis/monitoring/elasticsearch/index.js @@ -9,6 +9,7 @@ export default function ({ loadTestFile }) { loadTestFile(require.resolve('./overview')); loadTestFile(require.resolve('./nodes')); loadTestFile(require.resolve('./node_detail')); + loadTestFile(require.resolve('./node_detail_advanced')); loadTestFile(require.resolve('./indices')); loadTestFile(require.resolve('./index_detail')); }); diff --git a/x-pack/test/api_integration/apis/monitoring/elasticsearch/node_detail_advanced.js b/x-pack/test/api_integration/apis/monitoring/elasticsearch/node_detail_advanced.js new file mode 100644 index 000000000000..1adfd5defc5d --- /dev/null +++ b/x-pack/test/api_integration/apis/monitoring/elasticsearch/node_detail_advanced.js @@ -0,0 +1,43 @@ +/* + * 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 expect from 'expect.js'; +import nodeDetailFixture from './fixtures/node_detail_advanced'; + +export default function ({ getService }) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + + describe('node detail advanced', () => { + const archive = 'monitoring/singlecluster-three-nodes-shard-relocation'; + const timeRange = { + min: '2017-10-05T20:31:48.000Z', + max: '2017-10-05T20:35:12.000Z' + }; + + before('load archive', () => { + return esArchiver.load(archive); + }); + + after('unload archive', () => { + return esArchiver.unload(archive); + }); + + it('should summarize node with metrics', async () => { + const { body } = await supertest + .post('/api/monitoring/v1/clusters/YCxj-RAgSZCP6GuOQ8M1EQ/elasticsearch/nodes/jUT5KdxfRbORSCWkb5zjmA') + .set('kbn-xsrf', 'xxx') + .send({ + timeRange, + is_advanced: true + }) + .expect(200); + + console.log(JSON.stringify(body)); + expect(body).to.eql(nodeDetailFixture); + }); + }); +}