diff options
author | Bjørn Christian Seime <bjorncs@vespa.ai> | 2024-01-03 15:11:51 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@vespa.ai> | 2024-01-03 15:11:51 +0100 |
commit | 6de274a61b95a228f8c6c15461e19516afa93069 (patch) | |
tree | 90bed94eea04ddd6012873f751cd2c93f5d09075 /container-core | |
parent | 196a1b79bac9727e755b41897faef63a69c9a530 (diff) |
Add config to disable metric reporter
Diffstat (limited to 'container-core')
3 files changed, 11 insertions, 6 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java index 1747541bef5..618c58e31c5 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java @@ -9,7 +9,6 @@ import com.yahoo.jdisc.AbstractResource; import com.yahoo.jdisc.Metric; import com.yahoo.jdisc.http.ConnectorConfig; import com.yahoo.jdisc.http.ServerConfig; -import com.yahoo.jdisc.service.AbstractServerProvider; import com.yahoo.jdisc.service.CurrentContainer; import com.yahoo.jdisc.service.ServerProvider; import org.eclipse.jetty.http.HttpField; @@ -41,7 +40,6 @@ import java.util.Arrays; import java.util.Deque; import java.util.List; import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.function.Supplier; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -174,7 +172,7 @@ public class JettyHttpServer extends AbstractResource implements ServerProvider public void start() { try { server.start(); - metricsReporter.start(); + if (config.metric().reporterEnabled()) metricsReporter.start(); logEffectiveSslConfiguration(); } catch (final Exception e) { if (e instanceof IOException && e.getCause() instanceof BindException) { diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java index 36ca1a63753..0880e33d41a 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java @@ -37,19 +37,20 @@ class ResponseMetricAggregator extends AbstractLifeCycle implements HttpChannel. private final List<String> monitoringHandlerPaths; private final List<String> searchHandlerPaths; private final Set<String> ignoredUserAgents; + private final boolean reporterEnabled; private final ConcurrentMap<StatusCodeMetric, LongAdder> statistics = new ConcurrentHashMap<>(); ResponseMetricAggregator(ServerConfig.Metric cfg) { - this(cfg.monitoringHandlerPaths(), cfg.searchHandlerPaths(), cfg.ignoredUserAgents()); + this(cfg.monitoringHandlerPaths(), cfg.searchHandlerPaths(), cfg.ignoredUserAgents(), cfg.reporterEnabled()); } ResponseMetricAggregator(List<String> monitoringHandlerPaths, List<String> searchHandlerPaths, - Collection<String> ignoredUserAgents) { + Collection<String> ignoredUserAgents, boolean reporterEnabled) { this.monitoringHandlerPaths = monitoringHandlerPaths; this.searchHandlerPaths = searchHandlerPaths; this.ignoredUserAgents = Set.copyOf(ignoredUserAgents); - + this.reporterEnabled = reporterEnabled; } static ResponseMetricAggregator getBean(JettyHttpServer server) { return getBean(server.server()); } @@ -67,12 +68,15 @@ class ResponseMetricAggregator extends AbstractLifeCycle implements HttpChannel. } List<StatisticsEntry> takeStatistics() { + if (reporterEnabled) + throw new IllegalStateException("Cannot take consistent snapshot while reporter is enabled"); var ret = new ArrayList<StatisticsEntry>(); consume((metric, value) -> ret.add(new StatisticsEntry(metric, value))); return ret; } void reportSnapshot(Metric metricAggregator) { + if (!reporterEnabled) throw new IllegalStateException("Reporter is not enabled"); consume((metric, value) -> { Metric.Context ctx = metricAggregator.createContext(metric.dimensions.asMap()); metricAggregator.add(metric.name, value, ctx); diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def index b43db0c5287..dd4d138b8c1 100644 --- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def +++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def @@ -52,5 +52,8 @@ metric.searchHandlerPaths[] string # User-agent names to ignore wrt statistics (crawlers etc) metric.ignoredUserAgents[] string +# Whether to enable scheduled metric reporter. Disabled for unit testing to stop metric counters from being reset. +metric.reporterEnabled bool default = true + # Whether to enable jdisc connection log connectionLog.enabled bool default=false |