You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2016/05/31 18:35:52 UTC

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

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; 
+		}
 }