Browse Source

AMBARI-1252. Fetch Nagios alerts through Ambari Server and not directly from Nagios Server. (srimanth via yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1438294 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 years ago
parent
commit
361652af66

+ 4 - 0
CHANGES.txt

@@ -12,7 +12,11 @@ Trunk (unreleased changes):
 
 
  NEW FEATURES
  NEW FEATURES
 
 
+ AMBARI-1252. Fetch Nagios alerts through Ambari Server and not directly
+ from Nagios Server. (srimanth via yusaku)
+
  AMBARI-1237. Expose Nagios alerts via Rest API. (Nate Cole via jspeidel)
  AMBARI-1237. Expose Nagios alerts via Rest API. (Nate Cole via jspeidel)
+
  AMBARI-1163. During agent registration and heartbeat, send information about
  AMBARI-1163. During agent registration and heartbeat, send information about
  various hadoop artifacts back to Ambari. (Nate Cole via mahadev)
  various hadoop artifacts back to Ambari. (Nate Cole via mahadev)
 
 

File diff suppressed because it is too large
+ 7 - 426
ambari-web/app/assets/data/alerts/alerts.json


+ 2 - 9
ambari-web/app/controllers/global/cluster_controller.js

@@ -210,10 +210,9 @@ App.ClusterController = Em.Controller.extend({
       if (lastSlash > -1) {
       if (lastSlash > -1) {
         nagiosUrl = nagiosUrl.substring(0, lastSlash);
         nagiosUrl = nagiosUrl.substring(0, lastSlash);
       }
       }
-      var dataUrl;
+      var dataUrl = this.getUrl('/data/alerts/alerts.json', '/host_components?HostRoles/component_name=NAGIOS_SERVER&fields=HostRoles/nagios_alerts');
       var ajaxOptions = {
       var ajaxOptions = {
-        dataType:"jsonp",
-        jsonp:"jsonp",
+        dataType:"json",
         context:this,
         context:this,
         complete:function (jqXHR, textStatus) {
         complete:function (jqXHR, textStatus) {
           this.updateLoadStatus('alerts');
           this.updateLoadStatus('alerts');
@@ -224,12 +223,6 @@ App.ClusterController = Em.Controller.extend({
           console.log('Nagios $.ajax() response:', error);
           console.log('Nagios $.ajax() response:', error);
         }
         }
       };
       };
-      if (App.testMode) {
-        dataUrl = "/data/alerts/alerts.jsonp";
-        ajaxOptions.jsonpCallback = "jQuery172040994187095202506_1352498338217";
-      } else {
-        dataUrl = nagiosUrl + "/hdp/nagios/nagios_alerts.php?q1=alerts&alert_type=all";
-      }
       App.HttpClient.get(dataUrl, App.alertsMapper, ajaxOptions);
       App.HttpClient.get(dataUrl, App.alertsMapper, ajaxOptions);
     } else {
     } else {
       this.updateLoadStatus('alerts');
       this.updateLoadStatus('alerts');

+ 7 - 5
ambari-web/app/mappers/alerts_mapper.js

@@ -41,26 +41,28 @@ App.alertsMapper = App.QuickDataMapper.create({
     if (!this.get('model')) {
     if (!this.get('model')) {
       return;
       return;
     }
     }
-    if (json.alerts) {
+    if (json && json.items && json.items.length>0 && json.items[0].HostRoles && json.items[0].HostRoles.nagios_alerts) {
+      var alertsString = json.items[0].HostRoles.nagios_alerts;
+      var alerts = jQuery.parseJSON(alertsString).alerts;
       if (App.Alert.find().content.length > 0) {
       if (App.Alert.find().content.length > 0) {
-        this.update(json);
+        this.update(alerts);
       } else {
       } else {
         var result = [];
         var result = [];
-        json.alerts.forEach(function (item) {
+        alerts.forEach(function (item) {
           result.push(this.parseIt(item, this.config));
           result.push(this.parseIt(item, this.config));
         }, this);
         }, this);
         App.store.loadMany(this.get('model'), result);
         App.store.loadMany(this.get('model'), result);
       }
       }
     }
     }
   },
   },
-  update: function(json){
+  update: function(alerts){
     var alertsList = App.Alert.find();
     var alertsList = App.Alert.find();
     var titleToAlertMap = {};
     var titleToAlertMap = {};
     alertsList.forEach(function(alert){
     alertsList.forEach(function(alert){
       titleToAlertMap[alert.get('serviceType') + alert.get('title') + alert.get('message')] = alert;
       titleToAlertMap[alert.get('serviceType') + alert.get('title') + alert.get('message')] = alert;
     });
     });
     var newRecords = [];
     var newRecords = [];
-    json.alerts.forEach(function(item){
+    alerts.forEach(function(item){
       var existAlert = titleToAlertMap[item.service_type + item.service_description + item.plugin_output];
       var existAlert = titleToAlertMap[item.service_type + item.service_description + item.plugin_output];
       if (existAlert == null) {
       if (existAlert == null) {
         newRecords.push(this.parseIt(item, this.config));
         newRecords.push(this.parseIt(item, this.config));

Some files were not shown because too many files changed in this diff