Prechádzať zdrojové kódy

correction du sql des gauges

Damien Pacaud 12 rokov pred
rodič
commit
3e5cec2623
2 zmenil súbory, kde vykonal 67 pridanie a 3 odobranie
  1. 3 1
      engines/gaugesEngine.js
  2. 64 2
      mysql-backend.js

+ 3 - 1
engines/gaugesEngine.js

@@ -27,7 +27,9 @@ MySQLBackendGaugesEngine.prototype.buildQuerries = function(gauges, time_stamp)
          *    - userCounterName: Counter name
          *    - counterValue: Counter value
          */
-        querries.push("insert into `gauges_statistics` values ("+time_stamp+", '"+gaugeName+"', "+gaugeValue+");");
+        //querries.push("insert into `gauges_statistics` values ("+time_stamp+", '"+gaugeName+"', "+gaugeValue+");");
+        querries.push("insert into `gauges_statistics` select "+time_stamp+", '"+gaugeName+"', "+gaugeValue+" from dual where (select if(max(value),max(value),-678) from `gauges_statistics` where name = '"+gaugeName+"') = -678 OR (select value from `gauges_statistics` where name = '"+gaugeName+"' order by timestamp desc limit 0,1) <> "+gaugeValue+";")
+
       }
     }
 

+ 64 - 2
mysql-backend.js

@@ -346,6 +346,8 @@ StatdMySQLBackend.prototype.onFlush = function(time_stamp, metrics) {
   var sets = metrics['sets'];
   var pctThreshold = metrics['pctThreshold'];
 
+  console.log("METRICS : \n " + util.inspect(metrics) + "\n ===========================");
+
   // Handle statsd counters
   self.handleCounters(counters,time_stamp);
 
@@ -420,9 +422,9 @@ StatdMySQLBackend.prototype.handleCounters = function(_counters, time_stamp) {
 
 
 /**
- * Handle and process received counters 
+ * Handle and process received gauges 
  * 
- * @param _counters received counters
+ * @param _gauges received _gauges
  * @param time_stamp flush time_stamp 
  */
 StatdMySQLBackend.prototype.handleGauges = function(_gauges, time_stamp) {
@@ -475,6 +477,66 @@ StatdMySQLBackend.prototype.handleGauges = function(_gauges, time_stamp) {
 }
 
 
+/**
+ * Handle and process received timers 
+ * 
+ * @param _timers received timers
+ * @param time_stamp flush time_stamp 
+ */
+StatdMySQLBackend.prototype.handleTimers = function(_timers, time_stamp) {
+  var self = this;
+  
+  var timersSize = 0
+  for(var t in _timers) { timersSize++; }
+
+  // If gauges received
+  if(timersSize > 0) {
+    console.log("Timers received !");
+    console.log("Timers = " + util.inspect(_gauges));
+    var querries = [];
+
+    // Open MySQL connection
+    var canExecuteQuerries = self.openMySqlConnection();
+    if(canExecuteQuerries) {
+      console.log("ok");
+        //////////////////////////////////////////////////////////////////////
+        // Call buildQuerries method on each counterEngine
+        for(var gaugesEngineIndex in self.engines.gauges) {
+          console.log("gaugesEngineIndex = " + gaugesEngineIndex);
+          var gaugesEngine = self.engines.gauges[gaugesEngineIndex];
+
+          // Add current engine querries to querries list
+          var engineQuerries = gaugesEngine.buildQuerries(_gauges, time_stamp);
+          querries = querries.concat(engineQuerries);
+
+          // Insert data into database every 100 query
+          if(querries.length >= 100) {
+            // Execute querries
+            self.executeQuerries(querries);
+            querries = [];
+          }
+
+        }
+
+        if(querries.length > 0) {
+          // Execute querries
+          self.executeQuerries(querries);
+          querries = [];
+        }
+    } else {
+      console.log("Unable to open db connection !");
+    }
+
+    // Close MySQL Connection
+    self.closeMySqlConnection();
+  }
+}
+
+/**
+ * MISSING DOCUMENTATION 
+ * 
+ * @param sqlQuerries
+ */
 StatdMySQLBackend.prototype.executeQuerries = function(sqlQuerries) {
   
   var self = this;