diff options
author | gjoranv <gjoranv@gmail.com> | 2019-06-24 14:29:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-24 14:29:08 +0200 |
commit | 5f7c02da995f865548c9e71da4324f56b747ef42 (patch) | |
tree | d0111d9aeb8f848bcba1b32cf19ca00a1766430b | |
parent | d3fc7d9efbf656ec9a5623084fc91be0c79789e8 (diff) |
Revert "Gjoranv/add default public metrics consumer"
17 files changed, 98 insertions, 344 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java index b2ab7e19f85..29d1b557c49 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java @@ -66,7 +66,7 @@ class ConsumersConfigGenerator { return original != null ? newMetric.addDimensionsFrom(original) : newMetric; } - static Consumer.Builder toConsumerBuilder(MetricsConsumer consumer) { + private static Consumer.Builder toConsumerBuilder(MetricsConsumer consumer) { Consumer.Builder builder = new Consumer.Builder().name(consumer.getId()); consumer.getMetrics().values().forEach(metric -> builder.metric(toConsumerMetricBuilder(metric))); return builder; 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 f290911c6bd..5a41696c6f2 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 @@ -41,14 +41,12 @@ import java.util.logging.Logger; import static com.yahoo.vespa.model.admin.metricsproxy.ConsumersConfigGenerator.addMetrics; import static com.yahoo.vespa.model.admin.metricsproxy.ConsumersConfigGenerator.generateConsumers; -import static com.yahoo.vespa.model.admin.metricsproxy.ConsumersConfigGenerator.toConsumerBuilder; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.APPLICATION; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.APPLICATION_ID; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.INSTANCE; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.LEGACY_APPLICATION; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.TENANT; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.ZONE; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.getDefaultPublicConsumer; import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.getVespaMetricsConsumer; import static com.yahoo.vespa.model.admin.monitoring.MetricSet.emptyMetricSet; import static com.yahoo.vespa.model.container.xml.BundleMapper.JarSuffix.JAR_WITH_DEPS; @@ -130,10 +128,8 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC @Override public void getConfig(ConsumersConfig.Builder builder) { - var amendedVespaConsumer = addMetrics(getVespaMetricsConsumer(), getAdditionalDefaultMetrics().getMetrics()); - builder.consumer.addAll(generateConsumers(amendedVespaConsumer, getUserMetricsConsumers())); - - if (! isHostedVespa()) builder.consumer.add(toConsumerBuilder(getDefaultPublicConsumer())); + var amendedDefaultConsumer = addMetrics(getVespaMetricsConsumer(), getAdditionalDefaultMetrics().getMetrics()); + builder.consumer.addAll(generateConsumers(amendedDefaultConsumer, getUserMetricsConsumers())); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java deleted file mode 100644 index fbd1c7455dd..00000000000 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicConsumer.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - */ - -package com.yahoo.vespa.model.admin.monitoring; - -import ai.vespa.metricsproxy.http.GenericMetricsHandler; -import com.google.common.collect.ImmutableList; - -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; -import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; -import static java.util.Collections.emptyList; - -/** - * @author gjoranv - */ -public class DefaultPublicConsumer { - - public static final String DEFAULT_PUBLIC_CONSUMER_ID = GenericMetricsHandler.DEFAULT_PUBLIC_CONSUMER_ID.id; - - private static final MetricSet publicConsumerMetrics = new MetricSet("public-consumer-metrics", - emptyList(), - ImmutableList.of(defaultPublicMetricSet, - defaultVespaMetricSet, - systemMetricSet)); - - public static MetricsConsumer getDefaultPublicConsumer() { - return new MetricsConsumer(DEFAULT_PUBLIC_CONSUMER_ID, publicConsumerMetrics); - } - -} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java deleted file mode 100644 index dc250179460..00000000000 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultPublicMetrics.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - */ - -package com.yahoo.vespa.model.admin.monitoring; - - -import com.google.common.collect.ImmutableSet; - -import java.util.LinkedHashSet; -import java.util.Set; - -import static java.util.Collections.emptyList; - -/** - * TODO: Add content metrics. - * - * @author gjoranv - */ -public class DefaultPublicMetrics { - - public static MetricSet defaultPublicMetricSet = createMetricSet(); - - private static MetricSet createMetricSet() { - return new MetricSet("public", - getAllMetrics(), - emptyList()); - } - - private static Set<Metric> getAllMetrics() { - return ImmutableSet.<Metric>builder() - .addAll(getContainerMetrics()) - .addAll(getQrserverMetrics()) - .build(); - } - - private static Set<Metric> getContainerMetrics() { - Set<Metric> metrics = new LinkedHashSet<>(); - - metrics.add(new Metric("http.status.1xx.rate")); - metrics.add(new Metric("http.status.2xx.rate")); - metrics.add(new Metric("http.status.3xx.rate")); - metrics.add(new Metric("http.status.4xx.rate")); - metrics.add(new Metric("http.status.5xx.rate")); - metrics.add(new Metric("jdisc.gc.ms.average")); - metrics.add(new Metric("mem.heap.free.average")); - - return metrics; - } - - private static Set<Metric> getQrserverMetrics() { - Set<Metric> metrics = new LinkedHashSet<>(); - - metrics.add(new Metric("queries.rate")); - metrics.add(new Metric("query_latency.average")); - metrics.add(new Metric("query_latency.95percentile")); - metrics.add(new Metric("query_latency.99percentile")); - metrics.add(new Metric("hits_per_query.average")); - metrics.add(new Metric("totalhits_per_query.average")); - metrics.add(new Metric("degraded_queries.rate")); - metrics.add(new Metric("failed_queries.rate")); - metrics.add(new Metric("serverActiveThreads.average")); - - return metrics; - } - - private DefaultPublicMetrics() { } - -} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java index cce2891df76..b49fd36da78 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java @@ -8,6 +8,7 @@ import java.util.Set; /** * @author gjoranv */ +@SuppressWarnings("UnusedDeclaration") // Used by model amenders public class SystemMetrics { public static final String CPU_UTIL = "cpu.util"; public static final String CPU_SYS_UTIL = "cpu.sys.util"; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java index ca29e348094..0749df8ddf2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java @@ -13,6 +13,7 @@ import static java.util.Collections.singleton; * * @author gjoranv */ +@SuppressWarnings("UnusedDeclaration") // Used by model amenders public class VespaMetricSet { public static final MetricSet vespaMetricSet = new MetricSet("vespa", diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java index 9f3bfdc8ae8..81e9cfcd6a0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricsConsumer.java @@ -10,7 +10,7 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricS import static java.util.Collections.emptyList; /** - * This class sets up the 'Vespa' metrics consumer, which is mainly used for Yamas in hosted Vespa. + * This class sets up the 'Vespa' metrics consumer. * * @author trygve * @author gjoranv @@ -19,14 +19,14 @@ public class VespaMetricsConsumer { public static final String VESPA_CONSUMER_ID = VespaMetrics.VESPA_CONSUMER_ID.id; - private static final MetricSet vespaConsumerMetrics = new MetricSet("vespa-consumer-metrics", - emptyList(), - ImmutableList.of(vespaMetricSet, - systemMetricSet, - networkMetricSet)); + private static final MetricSet defaultConsumerMetrics = new MetricSet("vespa-consumer-metrics", + emptyList(), + ImmutableList.of(vespaMetricSet, + systemMetricSet, + networkMetricSet)); public static MetricsConsumer getVespaMetricsConsumer() { - return new MetricsConsumer(VESPA_CONSUMER_ID, vespaConsumerMetrics); + return new MetricsConsumer(VESPA_CONSUMER_ID, defaultConsumerMetrics); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java index 694108d4bb1..4638353f39f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java @@ -7,7 +7,6 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet; import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet; import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; @@ -21,7 +20,6 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricS public class PredefinedMetricSets { public static final Map<String, MetricSet> predefinedMetricSets = toMapById( - defaultPublicMetricSet, defaultVespaMetricSet, vespaMetricSet, systemMetricSet, @@ -30,11 +28,8 @@ public class PredefinedMetricSets { private static Map<String, MetricSet> toMapById(MetricSet... metricSets) { Map<String, MetricSet> availableMetricSets = new LinkedHashMap<>(); - for (MetricSet metricSet : metricSets) { - var existing = availableMetricSets.put(metricSet.getId(), metricSet); - if (existing != null) - throw new IllegalArgumentException("There are two predefined metric sets with id " + existing.getId()); - } + for (MetricSet metricSet : metricSets) + availableMetricSets.put(metricSet.getId(), metricSet); return Collections.unmodifiableMap(availableMetricSets); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java index b13fa4917e4..0ad0d57c1c3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java @@ -14,7 +14,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID; import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet; @@ -78,10 +77,6 @@ public class MetricsBuilder { private void throwIfIllegalConsumerId(Metrics metrics, String consumerId) { if (consumerId.equalsIgnoreCase(VESPA_CONSUMER_ID) && applicationType != ApplicationType.HOSTED_INFRASTRUCTURE) throw new IllegalArgumentException("'Vespa' is not allowed as metrics consumer id (case is ignored.)"); - - if (consumerId.equalsIgnoreCase(DEFAULT_PUBLIC_CONSUMER_ID)) - throw new IllegalArgumentException("'" + DEFAULT_PUBLIC_CONSUMER_ID + "' is not allowed as metrics consumer id (case is ignored.)"); - if (metrics.hasConsumerIgnoreCase(consumerId)) throw new IllegalArgumentException("'" + consumerId + "' is used as id for two metrics consumers (case is ignored.)"); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java index 78c1c5931a2..ff38a184eec 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java @@ -25,17 +25,14 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.C import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_APPLICATION; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_INSTANCE; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.MY_TENANT; -import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.hosted; -import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.self_hosted; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.checkMetric; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.consumersConfigFromModel; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.consumersConfigFromXml; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getApplicationDimensionsConfig; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getCustomConsumer; +import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getHostedModel; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getQrStartConfig; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet; import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; import static com.yahoo.vespa.model.admin.monitoring.DefaultVespaMetrics.defaultVespaMetricSet; import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet; @@ -57,14 +54,14 @@ public class MetricsProxyContainerClusterTest { private static int numVespaMetrics = vespaMetricSet.getMetrics().size(); private static int numSystemMetrics = systemMetricSet.getMetrics().size(); private static int numNetworkMetrics = networkMetricSet.getMetrics().size(); - private static int numMetricsForVespaConsumer = numVespaMetrics + numSystemMetrics + numNetworkMetrics; + private static int numMetricsForDefaultConsumer = numVespaMetrics + numSystemMetrics + numNetworkMetrics; @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void metrics_proxy_bundle_is_included_in_bundles_config() { - VespaModel model = getModel(servicesWithAdminOnly(), self_hosted); + VespaModel model = getModel(servicesWithAdminOnly()); var builder = new BundlesConfig.Builder(); model.getConfig(builder, CLUSTER_CONFIG_ID); BundlesConfig config = builder.build(); @@ -74,7 +71,7 @@ public class MetricsProxyContainerClusterTest { @Test public void cluster_is_prepared_so_that_application_metadata_config_is_produced() { - VespaModel model = getModel(servicesWithAdminOnly(), self_hosted); + VespaModel model = getModel(servicesWithAdminOnly()); var builder = new ApplicationMetadataConfig.Builder(); model.getConfig(builder, CLUSTER_CONFIG_ID); ApplicationMetadataConfig config = builder.build(); @@ -85,44 +82,26 @@ public class MetricsProxyContainerClusterTest { @Test public void verbose_gc_logging_is_disabled() { - VespaModel model = getModel(servicesWithAdminOnly(), self_hosted); + VespaModel model = getModel(servicesWithAdminOnly()); QrStartConfig config = getQrStartConfig(model); assertFalse(config.jvm().verbosegc()); } - - @Test - public void default_public_consumer_is_set_up_for_self_hosted() { - ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), self_hosted); - assertEquals(2, config.consumer().size()); - assertEquals(config.consumer(1).name(), DEFAULT_PUBLIC_CONSUMER_ID); - - int numMetricsForPublicDefaultConsumer = defaultPublicMetricSet.getMetrics().size() + numDefaultVespaMetrics + numSystemMetrics; - assertEquals(numMetricsForPublicDefaultConsumer, config.consumer(1).metric().size()); - } - @Test - public void default_public_consumer_is_not_set_up_for_hosted() { - ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), hosted); - assertEquals(1, config.consumer().size()); + public void default_consumer_is_always_present_and_has_all_vespa_metrics_and_all_system_metrics() { + ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly()); assertEquals(config.consumer(0).name(), VESPA_CONSUMER_ID); + assertEquals(numMetricsForDefaultConsumer, config.consumer(0).metric().size()); } @Test - public void vespa_consumer_is_always_present_and_has_all_vespa_metrics_and_all_system_metrics() { - ConsumersConfig config = consumersConfigFromXml(servicesWithAdminOnly(), self_hosted); - assertEquals(config.consumer(0).name(), VESPA_CONSUMER_ID); - assertEquals(numMetricsForVespaConsumer, config.consumer(0).metric().size()); - } - - @Test - public void vespa_consumer_can_be_amended_via_admin_object() { - VespaModel model = getModel(servicesWithAdminOnly(), self_hosted); + public void default_consumer_can_be_amended_via_admin_object() { + VespaModel model = getModel(servicesWithAdminOnly()); var additionalMetric = new Metric("additional-metric"); model.getAdmin().setAdditionalDefaultMetrics(new MetricSet("amender-metrics", singleton(additionalMetric))); ConsumersConfig config = consumersConfigFromModel(model); - assertEquals(numMetricsForVespaConsumer + 1, config.consumer(0).metric().size()); + assertEquals(numMetricsForDefaultConsumer + 1, config.consumer(0).metric().size()); ConsumersConfig.Consumer vespaConsumer = config.consumer(0); assertTrue("Did not contain additional metric", checkMetric(vespaConsumer, additionalMetric)); @@ -130,28 +109,19 @@ public class MetricsProxyContainerClusterTest { @Test public void vespa_is_a_reserved_consumer_id() { - assertReservedConsumerId("Vespa"); - } - - @Test - public void public_is_a_reserved_consumer_id() { - assertReservedConsumerId("default"); - } - - private void assertReservedConsumerId(String consumerId) { String services = String.join("\n", - "<services>", - " <admin version='2.0'>", - " <adminserver hostalias='node1'/>", - " <metrics>", - " <consumer id='" + consumerId + "'/>", - " </metrics>", - " </admin>", - "</services>" + "<services>", + " <admin version='2.0'>", + " <adminserver hostalias='node1'/>", + " <metrics>", + " <consumer id='vespa'/>", + " </metrics>", + " </admin>", + "</services>" ); thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("'" + consumerId + "' is not allowed as metrics consumer id"); - consumersConfigFromXml(services, self_hosted); + thrown.expectMessage("'Vespa' is not allowed as metrics consumer id"); + consumersConfigFromXml(services); } @Test @@ -168,13 +138,12 @@ public class MetricsProxyContainerClusterTest { " </admin>", "</services>" ); - VespaModel hostedModel = getModel(services, hosted); - ConsumersConfig config = consumersConfigFromModel(hostedModel); + ConsumersConfig config = consumersConfigFromXml(services); assertEquals(1, config.consumer().size()); // All default metrics are retained ConsumersConfig.Consumer vespaConsumer = config.consumer(0); - assertEquals(numMetricsForVespaConsumer + 1, vespaConsumer.metric().size()); + assertEquals(numMetricsForDefaultConsumer + 1, vespaConsumer.metric().size()); Metric customMetric1 = new Metric("custom.metric1"); assertTrue("Did not contain metric: " + customMetric1, checkMetric(vespaConsumer, customMetric1)); @@ -195,7 +164,7 @@ public class MetricsProxyContainerClusterTest { ); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("'a' is used as id for two metrics consumers"); - consumersConfigFromXml(services, self_hosted); + consumersConfigFromXml(services); } @Test @@ -247,7 +216,7 @@ public class MetricsProxyContainerClusterTest { @Test public void hosted_application_propagates_application_dimensions() { - VespaModel hostedModel = getModel(servicesWithAdminOnly(), hosted); + VespaModel hostedModel = getHostedModel(servicesWithAdminOnly()); ApplicationDimensionsConfig config = getApplicationDimensionsConfig(hostedModel); assertEquals(zoneString(Zone.defaultZone()), config.dimensions(AppDimensionNames.ZONE)); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java index 5d3bcd58f3d..f755871ac4b 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java @@ -11,8 +11,7 @@ import org.junit.Test; import static com.yahoo.config.model.api.container.ContainerServiceType.METRICS_PROXY_CONTAINER; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CLUSTER_CONFIG_ID; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CONTAINER_CONFIG_ID; -import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.hosted; -import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.self_hosted; +import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getHostedModel; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getNodeDimensionsConfig; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getRpcConnectorConfig; @@ -50,7 +49,7 @@ public class MetricsProxyContainerTest { @Test public void metrics_proxy_requires_less_memory_than_other_containers() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(servicesWithContent()); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); assertThat(container.getStartupCommand(), containsString("-Xms32m")); assertThat(container.getStartupCommand(), containsString("-Xmx512m")); @@ -58,7 +57,7 @@ public class MetricsProxyContainerTest { @Test public void http_server_is_running_on_expected_port() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(servicesWithContent()); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); assertEquals(19092, container.getSearchPort()); assertEquals(19092, container.getHealthPort()); @@ -70,7 +69,7 @@ public class MetricsProxyContainerTest { @Test public void metrics_rpc_server_is_running_on_expected_port() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(servicesWithContent()); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); int offset = container.metricsRpcPortOffset(); @@ -86,7 +85,7 @@ public class MetricsProxyContainerTest { @Test public void admin_rpc_server_is_running() { - VespaModel model = getModel(servicesWithContent(), self_hosted); + VespaModel model = getModel(servicesWithContent()); MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID); int offset = container.metricsRpcPortOffset() - 1; @@ -100,7 +99,7 @@ public class MetricsProxyContainerTest { @Test public void hosted_application_propagates_node_dimensions() { String services = servicesWithContent(); - VespaModel hostedModel = getModel(services, hosted); + VespaModel hostedModel = getHostedModel(services); assertEquals(1, hostedModel.getHosts().size()); String configId = CLUSTER_CONFIG_ID + "/" + hostedModel.getHosts().iterator().next().getHostname(); NodeDimensionsConfig config = getNodeDimensionsConfig(hostedModel, configId); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java index ad6a7de935b..59b7110e96e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java @@ -16,9 +16,6 @@ import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.admin.monitoring.Metric; import com.yahoo.vespa.model.test.VespaModelTester; -import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.hosted; -import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.self_hosted; -import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID; import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.VESPA_CONSUMER_ID; import static org.junit.Assert.assertEquals; @@ -36,17 +33,20 @@ class MetricsProxyModelTester { // Used for all configs that are produced by the container, not the cluster. static final String CONTAINER_CONFIG_ID = CLUSTER_CONFIG_ID + "/localhost"; - enum TestMode { - self_hosted, - hosted + static VespaModel getModel(String servicesXml) { + var numberOfHosts = 1; + var tester = new VespaModelTester(); + tester.addHosts(numberOfHosts); + tester.setHosted(false); + return tester.createModel(servicesXml, true); } - static VespaModel getModel(String servicesXml, TestMode testMode) { - var numberOfHosts = testMode == hosted ? 2 : 1; + static VespaModel getHostedModel(String servicesXml) { + var numberOfHosts = 2; var tester = new VespaModelTester(); tester.addHosts(numberOfHosts); - tester.setHosted(testMode == hosted); - if (testMode == hosted) tester.setApplicationId(MY_TENANT, MY_APPLICATION, MY_INSTANCE); + tester.setHosted(true); + tester.setApplicationId(MY_TENANT, MY_APPLICATION, MY_INSTANCE); return tester.createModel(servicesXml, true); } @@ -59,16 +59,17 @@ class MetricsProxyModelTester { } static ConsumersConfig.Consumer getCustomConsumer(String servicesXml) { - ConsumersConfig config = consumersConfigFromXml(servicesXml, self_hosted); + ConsumersConfig config = consumersConfigFromXml(servicesXml); + assertEquals(2, config.consumer().size()); for (ConsumersConfig.Consumer consumer : config.consumer()) { - if (! consumer.name().equals(VESPA_CONSUMER_ID) && ! consumer.name().equals(DEFAULT_PUBLIC_CONSUMER_ID)) + if (! consumer.name().equals(VESPA_CONSUMER_ID)) return consumer; } - throw new RuntimeException("Custom consumer not found!"); + throw new RuntimeException("Two consumers with the reserved id - this cannot happen."); } - static ConsumersConfig consumersConfigFromXml(String servicesXml, TestMode testMode) { - return consumersConfigFromModel(getModel(servicesXml, testMode)); + static ConsumersConfig consumersConfigFromXml(String servicesXml) { + return consumersConfigFromModel(getModel(servicesXml)); } static ConsumersConfig consumersConfigFromModel(VespaModel model) { @@ -88,7 +89,7 @@ class MetricsProxyModelTester { } static VespaServicesConfig getVespaServicesConfig(String servicesXml) { - VespaModel model = getModel(servicesXml, self_hosted); + VespaModel model = getModel(servicesXml); return new VespaServicesConfig((VespaServicesConfig.Builder) model.getConfig(new VespaServicesConfig.Builder(), CONTAINER_CONFIG_ID)); } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java index ab9f4f6c9c4..2ca24dad1e2 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java @@ -117,8 +117,7 @@ public class VespaMetrics { .statusCode(health.getStatus().ordinal()) // TODO: MetricsPacket should use StatusCode instead of int .statusMessage(health.getMessage()) .putDimensions(service.getDimensions()) - .putDimension(INSTANCE_DIMENSION_ID, service.getInstanceName()) - .addConsumers(metricsConsumers.getAllConsumers()); + .putDimension(INSTANCE_DIMENSION_ID, service.getInstanceName()); } /** diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java index f61a96917a9..cadfc053b94 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/GenericMetricsHandler.java @@ -4,9 +4,7 @@ package ai.vespa.metricsproxy.http; -import ai.vespa.metricsproxy.core.MetricsConsumers; import ai.vespa.metricsproxy.core.MetricsManager; -import ai.vespa.metricsproxy.metric.model.ConsumerId; import ai.vespa.metricsproxy.metric.model.MetricsPacket; import ai.vespa.metricsproxy.metric.model.json.JsonRenderingException; import ai.vespa.metricsproxy.service.VespaServices; @@ -21,33 +19,22 @@ import java.nio.charset.Charset; import java.time.Instant; import java.util.List; import java.util.concurrent.Executor; -import java.util.logging.Logger; -import java.util.stream.Collectors; -import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId; import static ai.vespa.metricsproxy.metric.model.json.GenericJsonUtil.toGenericJsonModel; /** - * Http handler that exposes the generic metrics format. + * Handler exposing the generic metrics format via http. * * @author gjoranv */ public class GenericMetricsHandler extends ThreadedHttpRequestHandler { - private static final Logger log = Logger.getLogger(GenericMetricsHandler.class.getName()); - public static final ConsumerId DEFAULT_PUBLIC_CONSUMER_ID = toConsumerId("default"); - - private final MetricsConsumers metricsConsumers; private final MetricsManager metricsManager; private final VespaServices vespaServices; @Inject - public GenericMetricsHandler(Executor executor, - MetricsManager metricsManager, - VespaServices vespaServices, - MetricsConsumers metricsConsumers) { + public GenericMetricsHandler(Executor executor, MetricsManager metricsManager, VespaServices vespaServices) { super(executor); - this.metricsConsumers = metricsConsumers; this.metricsManager = metricsManager; this.vespaServices = vespaServices; } @@ -55,29 +42,13 @@ public class GenericMetricsHandler extends ThreadedHttpRequestHandler { @Override public HttpResponse handle(HttpRequest request) { try { - ConsumerId consumer = getConsumerOrDefault(request.getProperty("consumer")); - - List<MetricsPacket> metrics = metricsManager.getMetrics(vespaServices.getVespaServices(), Instant.now()) - .stream() - .filter(metricsPacket -> metricsPacket.consumers().contains(consumer)) - .collect(Collectors.toList()); + List<MetricsPacket> metrics = metricsManager.getMetrics(vespaServices.getVespaServices(), Instant.now()); return new Response(200, toGenericJsonModel(metrics).serialize()); } catch (JsonRenderingException e) { return new Response(500, e.getMessageAsJson()); } } - private ConsumerId getConsumerOrDefault(String consumer) { - if (consumer == null) return DEFAULT_PUBLIC_CONSUMER_ID; - - ConsumerId consumerId = toConsumerId(consumer); - if (! metricsConsumers.getAllConsumers().contains(consumerId)) { - log.info("No consumer with id '" + consumer + "' - using the default consumer instead."); - return DEFAULT_PUBLIC_CONSUMER_ID; - } - return consumerId; - } - private static class Response extends HttpResponse { private final byte[] data; diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java index 64ede137e8e..26ae177d767 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java @@ -53,8 +53,6 @@ public class ExternalMetrics { } public void setExtraMetrics(List<MetricsPacket.Builder> externalPackets) { - // TODO: Metrics filtering per consumer is not yet implemented. - // Split each packet per metric, and re-aggregate based on the metrics each consumer wants. Then filter out all packages with no consumers. log.log(DEBUG, () -> "Setting new external metrics with " + externalPackets.size() + " metrics packets."); externalPackets.forEach(packet -> { packet.addConsumers(consumers.getAllConsumers()) diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java index e441c353292..eb620fd37be 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java @@ -140,7 +140,6 @@ public class MetricsManagerTest { service0.setSystemMetrics(oldSystemMetrics); } - // TODO: test that non-whitelisted metrics are filtered out, but this is currently not the case, see ExternalMetrics.setExtraMetrics @Test public void extra_metrics_packets_containing_whitelisted_metrics_are_added() { metricsManager.setExtraMetrics(ImmutableList.of( diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java index 29ab8c66694..301dbf56c3f 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/GenericMetricsHandlerTest.java @@ -6,7 +6,6 @@ package ai.vespa.metricsproxy.http; import ai.vespa.metricsproxy.TestUtil; import ai.vespa.metricsproxy.core.ConsumersConfig; -import ai.vespa.metricsproxy.core.ConsumersConfig.Consumer; import ai.vespa.metricsproxy.core.MetricsConsumers; import ai.vespa.metricsproxy.core.MetricsManager; import ai.vespa.metricsproxy.metric.HealthMetric; @@ -30,13 +29,12 @@ import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; -import java.io.IOException; import java.time.Instant; import java.util.List; import java.util.concurrent.Executors; import static ai.vespa.metricsproxy.core.VespaMetrics.INSTANCE_DIMENSION_ID; -import static ai.vespa.metricsproxy.http.GenericMetricsHandler.DEFAULT_PUBLIC_CONSUMER_ID; +import static ai.vespa.metricsproxy.core.VespaMetrics.VESPA_CONSUMER_ID; import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static ai.vespa.metricsproxy.metric.model.StatusCode.DOWN; import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.createObjectMapper; @@ -45,7 +43,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; /** * @author gjoranv @@ -58,69 +55,38 @@ public class GenericMetricsHandlerTest { new DummyService(1, ""), new DownService(HealthMetric.getDown("No response"))); - private static final VespaServices vespaServices = new VespaServices(testServices); - - private static final String DEFAULT_CONSUMER = "default"; - private static final String CUSTOM_CONSUMER = "custom-consumer"; - private static final String CPU_METRIC = "cpu"; private static final String URI = "http://localhost/metrics/v1/values"; + private static final VespaServices vespaServices = new VespaServices(testServices); private static RequestHandlerTestDriver testDriver; @BeforeClass - public static void setup() { + public static void setupMetricsManager() { MetricsManager metricsManager = TestUtil.createMetricsManager(vespaServices, getMetricsConsumers(), getApplicationDimensions(), getNodeDimensions()); metricsManager.setExtraMetrics(ImmutableList.of( new MetricsPacket.Builder(toServiceId("foo")) .timestamp(Instant.now().getEpochSecond()) .putMetrics(ImmutableList.of(new Metric(CPU_METRIC, 12.345))))); - GenericMetricsHandler handler = new GenericMetricsHandler(Executors.newSingleThreadExecutor(), metricsManager, vespaServices, getMetricsConsumers()); + GenericMetricsHandler handler = new GenericMetricsHandler(Executors.newSingleThreadExecutor(), metricsManager, vespaServices); testDriver = new RequestHandlerTestDriver(handler); } - private GenericJsonModel getResponseAsJsonModel(String consumer) { - String response = testDriver.sendRequest(URI + "?consumer=" + consumer).readAll(); - try { - return createObjectMapper().readValue(response, GenericJsonModel.class); - } catch (IOException e) { - fail("Failed to create json model: " + e.getMessage()); - throw new RuntimeException(e); - } - } - @Ignore @Test public void visually_inspect_response() throws Exception{ - String response = testDriver.sendRequest(URI+ "?consumer=default").readAll(); + String response = testDriver.sendRequest(URI).readAll(); ObjectMapper mapper = createObjectMapper(); var jsonModel = mapper.readValue(response, GenericJsonModel.class); System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonModel)); } @Test - public void no_explicit_consumer_gives_the_default_consumer() { - String responseDefaultConsumer = testDriver.sendRequest(URI + "?consumer=default").readAll(); - String responseNoConsumer = testDriver.sendRequest(URI).readAll(); - assertEqualsExceptTimestamps(responseDefaultConsumer, responseNoConsumer); - } - - @Test - public void unknown_consumer_gives_the_default_consumer() { + public void response_contains_node_metrics() throws Exception { String response = testDriver.sendRequest(URI).readAll(); - String responseUnknownConsumer = testDriver.sendRequest(URI + "?consumer=not_defined").readAll(); - assertEqualsExceptTimestamps(response, responseUnknownConsumer); - } - - private void assertEqualsExceptTimestamps(String s1, String s2) { - assertEquals(replaceTimestamps(s1), replaceTimestamps(s2)); - } - - @Test - public void response_contains_node_metrics() { - GenericJsonModel jsonModel = getResponseAsJsonModel(DEFAULT_CONSUMER); + var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class); assertNotNull(jsonModel.node); assertEquals(1, jsonModel.node.metrics.size()); @@ -128,8 +94,9 @@ public class GenericMetricsHandlerTest { } @Test - public void response_contains_service_metrics() { - GenericJsonModel jsonModel = getResponseAsJsonModel(DEFAULT_CONSUMER); + public void response_contains_service_metrics() throws Exception { + String response = testDriver.sendRequest(URI).readAll(); + var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class); assertEquals(2, jsonModel.services.size()); GenericService dummyService = jsonModel.services.get(0); @@ -137,50 +104,17 @@ public class GenericMetricsHandlerTest { GenericMetrics dummy0Metrics = getMetricsForInstance("dummy0", dummyService); assertEquals(1L, dummy0Metrics.values.get(METRIC_1).longValue()); - assertEquals("default-val", dummy0Metrics.dimensions.get("consumer-dim")); + assertEquals("metric-dim", dummy0Metrics.dimensions.get("dim0")); GenericMetrics dummy1Metrics = getMetricsForInstance("dummy1", dummyService); assertEquals(6L, dummy1Metrics.values.get(METRIC_1).longValue()); - assertEquals("default-val", dummy1Metrics.dimensions.get("consumer-dim")); - } - - @Test - public void all_consumers_get_health_from_service_that_is_down() { - assertDownServiceHealth(DEFAULT_CONSUMER); - assertDownServiceHealth(CUSTOM_CONSUMER); + assertEquals("metric-dim", dummy1Metrics.dimensions.get("dim0")); } @Test - public void all_timestamps_are_equal_and_non_zero() { - GenericJsonModel jsonModel = getResponseAsJsonModel(DEFAULT_CONSUMER); - - Long nodeTimestamp = jsonModel.node.timestamp; - assertNotEquals(0L, (long) nodeTimestamp); - for (var service : jsonModel.services) - assertEquals(nodeTimestamp, service.timestamp); - } - - @Test - public void custom_consumer_gets_only_its_whitelisted_metrics() { - GenericJsonModel jsonModel = getResponseAsJsonModel(CUSTOM_CONSUMER); - - assertNotNull(jsonModel.node); - // TODO: see comment in ExternalMetrics.setExtraMetrics - // assertEquals(0, jsonModel.node.metrics.size()); - - assertEquals(2, jsonModel.services.size()); - GenericService dummyService = jsonModel.services.get(0); - assertEquals(2, dummyService.metrics.size()); - - GenericMetrics dummy0Metrics = getMetricsForInstance("dummy0", dummyService); - assertEquals("custom-val", dummy0Metrics.dimensions.get("consumer-dim")); - - GenericMetrics dummy1Metrics = getMetricsForInstance("dummy1", dummyService); - assertEquals("custom-val", dummy1Metrics.dimensions.get("consumer-dim")); - } - - private void assertDownServiceHealth(String consumer) { - GenericJsonModel jsonModel = getResponseAsJsonModel(consumer); + public void response_contains_health_from_service_that_is_down() throws Exception { + String response = testDriver.sendRequest(URI).readAll(); + var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class); GenericService downService = jsonModel.services.get(1); assertEquals(DOWN.status, downService.status.code); @@ -193,8 +127,15 @@ public class GenericMetricsHandlerTest { assertEquals(DownService.NAME, downService.metrics.get(0).dimensions.get(INSTANCE_DIMENSION_ID.id)); } - private String replaceTimestamps(String s) { - return s.replaceAll("timestamp\":\\d+,", "timestamp\":1,"); + @Test + public void all_timestamps_are_equal_and_non_zero() throws Exception { + String response = testDriver.sendRequest(URI).readAll(); + var jsonModel = createObjectMapper().readValue(response, GenericJsonModel.class); + + Long nodeTimestamp = jsonModel.node.timestamp; + assertNotEquals(0L, (long) nodeTimestamp); + for (var service : jsonModel.services) + assertEquals(nodeTimestamp, service.timestamp); } private static GenericMetrics getMetricsForInstance(String instance, GenericService service) { @@ -202,33 +143,23 @@ public class GenericMetricsHandlerTest { if (metrics.dimensions.get(INSTANCE_DIMENSION_ID.id).equals(instance)) return metrics; } - fail("Could not find metrics for service instance " + instance); - throw new RuntimeException(); + throw new RuntimeException("Could not find metrics for service instance " + instance); } private static MetricsConsumers getMetricsConsumers() { - var defaultConsumerDimension = new Consumer.Metric.Dimension.Builder() - .key("consumer-dim").value("default-val"); - - var customConsumerDimension = new Consumer.Metric.Dimension.Builder() - .key("consumer-dim").value("custom-val"); + ConsumersConfig.Consumer.Metric.Dimension.Builder metricDimension = new ConsumersConfig.Consumer.Metric.Dimension.Builder() + .key("dim0").value("metric-dim"); return new MetricsConsumers(new ConsumersConfig.Builder() - .consumer(new Consumer.Builder() - .name(DEFAULT_PUBLIC_CONSUMER_ID.id) - .metric(new Consumer.Metric.Builder() + .consumer(new ConsumersConfig.Consumer.Builder() + .name(VESPA_CONSUMER_ID.id) + .metric(new ConsumersConfig.Consumer.Metric.Builder() .name(CPU_METRIC) .outputname(CPU_METRIC)) - .metric(new Consumer.Metric.Builder() - .name(METRIC_1) - .outputname(METRIC_1) - .dimension(defaultConsumerDimension))) - .consumer(new Consumer.Builder() - .name(CUSTOM_CONSUMER) - .metric(new Consumer.Metric.Builder() + .metric(new ConsumersConfig.Consumer.Metric.Builder() .name(METRIC_1) .outputname(METRIC_1) - .dimension(customConsumerDimension))) + .dimension(metricDimension))) .build()); } |