Quellcode durchsuchen

Added TimeCollector class

Raymond Edah vor 7 Jahren
Ursprung
Commit
7de3574104

+ 3 - 5
src/main/java/nu/ltd/fp/se/SystemMetrics.java

@@ -4,10 +4,7 @@ import io.prometheus.client.Counter;
 import io.prometheus.client.Gauge;
 import io.prometheus.client.Histogram;
 import io.prometheus.client.Summary;
-import nu.ltd.fp.se.collector.LoadAverageCollector;
-import nu.ltd.fp.se.collector.MetricCollector;
-import nu.ltd.fp.se.collector.SmartOSCollector;
-import nu.ltd.fp.se.collector.UnameCollector;
+import nu.ltd.fp.se.collector.*;
 
 public class SystemMetrics {
 
@@ -17,9 +14,10 @@ public class SystemMetrics {
     MetricCollector smartOSCollector = new SmartOSCollector();
     MetricCollector unameCollector = new UnameCollector(smartOSCollector);
     MetricCollector loadAverageCollector = new LoadAverageCollector(unameCollector);
+    MetricCollector timeCollector = new TimeCollector(loadAverageCollector);
 
     // this.metricCollector should be set to the last one
-    this.metricCollector = loadAverageCollector;
+    this.metricCollector = timeCollector;
   }
 
   public void pollCollectorChain() {

+ 2 - 1
src/main/java/nu/ltd/fp/se/collector/LoadAverageCollector.java

@@ -53,7 +53,8 @@ public class LoadAverageCollector extends AbstractMetricCollector implements Met
     load1mGauge.set(getLoadAverage(0));
     load5mGauge.set(getLoadAverage(1));
     load15mGauge.set(getLoadAverage(2));
-    // Nothing to be done, call next collector
+
+    // Call next collector
     if (this.getNextCollector() != null) {
       this.getNextCollector().collectMetric();
     }

+ 32 - 0
src/main/java/nu/ltd/fp/se/collector/TimeCollector.java

@@ -0,0 +1,32 @@
+package nu.ltd.fp.se.collector;
+
+import io.prometheus.client.Gauge;
+import nu.ltd.fp.se.Constant;
+
+public class TimeCollector extends AbstractMetricCollector implements MetricCollector {
+  static final Gauge systemTimeGauge = Gauge.build()
+    .name(Constant.EXPORTER_NAMESPACE + "time")
+    .help("System time in seconds since epoch (1970).")
+    .register();
+
+  public TimeCollector() {
+  }
+
+  public TimeCollector(MetricCollector nextCollector) {
+    this();
+    this.setNextCollector(nextCollector);
+  }
+
+  private Double getSystemTime() {
+    return new Double(System.currentTimeMillis() / 1000);
+  }
+
+  public void collectMetric() {
+    systemTimeGauge.set(this.getSystemTime());
+
+    // Call next collector
+    if (this.getNextCollector() != null) {
+      this.getNextCollector().collectMetric();
+    }
+  }
+}