Browse Source

AMBARI-4975. Storm: Move storm's metrics data processing from Storm REST API component to Nimbus. (Buzhor Denys via akovalenko)

Aleksandr Kovalenko 11 years ago
parent
commit
4746abd73f

+ 29 - 23
ambari-web/app/mixins/common/chart/storm_linear_time.js

@@ -20,33 +20,39 @@
 var App = require('app');
 
 App.StormLinearTimeChartMixin = Em.Mixin.create({
-  chartStormModel: function() {
-    return App.StormService.find().objectAt(0);
-  }.property(''),
+  ajaxIndex: 'service.metrics.storm.nimbus',
+  metricsTemplate: 'metrics/storm/nimbus/{0}[{1},{2},{3}]',
 
-  loadData: function() {
-    this._refreshGraph();
+  getDataForAjaxRequest: function() {
+    var currentTime = Math.round(App.dateTime() / 1000);
+    var metricTemplate = [];
+    this.get('stormChartDefinition').forEach(function(chartInfo) {
+      metricTemplate.push(
+        this.get('metricsTemplate').format(chartInfo.field, currentTime - this.get('timeUnitSeconds'), currentTime, 15)
+      );
+    }, this);
+    return {
+      metricsTemplate: metricTemplate.join(',')
+    };
   },
 
-  showGraphInPopup: function() {
-    this._super();
-    var self = this;
-    // show data in popup
-    Em.run.next(function() {
-      self.set('isPopupReady', true);
+  transformToSeries: function (jsonData) {
+    var seriesArray = [];
+    var pathKeys = ['metrics','storm','nimbus'];
+    var validPath = true;
+    pathKeys.forEach(function(key) {
+      if (!jsonData[key]) {
+        validPath = false;
+      } else {
+        jsonData = jsonData[key];
+      }
     });
-  },
-
-  transformToSeries: function () {
-    return this.getMappedStormData();
-  },
-
-  getMappedStormData: function() {
-    var seriesData = [];
-    this.get('stormChartDefinition').forEach(function(item) {
-      if (this.get('chartStormModel.' + item.value) || this.get('chartStormModel.' + item.value) == 0)
-        seriesData.push(this.transformData(this.get('chartStormModel.' + item.value), item.name));
+    if (!validPath) {
+      return seriesArray;
+    }
+    this.get('stormChartDefinition').forEach(function(chart){
+      seriesArray.push(this.transformData(jsonData[chart.field], chart.name));
     }, this);
-    return seriesData;
+    return seriesArray;
   }
 });

+ 4 - 0
ambari-web/app/utils/ajax.js

@@ -687,6 +687,10 @@ var urls = {
     'mock': '',
     'testInProduction': true
   },
+  'service.metrics.storm.nimbus': {
+    'real': '/clusters/{clusterName}/services/STORM/components/NIMBUS?fields={metricsTemplate}',
+    'mock': ''
+  },
   'dashboard.cluster_metrics.cpu': {
     'real': '/clusters/{clusterName}/?fields=metrics/cpu[{fromSeconds},{toSeconds},{stepSeconds}]',
     'mock': '/data/cluster_metrics/cpu_1hr.json',

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/storm/executors_metric.js

@@ -27,7 +27,7 @@ App.ChartServiceMetricsSTORM_Executors = App.ChartLinearTimeView.extend(App.Stor
   stormChartDefinition: [
     {
       name: Em.I18n.t('services.storm.executors.metrics.total'),
-      value: 'totalExecutors'
+      field: 'totalexecutors'
     }
   ]
 

+ 3 - 3
ambari-web/app/views/main/service/info/metrics/storm/slots_number_metric.js

@@ -27,15 +27,15 @@ App.ChartServiceMetricsSTORM_SlotsNumber = App.ChartLinearTimeView.extend(App.St
   stormChartDefinition: [
     {
       name: Em.I18n.t('services.storm.slots.metrics.total'),
-      value: 'totalSlots'
+      field: 'totalslots'
     },
     {
       name: Em.I18n.t('services.storm.slots.metrics.free'),
-      value: 'freeSlots'
+      field: 'freeslots'
     },
     {
       name: Em.I18n.t('services.storm.slots.metrics.used'),
-      value: 'usedSlots'
+      field: 'usedslots'
     }
   ]
 

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/storm/tasks_metric.js

@@ -27,7 +27,7 @@ App.ChartServiceMetricsSTORM_Tasks = App.ChartLinearTimeView.extend(App.StormLin
   stormChartDefinition: [
     {
       name: Em.I18n.t('services.storm.tasks.metrics.total'),
-      value: 'totalTasks'
+      field: 'totaltasks'
     }
   ]
 

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/storm/topologies_metric.js

@@ -27,7 +27,7 @@ App.ChartServiceMetricsSTORM_Topologies = App.ChartLinearTimeView.extend(App.Sto
   stormChartDefinition: [
     {
       name: Em.I18n.t('services.storm.topology.metrics.total'),
-      value: 'topologies'
+      field: 'topologies'
     }
   ]