Author: cwiklik
Date: Tue May 31 18:35:52 2016
New Revision: 1746316

URL: http://svn.apache.org/viewvc?rev=1746316&view=rev
Log:
UIMA-4948 new load avg collector based on scaping uptime command

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/metrics/collectors/NodeLoadAverageCollector.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/metrics/collectors/NodeLoadAverageCollector.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/metrics/collectors/NodeLoadAverageCollector.java?rev=1746316&r1=1746315&r2=1746316&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/metrics/collectors/NodeLoadAverageCollector.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/metrics/collectors/NodeLoadAverageCollector.java
 Tue May 31 18:35:52 2016
@@ -18,22 +18,61 @@
 */
 package org.apache.uima.ducc.agent.metrics.collectors;
 
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.RandomAccessFile;
 import java.util.concurrent.Callable;
 
 import org.apache.uima.ducc.common.node.metrics.NodeLoadAverage;
-import org.apache.uima.ducc.common.node.metrics.NodeLoadAverageInfo;
+import org.apache.uima.ducc.common.node.metrics.UptimeNodeLoadAverage;
 
 
 public class NodeLoadAverageCollector extends AbstractMetricCollector 
 implements Callable<NodeLoadAverage>{
   
+ public NodeLoadAverageCollector() {
+       super(null,0,0);
+       
+ }
   public NodeLoadAverageCollector(RandomAccessFile metricFile,  int howMany, 
int offset) {
     super(metricFile, howMany, offset);
   }
 
   public NodeLoadAverage call() throws Exception {
-    super.parseMetricFile();
-    return new NodeLoadAverageInfo(super.metricFileContents, 
super.metricFieldOffsets, super.metricFieldLengths);
+    //super.parseMetricFile();
+    
+//      UptimeNodeLoadAverage uptimeLoadAverage = new UptimeNodeLoadAverage();
+        return collect();
+        //return new NodeLoadAverageInfo(super.metricFileContents, 
super.metricFieldOffsets, super.metricFieldLengths);
   }
+       private NodeLoadAverage collect() throws Exception {
+                  InputStream stream = null;
+                  BufferedReader reader = null;
+                  UptimeNodeLoadAverage uptimeLoadAverage = new 
UptimeNodeLoadAverage(); 
+                  ProcessBuilder pb = 
+                                  new ProcessBuilder("uptime");;
+              pb.redirectErrorStream(true);
+                  Process proc = pb.start();
+                  //  spawn uptime command and scrape the output
+                  stream = proc.getInputStream();
+                  reader = new BufferedReader(new InputStreamReader(stream));
+                  String line;
+                  String regex = "\\s+";
+                  String filter = "load average:";
+                  // read the next line from ps output
+                  while ((line = reader.readLine()) != null) {
+//                        System.out.println("UPTIME:"+line);
+                      int pos=0;   
+                          if ( (pos = line.indexOf(filter)) > -1 ) {
+                         String la =  
line.substring(pos+filter.length()).replaceAll(regex,"");
+                                 String[] averages = la.split(",");
+                                 uptimeLoadAverage.setLoadAvg1(averages[0]);
+                                 uptimeLoadAverage.setLoadAvg1(averages[1]);
+                                 uptimeLoadAverage.setLoadAvg1(averages[2]);
+                          }
+                  }
+                  proc.waitFor();
+                  return uptimeLoadAverage; 
+               }
 }


Reply via email to