summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@oath.com>2019-05-14 11:02:13 +0200
committerOla Aunrønning <olaa@oath.com>2019-05-14 12:16:39 +0200
commit9d309b2ec8db1868d3695e8f9fc36ce763e8926c (patch)
treee5e62e66833a5387fbd0aaf72d9758f57fde542f
parent4bb00f38162158f2b3a9cd1c476331fa87fb2a4c (diff)
Refactoring
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/MetricsResponse.java21
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/Metrics.java90
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsAggregator.java137
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsRetriever.java101
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/metrics/MetricsRetrieverTest.java (renamed from configserver/src/test/java/com/yahoo/vespa/config/server/metrics/MetricsAggregatorTest.java)30
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java11
8 files changed, 192 insertions, 207 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 4268782b446..7e2fa440bd5 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
@@ -43,8 +43,7 @@ import com.yahoo.vespa.config.server.http.CompressedApplicationInputStream;
import com.yahoo.vespa.config.server.http.LogRetriever;
import com.yahoo.vespa.config.server.http.SimpleHttpFetcher;
import com.yahoo.vespa.config.server.http.v2.PrepareResult;
-import com.yahoo.vespa.config.server.metrics.Metrics;
-import com.yahoo.vespa.config.server.metrics.MetricsAggregator;
+import com.yahoo.vespa.config.server.metrics.MetricsRetriever;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.LocalSession;
import com.yahoo.vespa.config.server.session.LocalSessionRepo;
@@ -588,9 +587,9 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
// ---------------- Metrics ------------------------------------------------------------------------
public HttpResponse getMetrics() {
- MetricsAggregator metricsAggregator = new MetricsAggregator();
+ MetricsRetriever metricsRetriever = new MetricsRetriever();
Map<ApplicationId, Map<String, List<URI>>> applicationHosts = getHostsPerApplication();
- return metricsAggregator.aggregateAllMetrics(applicationHosts);
+ return metricsRetriever.retrieveAllMetrics(applicationHosts);
}
// ---------------- 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 237a1e6dccb..c18608f5f64 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
@@ -7,7 +7,7 @@ import com.yahoo.slime.Cursor;
import com.yahoo.slime.JsonFormat;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.http.HttpConfigResponse;
-import com.yahoo.vespa.config.server.metrics.Metrics;
+import com.yahoo.vespa.config.server.metrics.MetricsAggregator;
import java.io.IOException;
import java.io.OutputStream;
@@ -20,23 +20,24 @@ public class MetricsResponse extends HttpResponse {
private final Slime slime = new Slime();
- public MetricsResponse(int status, Map<ApplicationId, Map<String, Metrics>> aggregatedMetrics) {
+ public MetricsResponse(int status, Map<ApplicationId, Map<String, MetricsAggregator>> aggregatedMetrics) {
super(status);
Cursor array = slime.setArray();
- for (Map.Entry<ApplicationId, Map<String, Metrics>> entry : aggregatedMetrics.entrySet()) {
+ for (Map.Entry<ApplicationId, Map<String, MetricsAggregator>> entry : aggregatedMetrics.entrySet()) {
Cursor object = array.addObject();
object.setString("applicationId", entry.getKey().serializedForm());
Cursor clusterArray = object.setArray("clusters");
- for (Map.Entry<String, Metrics> clusterMetrics : entry.getValue().entrySet()) {
+ for (Map.Entry<String, MetricsAggregator> clusterMetrics : entry.getValue().entrySet()) {
Cursor clusterCursor = clusterArray.addObject();
- Metrics metrics = clusterMetrics.getValue();
+ MetricsAggregator metrics = clusterMetrics.getValue();
clusterCursor.setString("clusterName", clusterMetrics.getKey());
- metrics.aggregateQueryRate().ifPresent(queryrate -> clusterCursor.setDouble("queriesPerSecond", queryrate));
- metrics.aggregateFeedRate().ifPresent(feedRate -> clusterCursor.setDouble("writesPerSecond", feedRate));
- metrics.aggregateDocumentCount().ifPresent(documentCount -> clusterCursor.setDouble("documentCount", documentCount));
- metrics.aggregateQueryLatency().ifPresent(queryLatency -> clusterCursor.setDouble("queryLatencyMillis",queryLatency));
- metrics.aggregateFeedLatency().ifPresent(feedLatency -> clusterCursor.setDouble("feedLatency", feedLatency));
+ Cursor metricsCursor = clusterCursor.setObject("metrics");
+ metrics.aggregateQueryRate().ifPresent(queryrate -> metricsCursor.setDouble("queriesPerSecond", queryrate));
+ metrics.aggregateFeedRate().ifPresent(feedRate -> metricsCursor.setDouble("writesPerSecond", feedRate));
+ metrics.aggregateDocumentCount().ifPresent(documentCount -> metricsCursor.setDouble("documentCount", documentCount));
+ metrics.aggregateQueryLatency().ifPresent(queryLatency -> metricsCursor.setDouble("queryLatencyMillis",queryLatency));
+ metrics.aggregateFeedLatency().ifPresent(feedLatency -> metricsCursor.setDouble("feedLatency", feedLatency));
clusterCursor.setLong("timestamp", metrics.getTimestamp().getEpochSecond());
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/Metrics.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/Metrics.java
deleted file mode 100644
index 2fcfbf013bc..00000000000
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/Metrics.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.metrics;
-
-import java.time.Instant;
-import java.util.Optional;
-
-/**
- * @author olaa
- */
-public class Metrics {
-
- double feedLatencySum;
- double feedLatencyCount;
- double qrQueryLatencySum;
- double qrQueryLatencyCount;
- double containerQueryLatencySum;
- double containerQueryLatencyCount;
- double documentCount;
- Instant timestamp;
-
- public void addFeedLatencySum(double feedLatencySum) {
- this.feedLatencySum += feedLatencySum;
- }
-
- public void addFeedLatencyCount(double feedLatencyCount) {
- this.feedLatencyCount += feedLatencyCount;
- }
-
- public void addQrQueryLatencyCount(double qrQueryLatencyCount) {
- this.qrQueryLatencyCount += qrQueryLatencyCount;
- }
-
- public void addQrQueryLatencySum(double qrQueryLatencySum) {
- this.qrQueryLatencySum += qrQueryLatencySum;
- }
-
- public void addContainerQueryLatencyCount(double containerQueryLatencyCount) {
- this.containerQueryLatencyCount += containerQueryLatencyCount;
- }
-
- public void addContainerQueryLatencySum(double containerQueryLatencySum) {
- this.containerQueryLatencySum += containerQueryLatencySum;
- }
-
- public void addDocumentCount(double documentCount) {
- this.documentCount += documentCount;
- }
-
- public Optional<Double> aggregateFeedLatency() {
- if (isZero(feedLatencySum) || isZero(feedLatencyCount)) return Optional.empty();
- return Optional.of(feedLatencySum / feedLatencyCount);
- }
-
- public Optional<Double> aggregateFeedRate() {
- if (isZero(feedLatencyCount)) return Optional.empty();
- return Optional.of(feedLatencyCount / 60);
- }
-
- public Optional<Double> aggregateQueryLatency() {
- if (isZero(containerQueryLatencyCount, containerQueryLatencySum) && isZero(qrQueryLatencyCount, qrQueryLatencySum)) return Optional.empty();
- return Optional.of((containerQueryLatencySum + qrQueryLatencySum) / (containerQueryLatencyCount + qrQueryLatencyCount));
- }
-
- public Optional<Double> aggregateQueryRate() {
- if (isZero(containerQueryLatencyCount) && isZero(qrQueryLatencyCount)) return Optional.empty();
- return Optional.of((containerQueryLatencyCount + qrQueryLatencyCount) / 60);
- }
-
- public Optional<Double> aggregateDocumentCount() {
- if (isZero(documentCount)) return Optional.empty();
- return Optional.of(documentCount);
- }
-
- public void setTimestamp(Instant timestamp) {
- this.timestamp = timestamp;
- }
-
- public Instant getTimestamp() {
- return timestamp;
- }
-
- private boolean isZero(double... values) {
- boolean isZero = false;
- for (double value : values) {
- isZero |= Math.abs(value) < 0.001;
- }
- return isZero;
- }
-
-}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsAggregator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsAggregator.java
index b1a3d0601d7..9c8712c6f1e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsAggregator.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsAggregator.java
@@ -1,107 +1,90 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.metrics;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.slime.ArrayTraverser;
-import com.yahoo.slime.Inspector;
-import com.yahoo.slime.Slime;
-import com.yahoo.vespa.config.SlimeUtils;
-import com.yahoo.vespa.config.server.http.v2.MetricsResponse;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.HttpClientBuilder;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UncheckedIOException;
-import java.net.URI;
import java.time.Instant;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-import java.util.stream.Collectors;
-
+import java.util.Optional;
/**
* @author olaa
*/
public class MetricsAggregator {
- private static final Logger logger = Logger.getLogger(MetricsAggregator.class.getName());
- HttpClient httpClient = HttpClientBuilder.create().build();
+ double feedLatencySum;
+ double feedLatencyCount;
+ double qrQueryLatencySum;
+ double qrQueryLatencyCount;
+ double containerQueryLatencySum;
+ double containerQueryLatencyCount;
+ double documentCount;
+ Instant timestamp;
+
+ public void addFeedLatencySum(double feedLatencySum) {
+ this.feedLatencySum += feedLatencySum;
+ }
- public MetricsResponse aggregateAllMetrics(Map<ApplicationId, Map<String, List<URI>>> applicationHosts) {
- Map<ApplicationId, Map<String, Metrics>> aggregatedMetrics = applicationHosts.entrySet().stream()
- .collect(Collectors.toMap(
- Map.Entry::getKey,
- e -> aggregateMetricsByCluster(e.getValue())));
- return new MetricsResponse(200, aggregatedMetrics);
+ public void addFeedLatencyCount(double feedLatencyCount) {
+ this.feedLatencyCount += feedLatencyCount;
}
- private Map<String, Metrics> aggregateMetricsByCluster(Map<String, List<URI>> clusterHosts) {
- return clusterHosts.entrySet().stream()
- .collect(Collectors.toMap(
- Map.Entry::getKey,
- e -> aggregateMetrics(e.getValue())
- )
- );
+ public void addQrQueryLatencyCount(double qrQueryLatencyCount) {
+ this.qrQueryLatencyCount += qrQueryLatencyCount;
}
- private Metrics aggregateMetrics(List<URI> hosts) {
- Metrics clusterMetrics = new Metrics();
- hosts.stream()
- .forEach(host -> accumulateMetrics(host, clusterMetrics));
- return clusterMetrics;
+ public void addQrQueryLatencySum(double qrQueryLatencySum) {
+ this.qrQueryLatencySum += qrQueryLatencySum;
}
- private void accumulateMetrics(URI hostURI, Metrics metrics) {
- Slime responseBody = doMetricsRequest(hostURI);
- Inspector services = responseBody.get().field("services");
- services.traverse((ArrayTraverser) (i, servicesInspector) -> {
- parseService(servicesInspector, metrics);
+ public void addContainerQueryLatencyCount(double containerQueryLatencyCount) {
+ this.containerQueryLatencyCount += containerQueryLatencyCount;
+ }
- });
+ public void addContainerQueryLatencySum(double containerQueryLatencySum) {
+ this.containerQueryLatencySum += containerQueryLatencySum;
+ }
+ public void addDocumentCount(double documentCount) {
+ this.documentCount += documentCount;
}
- private Slime doMetricsRequest(URI hostURI) {
- HttpGet get = new HttpGet(hostURI);
- try {
- HttpResponse response = httpClient.execute(get);
- InputStream is = response.getEntity().getContent();
- Slime slime = SlimeUtils.jsonToSlime(is.readAllBytes());
- is.close();
- return slime;
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
+ public Optional<Double> aggregateFeedLatency() {
+ if (isZero(feedLatencySum) || isZero(feedLatencyCount)) return Optional.empty();
+ return Optional.of(feedLatencySum / feedLatencyCount);
+ }
+
+ public Optional<Double> aggregateFeedRate() {
+ if (isZero(feedLatencyCount)) return Optional.empty();
+ return Optional.of(feedLatencyCount / 60);
}
- private void parseService(Inspector service, Metrics metrics) {
- String serviceName = service.field("name").asString();
- Instant timestamp = Instant.ofEpochSecond(service.field("timestamp").asLong());
- metrics.setTimestamp(timestamp);
- service.field("metrics").traverse((ArrayTraverser) (i, m) -> {
- Inspector values = m.field("values");
- switch (serviceName) {
- case "container":
- metrics.addContainerQueryLatencyCount(values.field("query_latency.count").asDouble());
- metrics.addContainerQueryLatencySum(values.field("query_latency.sum").asDouble());
- metrics.addFeedLatencyCount(values.field("feed_latency.count").asDouble());
- metrics.addFeedLatencySum(values.field("feed_latency.sum").asDouble());
- case "qrserver":
- metrics.addQrQueryLatencyCount(values.field("query_latency.count").asDouble());
- metrics.addQrQueryLatencySum(values.field("query_latency.sum").asDouble());
- case "distributor":
- metrics.addDocumentCount(values.field("vds.distributor.docsstored.average").asDouble());
- }
- });
+ public Optional<Double> aggregateQueryLatency() {
+ if (isZero(containerQueryLatencyCount, containerQueryLatencySum) && isZero(qrQueryLatencyCount, qrQueryLatencySum)) return Optional.empty();
+ return Optional.of((containerQueryLatencySum + qrQueryLatencySum) / (containerQueryLatencyCount + qrQueryLatencyCount));
+ }
+
+ public Optional<Double> aggregateQueryRate() {
+ if (isZero(containerQueryLatencyCount) && isZero(qrQueryLatencyCount)) return Optional.empty();
+ return Optional.of((containerQueryLatencyCount + qrQueryLatencyCount) / 60);
+ }
+ public Optional<Double> aggregateDocumentCount() {
+ if (isZero(documentCount)) return Optional.empty();
+ return Optional.of(documentCount);
}
- private void parseContainerMetrics(Inspector containerInspector, Metrics metrics) {
+ public void setTimestamp(Instant timestamp) {
+ this.timestamp = timestamp;
+ }
+ public Instant getTimestamp() {
+ return timestamp;
+ }
+
+ private boolean isZero(double... values) {
+ boolean isZero = false;
+ for (double value : values) {
+ isZero |= Math.abs(value) < 0.001;
+ }
+ return isZero;
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsRetriever.java
new file mode 100644
index 00000000000..d305650a2bb
--- /dev/null
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/MetricsRetriever.java
@@ -0,0 +1,101 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.server.metrics;
+
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.slime.ArrayTraverser;
+import com.yahoo.slime.Inspector;
+import com.yahoo.slime.Slime;
+import com.yahoo.vespa.config.SlimeUtils;
+import com.yahoo.vespa.config.server.http.v2.MetricsResponse;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.net.URI;
+import java.time.Instant;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+
+
+/**
+ * @author olaa
+ */
+public class MetricsRetriever {
+
+ private static final Logger logger = Logger.getLogger(MetricsRetriever.class.getName());
+ HttpClient httpClient = HttpClientBuilder.create().build();
+
+ public MetricsResponse retrieveAllMetrics(Map<ApplicationId, Map<String, List<URI>>> applicationHosts) {
+ Map<ApplicationId, Map<String, MetricsAggregator>> allMetrics = applicationHosts.entrySet().stream()
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ e -> getMetricsByCluster(e.getValue())));
+ return new MetricsResponse(200, allMetrics);
+ }
+
+ private Map<String, MetricsAggregator> getMetricsByCluster(Map<String, List<URI>> clusterHosts) {
+ return clusterHosts.entrySet().stream()
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ e -> getClusterMetrics(e.getValue())
+ )
+ );
+ }
+
+ private MetricsAggregator getClusterMetrics(List<URI> hosts) {
+ MetricsAggregator clusterMetrics = new MetricsAggregator();
+ hosts.stream()
+ .forEach(host -> getHostMetrics(host, clusterMetrics));
+ return clusterMetrics;
+ }
+
+ private void getHostMetrics(URI hostURI, MetricsAggregator metrics) {
+ Slime responseBody = doMetricsRequest(hostURI);
+ Inspector services = responseBody.get().field("services");
+ services.traverse((ArrayTraverser) (i, servicesInspector) -> {
+ parseService(servicesInspector, metrics);
+ });
+ }
+
+ private Slime doMetricsRequest(URI hostURI) {
+ HttpGet get = new HttpGet(hostURI);
+ try {
+ HttpResponse response = httpClient.execute(get);
+ InputStream is = response.getEntity().getContent();
+ Slime slime = SlimeUtils.jsonToSlime(is.readAllBytes());
+ is.close();
+ return slime;
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
+ private void parseService(Inspector service, MetricsAggregator metrics) {
+ String serviceName = service.field("name").asString();
+ Instant timestamp = Instant.ofEpochSecond(service.field("timestamp").asLong());
+ metrics.setTimestamp(timestamp);
+ service.field("metrics").traverse((ArrayTraverser) (i, m) -> {
+ Inspector values = m.field("values");
+ switch (serviceName) {
+ case "container":
+ metrics.addContainerQueryLatencyCount(values.field("query_latency.count").asDouble());
+ metrics.addContainerQueryLatencySum(values.field("query_latency.sum").asDouble());
+ metrics.addFeedLatencyCount(values.field("feed_latency.count").asDouble());
+ metrics.addFeedLatencySum(values.field("feed_latency.sum").asDouble());
+ case "qrserver":
+ metrics.addQrQueryLatencyCount(values.field("query_latency.count").asDouble());
+ metrics.addQrQueryLatencySum(values.field("query_latency.sum").asDouble());
+ case "distributor":
+ metrics.addDocumentCount(values.field("vds.distributor.docsstored.average").asDouble());
+ }
+ });
+
+ }
+
+}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
index f1891430ccd..a843212927b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
@@ -35,8 +35,6 @@ import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.time.Clock;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/MetricsAggregatorTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/MetricsRetrieverTest.java
index f317322343f..e296b3a44c8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/MetricsAggregatorTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/MetricsRetrieverTest.java
@@ -25,14 +25,14 @@ import static org.junit.Assert.*;
/**
* @author olaa
*/
-public class MetricsAggregatorTest {
+public class MetricsRetrieverTest {
@Rule
public final WireMockRule wireMock = new WireMockRule(options().port(8080), true);
@Test
public void testMetricAggregation() throws IOException {
- MetricsAggregator metricsAggregator = new MetricsAggregator();
+ MetricsRetriever metricsRetriever = new MetricsRetriever();
ApplicationId applicationId = ApplicationId.from("tenant", "app", "default");
Map<String, List<URI>> clusterHosts = Map.of(
@@ -56,7 +56,7 @@ public class MetricsAggregatorTest {
.withStatus(200)
.withBody(metricsString(1,2,3,4,5))));
- MetricsResponse metricsResponse = metricsAggregator.aggregateAllMetrics(applications);
+ MetricsResponse metricsResponse = metricsRetriever.retrieveAllMetrics(applications);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
metricsResponse.render(bos);
String expectedResponse = "[\n" +
@@ -65,20 +65,24 @@ public class MetricsAggregatorTest {
" \"clusters\": [\n" +
" {\n" +
" \"clusterName\": \"cluster1\",\n" +
- " \"queriesPerSecond\": 2.8666666666666667,\n" +
- " \"writesPerSecond\": 1.4333333333333333,\n" +
- " \"documentCount\": 6000.0,\n" +
- " \"queryLatencyMillis\": 116.27906976744185,\n" +
- " \"feedLatency\": 69.76744186046511,\n" +
+ " \"metrics\": {\n" +
+ " \"queriesPerSecond\": 2.8666666666666667,\n" +
+ " \"writesPerSecond\": 1.4333333333333333,\n" +
+ " \"documentCount\": 6000.0,\n" +
+ " \"queryLatencyMillis\": 116.27906976744185,\n" +
+ " \"feedLatency\": 69.76744186046511\n" +
+ " },\n" +
" \"timestamp\": 1557306075\n" +
" },\n" +
" {\n" +
" \"clusterName\": \"cluster2\",\n" +
- " \"queriesPerSecond\": 1.4333333333333333,\n" +
- " \"writesPerSecond\": 0.7166666666666667,\n" +
- " \"documentCount\": 3000.0,\n" +
- " \"queryLatencyMillis\": 116.27906976744185,\n" +
- " \"feedLatency\": 69.76744186046511,\n" +
+ " \"metrics\": {\n" +
+ " \"queriesPerSecond\": 1.4333333333333333,\n" +
+ " \"writesPerSecond\": 0.7166666666666667,\n" +
+ " \"documentCount\": 3000.0,\n" +
+ " \"queryLatencyMillis\": 116.27906976744185,\n" +
+ " \"feedLatency\": 69.76744186046511\n" +
+ " },\n" +
" \"timestamp\": 1557306075\n" +
" }\n" +
" ]\n" +
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java
index dd390daaeb0..0cf89d798a7 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java
@@ -97,7 +97,6 @@ public class DeploymentMetricsMaintainer extends Maintainer {
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
- newMaintain();
}
/** Get global rotation status for application */
@@ -121,14 +120,4 @@ public class DeploymentMetricsMaintainer extends Maintainer {
}
}
- private void newMaintain() {
- controller().zoneRegistry()
- .zones()
- .reachable()
- .ids()
- .stream()
- .forEach(zoneId -> {
-
- });
- }
}