You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/03/01 23:22:17 UTC

[3/5] ambari git commit: AMBARI-9865. Services > AMS page: Add charts to display performance of the AMS HBase cluster (alexantonenko)

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 8935441..1089ce7 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -235,6 +235,13 @@ require('views/main/service/info/metrics/hbase/regionserver_regions');
 require('views/main/service/info/metrics/hbase/regionserver_queuesize');
 require('views/main/service/info/metrics/hbase/hlog_split_time');
 require('views/main/service/info/metrics/hbase/hlog_split_size');
+require('views/main/service/info/metrics/ambari_metrics/master_average_load');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_base');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_store_files');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_regions');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_requests');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_compaction_queue_size');
 require('views/main/service/info/metrics/flume/channel_sum');
 require('views/main/service/info/metrics/flume/channel_size_mma');
 require('views/main/service/info/metrics/flume/flume_incoming_sum');

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/master_average_load.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/master_average_load.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/master_average_load.js
new file mode 100644
index 0000000..be11f85
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/master_average_load.js
@@ -0,0 +1,54 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a view for showing HBase master avereage load
+ *
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_MasterAverageLoad = App.ChartLinearTimeView.extend({
+  id: "service-metrics-ambari-metrics-master-average-load",
+  title: Em.I18n.t('services.service.info.metrics.ambariMetrics.master.averageLoad'),
+  ajaxIndex: 'service.metrics.ambari_metrics.master.average_load',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.hbase && jsonData.metrics.hbase.master) {
+      for ( var name in jsonData.metrics.hbase.master) {
+        var displayName;
+        var seriesData = jsonData.metrics.hbase.master[name];
+        switch (name) {
+          case "AverageLoad":
+            displayName = Em.I18n.t('services.service.info.metrics.ambariMetrics.master.displayNames.averageLoad');
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_base.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_base.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_base.js
new file mode 100644
index 0000000..2d15f11
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_base.js
@@ -0,0 +1,53 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a a base for views showing data for HBase RegionServer
+ *
+ * @extends App.ChartLinearTimeView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_RegionServerBaseView = App.ChartLinearTimeView.extend({
+  displayName: '',
+  regionServerName: '',
+
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    if (jsonData && jsonData.metrics && jsonData.metrics.hbase && jsonData.metrics.hbase.regionserver) {
+      for (var name in jsonData.metrics.hbase.regionserver) {
+        var displayName,
+            seriesData = jsonData.metrics.hbase.regionserver[name];
+        switch (name) {
+          case this.regionServerName:
+            displayName = this.displayName;
+            break;
+          default:
+            break;
+        }
+        if (seriesData) {
+          seriesArray.push(this.transformData(seriesData, displayName));
+        }
+      }
+    }
+    return seriesArray;
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
new file mode 100644
index 0000000..bdc5bf6
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_block_cache_hit_percent.js
@@ -0,0 +1,38 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a view for showing HBase RegionServer Block cache hit percent
+ *
+ * @extends App.ChartServiceMetricsAMS_RegionServerBaseView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_RegionServerBlockCacheHitPercent = App.ChartServiceMetricsAMS_RegionServerBaseView.extend({
+  id: "service-metrics-ambari-metrics-region-server-block-cache-hit-percent",
+  title: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.blockCacheHitPercent'),
+  renderer: 'line',
+  yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
+  ajaxIndex: 'service.metrics.ambari_metrics.region_server.block_cache_hit_percent',
+
+  displayName: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.displayNames.blockCacheHitPercent'),
+  regionServerName: 'blockCacheHitPercent'
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_compaction_queue_size.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_compaction_queue_size.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_compaction_queue_size.js
new file mode 100644
index 0000000..e2e0b12
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_compaction_queue_size.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a view for showing HBase RegionServer compaction queue size
+ *
+ * @extends App.ChartServiceMetricsAMS_RegionServerBaseView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_RegionServerCompactionQueueSize = App.ChartServiceMetricsAMS_RegionServerBaseView.extend({
+  id: "service-metrics-ambari-metrics-region-server-compaction-queue-size",
+  title: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.compactionQueueSize'),
+  ajaxIndex: 'service.metrics.ambari_metrics.region_server.compaction_queue_size',
+
+  displayName: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.displayNames.compactionQueueSize'),
+  regionServerName: 'compactionQueueSize'
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_regions.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_regions.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_regions.js
new file mode 100644
index 0000000..db9e4b7
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_regions.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a view for showing HBase RegionServer regions
+ *
+ * @extends App.ChartServiceMetricsAMS_RegionServerBaseView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_RegionServerRegions = App.ChartServiceMetricsAMS_RegionServerBaseView.extend({
+  id: "service-metrics-ambari-metrics-region-server-regions",
+  title: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.regions'),
+  ajaxIndex: 'service.metrics.ambari_metrics.region_server.regions',
+
+  displayName:  Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.displayNames.regionsCount'),
+  regionServerName: 'regions'
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_requests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_requests.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_requests.js
new file mode 100644
index 0000000..ba4f5d9
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_requests.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a view for showing HBase RegionServer requests
+ *
+ * @extends App.ChartServiceMetricsAMS_RegionServerBaseView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_RegionServerRequests = App.ChartServiceMetricsAMS_RegionServerBaseView.extend({
+  id: "service-metrics-ambari-metrics-region-server-requests",
+  title: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.requests'),
+  ajaxIndex: 'service.metrics.ambari_metrics.region_server.request',
+
+  displayName: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.displayNames.requestCount'),
+  regionServerName: 'requests'
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_store_files.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_store_files.js b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_store_files.js
new file mode 100644
index 0000000..5280eac
--- /dev/null
+++ b/ambari-web/app/views/main/service/info/metrics/ambari_metrics/regionserver_store_files.js
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+
+var App = require('app');
+
+/**
+ * @class
+ *
+ * This is a view for showing HBase RegionServer store files
+ *
+ * @extends App.ChartServiceMetricsAMS_RegionServerBaseView
+ * @extends Ember.Object
+ * @extends Ember.View
+ */
+App.ChartServiceMetricsAMS_RegionServerStoreFiles = App.ChartServiceMetricsAMS_RegionServerBaseView.extend({
+  id: "service-metrics-ambari-metrics-region-server-store-files",
+  title: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.storeFiles'),
+  renderer: 'line',
+  ajaxIndex: 'service.metrics.ambari_metrics.region_server.store_files',
+  regionServerName: 'storefiles',
+  displayName: Em.I18n.t('services.service.info.metrics.ambariMetrics.regionServer.displayNames.storeFilesCount')
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/568e49df/ambari-web/test/views/main/service/info/metrics/ambari_metrics/regionserver_base_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/service/info/metrics/ambari_metrics/regionserver_base_test.js b/ambari-web/test/views/main/service/info/metrics/ambari_metrics/regionserver_base_test.js
new file mode 100644
index 0000000..a43c345
--- /dev/null
+++ b/ambari-web/test/views/main/service/info/metrics/ambari_metrics/regionserver_base_test.js
@@ -0,0 +1,49 @@
+/**
+ * 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.
+ */
+
+
+var App = require('app');
+require('views/main/service/info/metrics/ambari_metrics/regionserver_base');
+
+describe('App.ChartServiceMetricsAMS_RegionServerBaseView', function () {
+
+  var regionServerView = App.ChartServiceMetricsAMS_RegionServerBaseView.extend({
+    id: "service-metrics-ambari-metrics-region-server-test",
+    title: 'test-title',
+    ajaxIndex: 'service.metrics.ambari_metrics.region_server.regions',
+    displayName: 'test-display-name',
+    regionServerName: 'test'
+  }).create();
+
+  it('#transformData should transform data for regionserver requests', function () {
+    var jsonData = {
+      "metrics": {
+        "hbase": {
+          "regionserver": {
+            "test": [[11.0, 1424948261], [11.0, 1424948306], [11.0, 1424948321]]
+          }
+        }
+      }
+    };
+    var result = regionServerView.transformToSeries(jsonData);
+    expect(result[0].name === regionServerView.displayName).to.be.true;
+    expect(result[0].data.length === jsonData.metrics.hbase.regionserver['test'].length).to.be.true;
+    expect(result[0].data[0]).to.have.property('y').to.equal(11);
+    expect(result[0].data[0]).to.have.property('x').to.equal(1424948261);
+  });
+});
\ No newline at end of file