From 2132ab285831f368f204210be8de409714573df3 Mon Sep 17 00:00:00 2001 From: Amund Bergland Kvalsvik Date: Fri, 26 Jun 2020 12:01:42 +0200 Subject: Updated ApplicationMetricsHandler. Removed PrometheusV1Handler --- .../metricsproxy/MetricsProxyContainerCluster.java | 2 +- .../container/ApplicationContainerCluster.java | 15 +-- .../handler/metrics/PrometheusV1Handler.java | 90 ---------------- .../handler/metrics/PrometheusV1HandlerTest.java | 116 --------------------- .../application/ApplicationMetricsHandler.java | 35 ++++++- .../application/ApplicationMetricsHandlerTest.java | 8 +- 6 files changed, 37 insertions(+), 229 deletions(-) delete mode 100644 container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java delete mode 100644 container-core/src/test/java/com/yahoo/container/handler/metrics/PrometheusV1HandlerTest.java diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java index 20f2bfe6636..d698d42b2d9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java @@ -117,7 +117,7 @@ public class MetricsProxyContainerCluster extends ContainerCluster> handler = new Handler<>( - new ComponentModel(PROMETHEUS_V1_HANDLER_CLASS, null, null, null)); - handler.addServerBindings(PROMETHEUS_V1_HANDLER_BINDING_1, PROMETHEUS_V1_HANDLER_BINDING_2); - addComponent(handler); - } - private void addTestrunnerComponentsIfTester(DeployState deployState) { if (deployState.isHosted() && deployState.getProperties().applicationId().instance().isTester()) addPlatformBundle(Paths.get(Defaults.getDefaults().underVespaHome("lib/jars/vespa-testrunner-components-jar-with-dependencies.jar"))); @@ -227,7 +214,7 @@ public final class ApplicationContainerCluster extends ContainerCluster doHandle(URI requestUri, Path apiPath, String consumer) { - if (apiPath.matches(V1_PATH)) return Optional.of(resourceListResponse(requestUri, List.of(VALUES_PATH))); - if (apiPath.matches(VALUES_PATH)) return Optional.of(applicationMetricsResponse(consumer)); + if (apiPath.matches(V1_METRICS)) return Optional.of(resourceListResponse(requestUri, List.of(METRICS_VALUES_PATH))); + if (apiPath.matches(METRICS_VALUES_PATH)) return Optional.of(applicationMetricsResponse(consumer)); + + if (apiPath.matches(V1_PROMETHEUS)) return Optional.of(resourceListResponse(requestUri, List.of(PROMETHEUS_VALUES_PATH))); + if (apiPath.matches(PROMETHEUS_VALUES_PATH)) return Optional.of(applicationPrometheusResponse(consumer)); + return Optional.empty(); } @@ -64,4 +79,16 @@ public class ApplicationMetricsHandler extends HttpHandlerBase { } } + private TextResponse applicationPrometheusResponse(String requestedConsumer) { + ConsumerId consumer = getConsumerOrDefault(requestedConsumer, metricsConsumers); + var metricsByNode = metricsRetriever.getMetrics(consumer); + + + return new TextResponse(200, PrometheusUtil.toPrometheusModel(toGenericApplicationModel(metricsByNode).nodes.stream() + .flatMap(element -> GenericJsonUtil.toMetricsPackets(element).stream() + .map(MetricsPacket.Builder::build)) + .collect(Collectors.toList())) + .serialize()); + } + } diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java index 155bbf094a1..cb0178b1aef 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java @@ -25,8 +25,8 @@ import java.util.concurrent.Executors; import static ai.vespa.metricsproxy.TestUtil.getFileContents; import static ai.vespa.metricsproxy.http.ValuesFetcher.DEFAULT_PUBLIC_CONSUMER_ID; -import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.V1_PATH; -import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.VALUES_PATH; +import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.V1_METRICS; +import static ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler.METRICS_VALUES_PATH; import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.createObjectMapper; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; @@ -48,8 +48,8 @@ public class ApplicationMetricsHandlerTest { private static final String HOST = "localhost"; private static final String URI_BASE = "http://" + HOST; - private static final String APP_METRICS_V1_URI = URI_BASE + V1_PATH; - private static final String APP_METRICS_VALUES_URI = URI_BASE + VALUES_PATH; + private static final String APP_METRICS_V1_URI = URI_BASE + V1_METRICS; + private static final String APP_METRICS_VALUES_URI = URI_BASE + METRICS_VALUES_PATH; private static final String TEST_FILE = "generic-sample.json"; private static final String RESPONSE = getFileContents(TEST_FILE); -- cgit v1.2.3