summaryrefslogtreecommitdiffstats
path: root/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java
new file mode 100644
index 00000000000..c4a64845062
--- /dev/null
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java
@@ -0,0 +1,41 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.dockerapi.metrics;
+
+import com.google.inject.Inject;
+import com.yahoo.metrics.simple.MetricReceiver;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+/**
+ * Export metrics to both /state/v1/metrics and makes them available programatically.
+ *
+ * @author valerijf
+ */
+public class MetricReceiverWrapper {
+ private final Map<String, MetricValue> metrics = new ConcurrentHashMap<>();
+ private final MetricReceiver metricReceiver;
+
+ @Inject
+ public MetricReceiverWrapper(MetricReceiver metricReceiver) {
+ this.metricReceiver = metricReceiver;
+ }
+
+ public CounterWrapper declareCounter(String name) {
+ CounterWrapper counter = new CounterWrapper(metricReceiver.declareCounter(name));
+ metrics.put(name, counter);
+ return counter;
+ }
+
+ public GaugeWrapper declareGauge(String name) {
+ GaugeWrapper gauge = new GaugeWrapper(metricReceiver.declareGauge(name));
+ metrics.put(name, gauge);
+ return gauge;
+ }
+
+ public Map<String, Number> getLatestMetrics() {
+ return metrics.entrySet().stream().collect(Collectors.toMap(
+ Map.Entry::getKey, entry -> entry.getValue().getValue()));
+ }
+}