diff --git a/web/mock/dashboard/cluster_monitor.js b/web/mock/dashboard/cluster_monitor.js index 0a031aac..ad8b7c4a 100644 --- a/web/mock/dashboard/cluster_monitor.js +++ b/web/mock/dashboard/cluster_monitor.js @@ -607,6 +607,20 @@ const apiUrls = { "buckets_path": "index_time" } }, + "search_qps":{ + "derivative": { + "buckets_path": "search_query_total", + "gap_policy": "skip", + "unit": "1s" + } + }, + "index_qps":{ + "derivative": { + "buckets_path": "index_total", + "gap_policy": "skip", + "unit": "1s" + } + }, "read_threads_queue":{ "max": { "field": "node_stats.thread_pool.get.queue" diff --git a/web/src/pages/Dashboard/ClusterMonitor.js b/web/src/pages/Dashboard/ClusterMonitor.js index 7aadd8d4..8bed5887 100644 --- a/web/src/pages/Dashboard/ClusterMonitor.js +++ b/web/src/pages/Dashboard/ClusterMonitor.js @@ -242,7 +242,7 @@ let generateIndexLatencyData = (target)=>{ { let nodesStats = nodes_stats; - console.log(nodesStats); - let nodeCpu = [],nodeHeap=[],nodeSearchLatency=[],nodeIndexLatency=[], readThreadQueue=[],writeThreadQueue=[]; + //console.log(nodesStats); + let nodeCpu = [],nodeHeap=[],nodeSearchLatency=[],nodeIndexLatency=[], readThreadQueue=[],writeThreadQueue=[], + searchQps=[], indexQps=[]; //let now = moment(1607085646112); + let startTime = new Date(); + let startMinutes = (Math.floor(startTime.getMinutes()/10)*10 + 70) % 60; + startTime.setMinutes(startMinutes == 0 ? 60: startMinutes, 0,0); + let vtime = startTime.valueOf(); + let ticks = []; + for(let i=0; i<6;i++){ + ticks.push( + new Date(vtime + (i - 6) * 10 * 60 *1000 ).toUTCString() + ); + } for(let ns of nodesStats){ //let i = 0; for(let bk of ns.metrics.buckets){ @@ -327,13 +338,13 @@ class StatsCharts extends PureComponent { ...fields, heap_ratio: bk.heap_percent.value, }); - nodeSearchLatency.push({ + bk.ds1 && nodeSearchLatency.push({ ...fields, - latency: bk.ds1 ? (bk.ds1.value/bk.ds.value).toFixed(2): 0, + latency: bk.ds1.value ? (bk.ds1.value/bk.ds.value).toFixed(2) : null, }); - nodeIndexLatency.push({ + bk.ds4 && nodeIndexLatency.push({ ...fields, - latency: bk.ds1 ? (bk.ds4.value/bk.ds3.value).toFixed(2): 0, + latency: bk.ds4.value? (bk.ds4.value/bk.ds3.value).toFixed(2): null, }); readThreadQueue.push({ ...fields, @@ -343,6 +354,14 @@ class StatsCharts extends PureComponent { ...fields, queue: bk.write_threads_queue.value, }); + bk.search_qps && searchQps.push({ + ...fields, + qps: bk.search_qps.normalized_value ? bk.search_qps.normalized_value.toFixed(2) : null, + }); + bk.index_qps && indexQps.push({ + ...fields, + qps: bk.index_qps.normalized_value ? bk.index_qps.normalized_value.toFixed(2): null, + }); } } this.setState({ @@ -352,7 +371,10 @@ class StatsCharts extends PureComponent { indexLatency: nodeIndexLatency, readThreadQueue: readThreadQueue, writeThreadQueue: writeThreadQueue, - timeScale: {min: moment().subtract(1, 'h').valueOf(), max: new Date()}, + searchQps: searchQps, + indexQps: indexQps, + //timeScale: {min: moment().subtract(1, 'h').valueOf(), max: new Date()}, + timeScale:{ticks: ticks, min: moment().subtract(1, 'h').valueOf(), max: moment().add(1, 'm').valueOf()} }); } }); @@ -376,7 +398,7 @@ class StatsCharts extends PureComponent { alias: "时间", type: "time", mask: "HH:mm", - tickCount: 6, + // tickCount: 6, ...this.state.timeScale, nice: false, }, @@ -384,9 +406,7 @@ class StatsCharts extends PureComponent { alias: "内存使用百分比", min: 0, // max: 100 - }, - type: { - type: "cat" + type: "linear" } } } @@ -411,9 +431,7 @@ class StatsCharts extends PureComponent { alias: "CPU使用百分比", min: 0, // max: 1 - }, - type: { - type: "cat" + type: "linear" } } } @@ -424,9 +442,7 @@ class StatsCharts extends PureComponent { + + + + + + + + @@ -517,9 +572,7 @@ class StatsCharts extends PureComponent { queue: { min: 0, // max: 1 - }, - type: { - type: "cat" + type: "linear" } } } @@ -556,7 +609,7 @@ class ClusterMonitor extends PureComponent { }; let descStryle= {color:'#6a717d', fontSize: 12}; const {clusterMonitor} = this.props; - console.log(clusterMonitor); + //console.log(clusterMonitor); let clusterStats = {}; if(clusterMonitor.elasticsearch){ let rawStats = clusterMonitor.elasticsearch.cluster_stats;