summaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-12-20 02:28:57 +0100
committergjoranv <gv@verizonmedia.com>2019-12-20 02:30:17 +0100
commitd17a05dd365283611e25805519fd2b21222204a2 (patch)
tree784c823cad95075ed5eab22f69c1fb57019665cc /metrics-proxy
parentcc973932ac847f4ad66cb68a149e0683af428548 (diff)
Allow converting "metricsByNode" packets to GenericApplicationModel
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java8
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java21
2 files changed, 28 insertions, 1 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java
index ad8deacf7ab..7eb0bb2ccf1 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java
@@ -28,6 +28,10 @@ public class Node {
}
public Node(String configId, String host, int port, String path) {
+ Objects.requireNonNull(configId, "Null configId is not allowed");
+ Objects.requireNonNull(host, "Null host is not allowed");
+ Objects.requireNonNull(path, "Null path is not allowed");
+
this.configId = configId;
this.host = host;
this.port = port;
@@ -35,6 +39,10 @@ public class Node {
metricsUriBase = "http://" + host + ":" + port + path;
}
+ public String getName() {
+ return configId;
+ }
+
URI metricsUri(ConsumerId consumer) {
return URI.create(metricsUriBase + "?consumer=" + consumer.id);
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java
index 363077d28b7..948fb73cb16 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java
@@ -4,6 +4,7 @@
package ai.vespa.metricsproxy.metric.model.json;
+import ai.vespa.metricsproxy.http.application.Node;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import ai.vespa.metricsproxy.metric.model.ServiceId;
import ai.vespa.metricsproxy.metric.model.StatusCode;
@@ -14,6 +15,7 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -35,9 +37,25 @@ import static java.util.stream.Collectors.toList;
public class GenericJsonUtil {
private static final Logger log = Logger.getLogger(GenericJsonUtil.class.getName());
- private GenericJsonUtil() { }
+ private GenericJsonUtil() {
+ }
+
+ public static GenericApplicationModel toGenericApplicationModel(Map<Node, List<MetricsPacket>> metricsByNode) {
+ var applicationModel = new GenericApplicationModel();
+
+ var genericJsonModels = new ArrayList<GenericJsonModel>();
+ metricsByNode.forEach(
+ (node, metrics) -> genericJsonModels.add(toGenericJsonModel(metrics, node.getName())));
+
+ applicationModel.nodes = genericJsonModels;
+ return applicationModel;
+ }
public static GenericJsonModel toGenericJsonModel(List<MetricsPacket> metricsPackets) {
+ return toGenericJsonModel(metricsPackets, null);
+ }
+
+ public static GenericJsonModel toGenericJsonModel(List<MetricsPacket> metricsPackets, String nodeName) {
Map<ServiceId, List<MetricsPacket>> packetsByService = metricsPackets.stream()
.collect(Collectors.groupingBy(packet -> packet.service, LinkedHashMap::new, toList()));
@@ -57,6 +75,7 @@ public class GenericJsonUtil {
.get();
if (VESPA_NODE_SERVICE_ID.equals(serviceId)) {
jsonModel.node = new GenericNode(genericService.timestamp, genericService.metrics);
+ jsonModel.node.name = nodeName;
} else {
genericServices.add(genericService);