diff options
author | Øyvind Grønnesby <oyving@verizonmedia.com> | 2019-07-15 15:54:14 +0200 |
---|---|---|
committer | Øyvind Grønnesby <oyving@verizonmedia.com> | 2019-07-15 15:54:14 +0200 |
commit | a6c82adcc159d7fe72f0cb03feec178b036072f2 (patch) | |
tree | 311563904ea0f1d6f18248ce702b8d4e3ea39356 | |
parent | 49b54930956dfde63dd08891a685765b1fdcb8c2 (diff) |
Metrics REST API now returns metrics for single application object
3 files changed, 20 insertions, 21 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index a16b9a863d7..035a102e784 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -654,7 +654,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye clusterMetrics.put(cluster, metrics); }); - return new MetricsResponse(200, Map.of(applicationId, clusterMetrics)); + return new MetricsResponse(200, applicationId, clusterMetrics); } // ---------------- Misc operations ---------------------------------------------------------------- diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/MetricsResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/MetricsResponse.java index 21aa7753404..88971433a01 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/MetricsResponse.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/MetricsResponse.java @@ -21,27 +21,26 @@ public class MetricsResponse extends HttpResponse { private final Slime slime = new Slime(); - public MetricsResponse(int status, Map<ApplicationId, Map<ClusterInfo, MetricsAggregator>> aggregatedMetrics) { + public MetricsResponse(int status, ApplicationId applicationId, Map<ClusterInfo, MetricsAggregator> aggregatedMetrics) { super(status); - Cursor array = slime.setArray(); - for (Map.Entry<ApplicationId, Map<ClusterInfo, MetricsAggregator>> entry : aggregatedMetrics.entrySet()) { - Cursor object = array.addObject(); - object.setString("applicationId", entry.getKey().serializedForm()); - Cursor clusterArray = object.setArray("clusters"); - for (Map.Entry<ClusterInfo, MetricsAggregator> clusterMetrics : entry.getValue().entrySet()) { - Cursor clusterCursor = clusterArray.addObject(); - MetricsAggregator metrics = clusterMetrics.getValue(); - clusterCursor.setString("clusterId", clusterMetrics.getKey().getClusterId()); - clusterCursor.setString("clusterType", clusterMetrics.getKey().getClusterType().name()); - Cursor metricsCursor = clusterCursor.setObject("metrics"); - metrics.aggregateQueryRate().ifPresent(queryrate -> metricsCursor.setDouble("queriesPerSecond", queryrate)); - metrics.aggregateFeedRate().ifPresent(feedRate -> metricsCursor.setDouble("feedPerSecond", feedRate)); - metrics.aggregateDocumentCount().ifPresent(documentCount -> metricsCursor.setDouble("documentCount", documentCount)); - metrics.aggregateQueryLatency().ifPresent(queryLatency -> metricsCursor.setDouble("queryLatency",queryLatency)); - metrics.aggregateFeedLatency().ifPresent(feedLatency -> metricsCursor.setDouble("feedLatency", feedLatency)); -// clusterCursor.setLong("timestamp", metrics.getTimestamp().getEpochSecond()); - } + Cursor application = slime.setObject(); + application.setString("applicationId", applicationId.serializedForm()); + + Cursor clusters = application.setArray("clusters"); + + for (var entry : aggregatedMetrics.entrySet()) { + Cursor cluster = clusters.addObject(); + cluster.setString("clusterId", entry.getKey().getClusterId()); + cluster.setString("clusterType", entry.getKey().getClusterType().name()); + + MetricsAggregator aggregator = entry.getValue(); + Cursor metrics = cluster.setObject("metrics"); + aggregator.aggregateQueryRate().ifPresent(queryrate -> metrics.setDouble("queriesPerSecond", queryrate)); + aggregator.aggregateFeedRate().ifPresent(feedRate -> metrics.setDouble("feedPerSecond", feedRate)); + aggregator.aggregateDocumentCount().ifPresent(documentCount -> metrics.setDouble("documentCount", documentCount)); + aggregator.aggregateQueryLatency().ifPresent(queryLatency -> metrics.setDouble("queryLatency",queryLatency)); + aggregator.aggregateFeedLatency().ifPresent(feedLatency -> metrics.setDouble("feedLatency", feedLatency)); } } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java index e706cab00fa..688cf275892 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java @@ -45,7 +45,7 @@ public interface ConfigServer { InputStream getLogs(DeploymentId deployment, Map<String, String> queryParameters); - Map<ApplicationId, List<ClusterMetrics>> getMetrics(ZoneId zoneId); + List<ClusterMetrics> getMetrics(DeploymentId deployment); List<String> getContentClusters(DeploymentId deployment); |