diff options
author | gjoranv <gv@verizonmedia.com> | 2020-06-30 17:33:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-30 17:33:50 +0200 |
commit | e096756d9dc4d59c18c925b1f0c3a8805bcc4b6e (patch) | |
tree | d02078396a07b77e5ada3823a14a59e5c9b76822 | |
parent | a1405f069e42c28d1fc6c85d87b89b6456fb0c96 (diff) | |
parent | f74ef83a83f403e2b635c2c8be2f6c359d1d695e (diff) |
Merge pull request #13754 from vespa-engine/add-bindings-for-prometheus
Add bindings for prometheus handler in application containers.
4 files changed, 21 insertions, 12 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index 234387f5a6b..04fe77d9e05 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -13,6 +13,7 @@ import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.container.handler.ThreadpoolConfig; import com.yahoo.container.handler.metrics.MetricsProxyApiConfig; import com.yahoo.container.handler.metrics.MetricsV2Handler; +import com.yahoo.container.handler.metrics.PrometheusV1Handler; import com.yahoo.container.jdisc.ContainerMbusConfig; import com.yahoo.container.jdisc.messagebus.MbusServerProvider; import com.yahoo.jdisc.http.ServletPathsConfig; @@ -58,6 +59,10 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat public static final String METRICS_V2_HANDLER_BINDING_1 = "http://*" + MetricsV2Handler.V2_PATH; public static final String METRICS_V2_HANDLER_BINDING_2 = METRICS_V2_HANDLER_BINDING_1 + "/*"; + public static final String PROMETHEUS_V1_HANDLER_CLASS = PrometheusV1Handler.class.getName(); + private static final String PROMETHEUS_V1_HANDLER_BINDING_1 = "http://*" + PrometheusV1Handler.V1_PATH; + private static final String PROMETHEUS_V1_HANDLER_BINDING_2 = PROMETHEUS_V1_HANDLER_BINDING_1 + "/*"; + public static final int heapSizePercentageOfTotalNodeMemory = 60; public static final int heapSizePercentageOfTotalNodeMemoryWhenCombinedCluster = 17; @@ -88,7 +93,7 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat addSimpleComponent("com.yahoo.container.jdisc.CertificateStoreProvider"); addSimpleComponent("com.yahoo.container.jdisc.AthenzIdentityProviderProvider"); addSimpleComponent("com.yahoo.container.jdisc.SystemInfoProvider"); - addMetricsV2Handler(); + addMetricsHandlers(); addTestrunnerComponentsIfTester(deployState); } @@ -116,10 +121,15 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat } } - public void addMetricsV2Handler() { + private void addMetricsHandlers() { + addMetricsHandler(METRICS_V2_HANDLER_CLASS, METRICS_V2_HANDLER_BINDING_1, METRICS_V2_HANDLER_BINDING_2); + addMetricsHandler(PROMETHEUS_V1_HANDLER_CLASS, PROMETHEUS_V1_HANDLER_BINDING_1, PROMETHEUS_V1_HANDLER_BINDING_2); + } + + private void addMetricsHandler(String handlerClass, String rootBinding, String innerBinding) { Handler<AbstractConfigProducer<?>> handler = new Handler<>( - new ComponentModel(METRICS_V2_HANDLER_CLASS, null, null, null)); - handler.addServerBindings(METRICS_V2_HANDLER_BINDING_1, METRICS_V2_HANDLER_BINDING_2); + new ComponentModel(handlerClass, null, null, null)); + handler.addServerBindings(rootBinding, innerBinding); addComponent(handler); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java index dd48e65c340..9676b8b1e4a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java @@ -35,7 +35,8 @@ public final class AccessControl { ContainerCluster.BINDINGS_OVERVIEW_HANDLER_CLASS, ContainerCluster.STATE_HANDLER_CLASS, ContainerCluster.LOG_HANDLER_CLASS, - ApplicationContainerCluster.METRICS_V2_HANDLER_CLASS + ApplicationContainerCluster.METRICS_V2_HANDLER_CLASS, + ApplicationContainerCluster.PROMETHEUS_V1_HANDLER_CLASS ); public static final class Builder { diff --git a/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java b/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java index 23b7a62ffa3..e33f2f47828 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java +++ b/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java @@ -1,6 +1,7 @@ package com.yahoo.container.handler.metrics; import ai.vespa.util.http.VespaHttpClientBuilder; +import com.google.inject.Inject; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.restapi.Path; import com.yahoo.restapi.StringResponse; @@ -30,8 +31,9 @@ public class PrometheusV1Handler extends HttpHandlerBase{ private final String metricsProxyUri; private final HttpClient httpClient = createHttpClient(); - protected PrometheusV1Handler(Executor executor, - MetricsProxyApiConfig config) { + @Inject + public PrometheusV1Handler(Executor executor, + MetricsProxyApiConfig config) { super(executor); metricsProxyUri = "http://localhost:" + config.metricsPort() + config.prometheusApiPath(); } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java index 6b1376452fa..c910ac26833 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java @@ -40,9 +40,7 @@ public class ApplicationMetricsHandler extends HttpHandlerBase { public static final String METRICS_V1_PATH = "/applicationmetrics/v1"; public static final String METRICS_VALUES_PATH = METRICS_V1_PATH + "/values"; - - public static final String PROMETHEUS_V1_PATH = "/applicationprometheus/v1"; - public static final String PROMETHEUS_VALUES_PATH = PROMETHEUS_V1_PATH + "/values"; + public static final String PROMETHEUS_VALUES_PATH = METRICS_V1_PATH + "/prometheus"; private final ApplicationMetricsRetriever metricsRetriever; private final MetricsConsumers metricsConsumers; @@ -60,8 +58,6 @@ public class ApplicationMetricsHandler extends HttpHandlerBase { public Optional<HttpResponse> doHandle(URI requestUri, Path apiPath, String consumer) { if (apiPath.matches(METRICS_V1_PATH)) return Optional.of(resourceListResponse(requestUri, List.of(METRICS_VALUES_PATH))); if (apiPath.matches(METRICS_VALUES_PATH)) return Optional.of(applicationMetricsResponse(consumer)); - - if (apiPath.matches(PROMETHEUS_V1_PATH)) return Optional.of(resourceListResponse(requestUri, List.of(PROMETHEUS_VALUES_PATH))); if (apiPath.matches(PROMETHEUS_VALUES_PATH)) return Optional.of(applicationPrometheusResponse(consumer)); return Optional.empty(); |