[
https://issues.apache.org/jira/browse/EAGLE-845?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15797490#comment-15797490
]
ASF GitHub Bot commented on EAGLE-845:
--------------------------------------
Github user zombieJ commented on a diff in the pull request:
https://github.com/apache/eagle/pull/753#discussion_r94540538
--- Diff:
eagle-hadoop-metric/src/main/webapp/app/apps/hadoop_metric/ctrls/overview.js ---
@@ -21,52 +21,193 @@
* `register` without params will load the module which using require
*/
register(function (hadoopMetricApp) {
- hadoopMetricApp.controller("overviewCtrl", function ($scope,
PageConfig) {
+ hadoopMetricApp.controller("overviewCtrl", function ($q,
$wrapState, $scope, PageConfig, METRIC, Time) {
+ var cache = {};
+ var mapRes = common.map2;
+ $scope.site = $wrapState.param.siteId;
+ var activeMasterInfo =
METRIC.hbaseActiveMaster($scope.site);
+ var metricMap = common.map1;
+ metricMap.put("nonheap",
"hadoop.memory.nonheapmemoryusage.used");
+ metricMap.put("heap",
"hadoop.memory.heapmemoryusage.used");
+ metricMap.put("averageload",
"hadoop.hbase.master.server.averageload");
+ metricMap.put("ritcount",
"hadoop.hbase.master.assignmentmanger.ritcount");
+ metricMap.put("ritcountoverthreshold",
"hadoop.hbase.master.assignmentmanger.ritcountoverthreshold");
+ metricMap.put("AssignNumOps",
"hadoop.hbase.master.assignmentmanger.assign_num_ops");
+ metricMap.put("AssignMin",
"hadoop.hbase.master.assignmentmanger.assign_min");
+ metricMap.put("AssignMax",
"hadoop.hbase.master.assignmentmanger.assign_max");
+ metricMap.put("AssignPercentile75th",
"hadoop.hbase.master.assignmentmanger.assign_75th_percentile");
+ metricMap.put("AssignPercentile95th",
"hadoop.hbase.master.assignmentmanger.assign_95th_percentile");
+ metricMap.put("AssignPercentile99th",
"hadoop.hbase.master.assignmentmanger.assign_99th_percentile");
+ metricMap.put("BulkAssignNum_ops",
"hadoop.hbase.master.assignmentmanger.bulkassign_num_ops");
+ metricMap.put("BulkAssignMin",
"hadoop.hbase.master.assignmentmanger.bulkassign_min");
+ metricMap.put("BulkAssignMax",
"hadoop.hbase.master.assignmentmanger.bulkassign_max");
+ metricMap.put("BulkAssignPercentile75th",
"hadoop.hbase.master.assignmentmanger.bulkassign_75th_percentile");
+ metricMap.put("BulkAssignPercentile95th",
"hadoop.hbase.master.assignmentmanger.bulkassign_95th_percentile");
+ metricMap.put("BulkAssignPercentile99th",
"hadoop.hbase.master.assignmentmanger.bulkassign_99th_percentile");
+ metricMap.put("BalancerClusterNum_ops",
"hadoop.hbase.master.balancer.balancercluster_num_ops");
+ metricMap.put("BalancerClusterMin",
"hadoop.hbase.master.balancer.balancercluster_min");
+ metricMap.put("BalancerClusterMax",
"hadoop.hbase.master.balancer.balancercluster_max");
+ metricMap.put("BalancerClusterPercentile75th",
"hadoop.hbase.master.balancer.balancercluster_75th_percentile");
+ metricMap.put("BalancerClusterPercentile95th",
"hadoop.hbase.master.balancer.balancercluster_95th_percentile");
+ metricMap.put("BalancerClusterPercentile99th",
"hadoop.hbase.master.balancer.balancercluster_99th_percentile");
+ metricMap.put("HlogSplitTimeMin",
"hadoop.hbase.master.filesystem.hlogsplittime_min");
+ metricMap.put("HlogSplitTimeMax",
"hadoop.hbase.master.filesystem.hlogsplittime_max");
+ metricMap.put("HlogSplitTimePercentile75th",
"hadoop.hbase.master.filesystem.hlogsplittime_75th_percentile");
+ metricMap.put("HlogSplitTimePercentile95th",
"hadoop.hbase.master.filesystem.hlogsplittime_95th_percentile");
+ metricMap.put("HlogSplitTimePercentile99th",
"hadoop.hbase.master.filesystem.hlogsplittime_99th_percentile");
+ metricMap.put("HlogSplitSizeMin",
"hadoop.hbase.master.filesystem.hlogsplitsize_min");
+ metricMap.put("HlogSplitSizeMax",
"hadoop.hbase.master.filesystem.hlogsplitsize_max");
+ metricMap.put("MetaHlogSplitTimeMin",
"hadoop.hbase.master.filesystem.metahlogsplittime_min");
+ metricMap.put("MetaHlogSplitTimeMax",
"hadoop.hbase.master.filesystem.metahlogsplittime_max");
+ metricMap.put("MetaHlogSplitTimePercentile75th",
"hadoop.hbase.master.filesystem.metahlogsplittime_75th_percentile");
+ metricMap.put("MetaHlogSplitTimePercentile95th",
"hadoop.hbase.master.filesystem.metahlogsplittime_95th_percentile");
+ metricMap.put("MetaHlogSplitTimePercentile99th",
"hadoop.hbase.master.filesystem.metahlogsplittime_99th_percentile");
+ metricMap.put("MetaHlogSplitSizeMin",
"hadoop.hbase.master.filesystem.metahlogsplitsize_min");
+ metricMap.put("MetaHlogSplitSizeMax",
"hadoop.hbase.master.filesystem.metahlogsplitsize_max");
+
PageConfig.title = 'Overview';
+ var storageOption = {
+ animation: false,
+ tooltip: {
+ formatter: function (points) {
+ return points[0].name + "<br/>"
+
+ $.map(points, function
(point) {
+ return '<span
style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'
+ point.color + '"></span> ' +
+
point.seriesName + ": " +
+
common.number.abbr(point.value, true, 0);
+
}).reverse().join("<br/>");
+ }
+ },
+ yAxis: [{
+ axisLabel: {
+ formatter: function (value) {
+ return
common.number.sizeFormat(value, 0);
+ }
+ }
+ }]
+ };
+ $scope.metricList = {};
+
+ function generateHbaseMetric(name, param) {
+ var startTime = Time.startTime();
+ var endTime = Time.endTime();
+ var interval = Time.diffInterval(startTime,
endTime);
+ var intervalMin = interval / 1000 / 60;
+ var trendStartTime = Time.align(startTime,
interval);
+ var trendEndTime = Time.align(endTime,
interval);
- $scope.commonOption = {};
+ $scope.site = $wrapState.param.siteId;
- // Mock series data
- function mockMetric(name, option, count) {
- count = count || 1;
- var now = +new Date();
+ var metrics = cache[name] = cache[name] ||
$q.all([activeMasterInfo._promise]).then(function (res) {
+ var hostname = cache[hostname]
= cache[hostname] || res[0][0].tags.hostname;
+ $scope.defaultHostname =
$wrapState.param.hostname || hostname;
+ var jobCond = {
+ site: $scope.site,
+ component:
"hbasemaster",
+ host:
$scope.defaultHostname
+ };
+ return
METRIC.aggMetricsToEntities(METRIC.hbaseMetricsAggregation(jobCond, name,
["site"], "avg(value)", intervalMin, trendStartTime, trendEndTime), param)
+ ._promise.then(function
(list) {
+ var metricFlag
= $.map(list, function (metrics) {
+ return
metrics[0].flag;
+ });
+ return
[metricFlag, list];
+ });
+
+ });
+ return metrics;
+ }
+
+ function mergeMetricToOneSeries(metricTitle, metrics,
legendName, dataOption, option) {
var series = [];
- for (var i = 0 ; i < count ; i += 1) {
- var data = [];
- for(var j = 0 ; j < 30 ; j += 1) {
- data.push({x: now + j * 1000 *
60, y: Math.random() * 100});
- }
+ $.each(metrics, function (i, metricMap) {
+
series.push(METRIC.metricsToSeries(legendName[i], metricMap[0], option));
+ });
- series.push($.extend({
- name: name + '_' + i,
- type: 'line',
- data: data,
- showSymbol: false,
- }, option));
- }
return {
- title: name,
- series: series
+ title: metricTitle,
+ series: series,
+ option: dataOption || {}
};
}
- $scope.metricList = [
- mockMetric('name1', {}),
- mockMetric('name2', {smooth:true}),
- mockMetric('name3', {areaStyle: {normal: {}}}),
- mockMetric('name4', {type: 'bar'}),
- mockMetric('name1', {}, 2),
- mockMetric('name2', {smooth:true}, 2),
- mockMetric('name3', {areaStyle: {normal: {}},
stack: 'one'}, 2),
- mockMetric('name4', {type: 'bar', stack:
'one'}, 2),
- mockMetric('name1', {}, 3),
- mockMetric('name2', {smooth:true}, 3),
- mockMetric('name3', {areaStyle: {normal: {}},
stack: 'one'}, 3),
- mockMetric('name4', {type: 'bar', stack:
'one'}, 3),
- ];
+ // TODO: Optimize the chart count
+ // TODO: ECharts dynamic refresh series bug:
https://github.com/ecomfe/echarts/issues/4033
+
+
+ $scope.refresh = function () {
+ var hbaseservers =
METRIC.hbasehostStatus({site: $scope.site});
+ var metricspromies = [];
+ var summaryPromises = [];
+ for (var i = 0; i < metricMap.keys().length; i
+= 1) {
+ var key = [];
+ key = metricMap.keys()[i];
+ var value = metricMap.get(key);
+
metricspromies.push(generateHbaseMetric(value, key));
+ }
+ summaryPromises.push(hbaseservers._promise);
+ $q.all(metricspromies).then(function (res) {
+ $.each(res, function (i, metrics) {
+ mapRes.put(metrics[0],
metrics[1]);
+ });
+ $scope.metricList = [
+
mergeMetricToOneSeries("MemoryUsage", [mapRes.get("nonheap"),
mapRes.get("heap")], ["nonheap", "heap"], storageOption),
+ mergeMetricToOneSeries("Master
Averageload", [mapRes.get("averageload")], ["averageload"]),
+
mergeMetricToOneSeries("Ritcount", [mapRes.get("ritcount"),
mapRes.get("ritcountoverthreshold")], ["ritcount", "ritcountoverthreshold"]),
+
mergeMetricToOneSeries("Assign", [mapRes.get("AssignNumOps"),
mapRes.get("AssignMin"), mapRes.get("AssignMax")], ["numOps", "Min", "Max"]),
+ mergeMetricToOneSeries("Assign
Percentile", [mapRes.get("AssignPercentile75th"),
mapRes.get("AssignPercentile95th"), mapRes.get("AssignPercentile99th")],
["75th", "95th", "99th"]),
+
mergeMetricToOneSeries("BulkAssign", [mapRes.get("BulkAssignNum_ops"),
mapRes.get("BulkAssignMin"), mapRes.get("BulkAssignMax")], ["num_ops", "min",
"max"]),
+
mergeMetricToOneSeries("BulkAssign Percentile",
[mapRes.get("BulkAssignPercentile75th"),
mapRes.get("BulkAssignPercentile95th"),
mapRes.get("BulkAssignPercentile99th")], ["75th", "95th", "99th"]),
+
mergeMetricToOneSeries("BalancerCluster",
[mapRes.get("BalancerClusterNum_ops"), mapRes.get("BalancerClusterMin"),
mapRes.get("BalancerClusterMax")], ["num_ops", "min", "max"]),
+
mergeMetricToOneSeries("BalancerCluster Percentile",
[mapRes.get("BalancerClusterPercentile75th"),
mapRes.get("BalancerClusterPercentile95th"),
mapRes.get("BalancerClusterPercentile99th")], ["75th", "95th", "99th"]),
+
mergeMetricToOneSeries("HlogSplitTime", [mapRes.get("HlogSplitTimeMin"),
mapRes.get("HlogSplitTimeMax")], ["HlogSplitTime_min", "HlogSplitTime_max"]),
+
mergeMetricToOneSeries("HlogSplitTime Percentile",
[mapRes.get("HlogSplitTimePercentile75th"),
mapRes.get("HlogSplitTimePercentile95th"),
mapRes.get("HlogSplitTimePercentile99th")], ["75th", "95th", "99th"]),
+
mergeMetricToOneSeries("HlogSplitSize", [mapRes.get("HlogSplitSizeMin"),
mapRes.get("HlogSplitSizeMax")], ["Min", "Max"]),
+
mergeMetricToOneSeries("MetaHlogSplitTime",
[mapRes.get("MetaHlogSplitTimeMin"), mapRes.get("MetaHlogSplitTimeMax")],
["Min", "Max"]),
+
mergeMetricToOneSeries("MetaHlogSplitTime Percentile",
[mapRes.get("MetaHlogSplitTimePercentile75th"),
mapRes.get("MetaHlogSplitTimePercentile95th"),
mapRes.get("MetaHlogSplitTimePercentile99th")], ["75th", "95th", "99th"]),
+
mergeMetricToOneSeries("MetaHlogSplitSize",
[mapRes.get("MetaHlogSplitSizeMin"), mapRes.get("MetaHlogSplitSizeMax")],
["Min", "Max"])
+ ];
+ });
+ $q.all(summaryPromises).then(function (res) {
+ var regionhealtynum = 0;
+ var regiontotal = 0;
+ var hmasteractive;
+ var hmasterstandby;
+ $.each(res[0], function (i, server) {
+ var role = server.tags.role;
+ var status = server.status;
+ if (role === "regionserver") {
--- End diff --
Prefer enum
> JMX Dashboard
> -------------
>
> Key: EAGLE-845
> URL: https://issues.apache.org/jira/browse/EAGLE-845
> Project: Eagle
> Issue Type: New Feature
> Components: Hadoop JMX Monitor, Web UI
> Reporter: JiJun Tang
> Assignee: Lingang Deng
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)