diff options
author | gjoranv <gv@verizonmedia.com> | 2019-12-20 02:28:57 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2019-12-20 02:30:17 +0100 |
commit | d17a05dd365283611e25805519fd2b21222204a2 (patch) | |
tree | 784c823cad95075ed5eab22f69c1fb57019665cc /metrics-proxy | |
parent | cc973932ac847f4ad66cb68a149e0683af428548 (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.java | 8 | ||||
-rw-r--r-- | metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java | 21 |
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); |