hadoop/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/ksm/ksm.js

109 lines
4.2 KiB
JavaScript

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function () {
"use strict";
var isIgnoredJmxKeys = function (key) {
return key == 'name' || key == 'modelerType' || key.match(/tag.*/);
};
angular.module('ksm', ['ozone', 'nvd3']);
angular.module('ksm').config(function ($routeProvider) {
$routeProvider
.when("/metrics/ksm", {
template: "<ksm-metrics></ksm-metrics>"
});
});
angular.module('ksm').component('ksmMetrics', {
templateUrl: 'ksm-metrics.html',
controller: function ($http) {
var ctrl = this;
ctrl.graphOptions = {
chart: {
type: 'pieChart',
height: 500,
x: function (d) {
return d.key;
},
y: function (d) {
return d.value;
},
showLabels: true,
labelType: 'value',
duration: 500,
labelThreshold: 0.01,
labelSunbeamLayout: true,
legend: {
margin: {
top: 5,
right: 35,
bottom: 5,
left: 0
}
}
}
};
$http.get("/jmx?qry=Hadoop:service=KeySpaceManager,name=KSMMetrics")
.then(function (result) {
var groupedMetrics = {others: [], nums: {}};
var metrics = result.data.beans[0]
for (var key in metrics) {
var numericalStatistic = key.match(/Num([A-Z][a-z]+)(.+?)(Fails)?$/);
if (numericalStatistic) {
var type = numericalStatistic[1];
var name = numericalStatistic[2];
var failed = numericalStatistic[3];
groupedMetrics.nums[type] = groupedMetrics.nums[type] || {
failures: [],
all: []
};
if (failed) {
groupedMetrics.nums[type].failures.push({
key: name,
value: metrics[key]
})
} else {
if (name == "Ops") {
groupedMetrics.nums[type].ops = metrics[key]
} else {
groupedMetrics.nums[type].all.push({
key: name,
value: metrics[key]
})
}
}
} else if (isIgnoredJmxKeys(key)) {
//ignore
} else {
groupedMetrics.others.push({
'key': key,
'value': metrics[key]
});
}
}
ctrl.metrics = groupedMetrics;
})
}
});
})();