summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2020-06-30 17:33:50 +0200
committerGitHub <noreply@github.com>2020-06-30 17:33:50 +0200
commite096756d9dc4d59c18c925b1f0c3a8805bcc4b6e (patch)
treed02078396a07b77e5ada3823a14a59e5c9b76822
parenta1405f069e42c28d1fc6c85d87b89b6456fb0c96 (diff)
parentf74ef83a83f403e2b635c2c8be2f6c359d1d695e (diff)
Merge pull request #13754 from vespa-engine/add-bindings-for-prometheus
Add bindings for prometheus handler in application containers.
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java3
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java6
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java6
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();