summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2021-04-26 15:22:04 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2021-04-26 18:18:52 +0200
commit53d8e8afc0bc393663f221febe143cebfcbb8487 (patch)
tree7266d7ede5a35eab3c454092ba7cd66a59c7fcc0 /configserver
parent89d75bb3c78c07c953d307003db530203153a55a (diff)
Aggregate feeding blocked metric
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java12
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsAggregator.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetrieverTest.java3
-rw-r--r--configserver/src/test/resources/metrics/content_metrics.json17
4 files changed, 37 insertions, 6 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java
index 067be8102b8..2903f0fadcc 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetriever.java
@@ -46,7 +46,8 @@ public class ClusterDeploymentMetricsRetriever {
private static final String VESPA_CONTAINER = "vespa.container";
private static final String VESPA_QRSERVER = "vespa.qrserver";
private static final String VESPA_DISTRIBUTOR = "vespa.distributor";
- private static final List<String> WANTED_METRIC_SERVICES = List.of(VESPA_CONTAINER, VESPA_QRSERVER, VESPA_DISTRIBUTOR);
+ private static final String VESPA_SEARCHNODE = "vespa.searchnode";
+ private static final List<String> WANTED_METRIC_SERVICES = List.of(VESPA_CONTAINER, VESPA_QRSERVER, VESPA_DISTRIBUTOR, VESPA_SEARCHNODE);
private static final ExecutorService executor = Executors.newFixedThreadPool(10, new DaemonThreadFactory("cluster-deployment-metrics-retriever-"));
@@ -121,7 +122,7 @@ public class ClusterDeploymentMetricsRetriever {
DeploymentMetricsAggregator deploymentMetricsAggregator = clusterMetricsMap.computeIfAbsent(clusterInfo, c -> new DeploymentMetricsAggregator());
switch (serviceName) {
- case "vespa.container":
+ case VESPA_CONTAINER:
deploymentMetricsAggregator.addContainerLatency(
values.field("query_latency.sum").asDouble(),
values.field("query_latency.count").asDouble());
@@ -129,14 +130,17 @@ public class ClusterDeploymentMetricsRetriever {
values.field("feed.latency.sum").asDouble(),
values.field("feed.latency.count").asDouble());
break;
- case "vespa.qrserver":
+ case VESPA_QRSERVER:
deploymentMetricsAggregator.addQrLatency(
values.field("query_latency.sum").asDouble(),
values.field("query_latency.count").asDouble());
break;
- case "vespa.distributor":
+ case VESPA_DISTRIBUTOR:
deploymentMetricsAggregator.addDocumentCount(values.field("vds.distributor.docsstored.average").asDouble());
break;
+ case VESPA_SEARCHNODE:
+ deploymentMetricsAggregator.addFeedingBlocked((int) values.field("content.proton.resource_usage.feeding_blocked.last").asLong());
+ break;
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsAggregator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsAggregator.java
index a4066fc212d..916f5ff5613 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsAggregator.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsAggregator.java
@@ -13,6 +13,7 @@ public class DeploymentMetricsAggregator {
private LatencyMetrics qr;
private LatencyMetrics container;
private Double documentCount;
+ private Integer feedingBlocked;
public synchronized DeploymentMetricsAggregator addFeedLatency(double sum, double count) {
this.feed = combineLatency(this.feed, sum, count);
@@ -34,9 +35,13 @@ public class DeploymentMetricsAggregator {
return this;
}
+ public synchronized DeploymentMetricsAggregator addFeedingBlocked(int feedingBlocked) {
+ this.feedingBlocked = Math.max(Optional.ofNullable(this.feedingBlocked).orElse(0), feedingBlocked);
+ return this;
+ }
+
public Optional<Double> aggregateFeedLatency() {
return Optional.ofNullable(feed).map(m -> m.latencySum / m.latencyCount).filter(num -> !num.isNaN());
-
}
public Optional<Double> aggregateFeedRate() {
@@ -61,6 +66,10 @@ public class DeploymentMetricsAggregator {
return Optional.ofNullable(documentCount);
}
+ public Optional<Integer> feedingBlocked() {
+ return Optional.ofNullable(feedingBlocked);
+ }
+
private LatencyMetrics combineLatency(LatencyMetrics metricsOrNull, double sum, double count) {
var metrics = Optional.ofNullable(metricsOrNull).orElseGet(LatencyMetrics::new);
metrics.latencyCount += count;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetrieverTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetrieverTest.java
index cdf87b8147c..5aa3e196222 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetrieverTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ClusterDeploymentMetricsRetrieverTest.java
@@ -60,7 +60,7 @@ public class ClusterDeploymentMetricsRetrieverTest {
Map<ClusterInfo, DeploymentMetricsAggregator> aggregatorMap = new ClusterDeploymentMetricsRetriever().requestMetricsGroupedByCluster(hosts);
compareAggregators(
- new DeploymentMetricsAggregator().addDocumentCount(6000.0),
+ new DeploymentMetricsAggregator().addDocumentCount(6000.0).addFeedingBlocked(0),
aggregatorMap.get(expectedContentCluster)
);
@@ -95,6 +95,7 @@ public class ClusterDeploymentMetricsRetrieverTest {
compareOptionals(expected.aggregateFeedRate(), actual.aggregateFeedRate(), assertDoubles);
compareOptionals(expected.aggregateQueryLatency(), actual.aggregateQueryLatency(), assertDoubles);
compareOptionals(expected.aggregateFeedLatency(), actual.aggregateFeedLatency(), assertDoubles);
+ assertEquals(expected.feedingBlocked(), actual.feedingBlocked());
}
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
diff --git a/configserver/src/test/resources/metrics/content_metrics.json b/configserver/src/test/resources/metrics/content_metrics.json
index 932577c95b0..2f88dc91709 100644
--- a/configserver/src/test/resources/metrics/content_metrics.json
+++ b/configserver/src/test/resources/metrics/content_metrics.json
@@ -14,6 +14,23 @@
}
}
]
+ },
+ {
+ "name": "vespa.searchnode",
+ "timestamp": 1557306075,
+ "metrics": [
+ {
+ "values": {
+ "content.proton.resource_usage.disk.average": 0.6716298061329,
+ "content.proton.resource_usage.memory.average": 0.7172795340244,
+ "content.proton.resource_usage.feeding_blocked.last": 0
+ },
+ "dimensions": {
+ "clustertype": "content",
+ "clusterid": "content_cluster_id"
+ }
+ }
+ ]
}
]
} \ No newline at end of file