diff options
Diffstat (limited to 'metrics-proxy/src/main')
18 files changed, 62 insertions, 74 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java index 6148e864373..290a15312a9 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java @@ -12,17 +12,17 @@ import java.util.Objects; public class ConfiguredMetric { private final MetricId name; private final String description; - private final String outputname; + private final MetricId outputname; private final List<Dimension> dimension; public ConfiguredMetric(ConsumersConfig.Consumer.Metric m) { name = MetricId.toMetricId(m.name()); - outputname = m.outputname(); + outputname = MetricId.toMetricId(m.outputname()); description = m.description(); dimension = new ArrayList<>(m.dimension().size()); m.dimension().forEach(d -> dimension.add(new Dimension(DimensionId.toDimensionId(d.key()), d.value()))); } public MetricId id() { return name; } - public String outputname() { return outputname; } + public MetricId outputname() { return outputname; } public String description() { return description; } public List<Dimension> dimension() { return dimension; } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java index 82f341ec64d..8691b569a95 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java @@ -14,7 +14,6 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collector; -import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId; import static com.yahoo.stream.CustomCollectors.toLinkedMap; import static java.util.Collections.unmodifiableSet; import static java.util.stream.Collectors.collectingAndThen; @@ -35,7 +34,7 @@ public class MetricsConsumers { public MetricsConsumers(ConsumersConfig config) { consumerMetrics = config.consumer().stream().collect( - toUnmodifiableLinkedMap(consumer -> toConsumerId(consumer.name()), consumer -> convert(consumer.metric()))); + toUnmodifiableLinkedMap(consumer -> ConsumerId.toConsumerId(consumer.name()), consumer -> convert(consumer.metric()))); consumersByMetric = createConsumersByMetric(consumerMetrics); } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java index 53398073314..d098b56c302 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java @@ -22,7 +22,6 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import static ai.vespa.metricsproxy.metric.ExternalMetrics.extractConfigserverDimensions; -import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; import static java.util.logging.Level.FINE; import static java.util.stream.Collectors.toList; @@ -35,7 +34,7 @@ public class MetricsManager { private static final Logger log = Logger.getLogger(MetricsManager.class.getName()); - static final DimensionId VESPA_VERSION = toDimensionId("vespaVersion"); + static final DimensionId VESPA_VERSION = DimensionId.toDimensionId("vespaVersion"); private final VespaServices vespaServices; private final VespaMetrics vespaMetrics; @@ -106,8 +105,9 @@ public class MetricsManager { result.addAll(externalPackets); + Map<DimensionId, String> globalDims = getGlobalDimensions(); return result.stream() - .map(builder -> builder.putDimensionsIfAbsent(getGlobalDimensions())) + .map(builder -> builder.putDimensionsIfAbsent(globalDims)) .map(builder -> builder.putDimensionsIfAbsent(extraDimensions)) .map(builder -> adjustTimestamp(builder, startTime)) .collect(Collectors.toList()); 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 68f53e3de04..0c83d8f73c4 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 @@ -10,13 +10,13 @@ import ai.vespa.metricsproxy.metric.MetricsFormatter; import ai.vespa.metricsproxy.metric.model.ConsumerId; import ai.vespa.metricsproxy.metric.model.Dimension; import ai.vespa.metricsproxy.metric.model.DimensionId; +import ai.vespa.metricsproxy.metric.model.MetricId; import ai.vespa.metricsproxy.metric.model.MetricsPacket; import ai.vespa.metricsproxy.service.VespaService; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -25,16 +25,14 @@ import java.util.Set; import java.util.stream.Collectors; import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.INTERNAL_SERVICE_ID; -import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId; import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; -import static com.google.common.base.Strings.isNullOrEmpty; /** * @author gjoranv */ public class VespaMetrics { - public static final ConsumerId vespaMetricsConsumerId = toConsumerId("Vespa"); + public static final ConsumerId vespaMetricsConsumerId = ConsumerId.toConsumerId("Vespa"); public static final DimensionId METRIC_TYPE_DIMENSION_ID = toDimensionId("metrictype"); public static final DimensionId INSTANCE_DIMENSION_ID = toDimensionId(INTERNAL_SERVICE_ID); @@ -147,8 +145,7 @@ public class VespaMetrics { if ( configuredConsumers.size() == 1) { consumers = Collections.singleton(configuredConsumers.get(0)); } else if (configuredConsumers.size() > 1){ - consumers = new HashSet<>(configuredConsumers); - consumers = Collections.unmodifiableSet(consumers); + consumers = Set.copyOf(configuredConsumers); } } return consumers; @@ -161,7 +158,7 @@ public class VespaMetrics { metric.setDimensions(extractDimensions(candidate.getDimensions(), configuredMetric.dimension())); metric.setConsumers(extractConsumers(consumersByMetric.get(configuredMetric))); - if (!isNullOrEmpty(configuredMetric.outputname())) + if (configuredMetric.outputname() != null && !configuredMetric.outputname().id.isEmpty()) metric.setName(configuredMetric.outputname()); return metric; } @@ -169,9 +166,9 @@ public class VespaMetrics { /** * Returns all configured metrics (for any consumer) that have the given id as 'name'. */ - private static Set<ConfiguredMetric> getConfiguredMetrics(String id, Set<ConfiguredMetric> configuredMetrics) { + private static Set<ConfiguredMetric> getConfiguredMetrics(MetricId id, Set<ConfiguredMetric> configuredMetrics) { return configuredMetrics.stream() - .filter(m -> m.id().id.equals(id)) + .filter(m -> m.id().equals(id)) .collect(Collectors.toSet()); } @@ -243,18 +240,18 @@ public class VespaMetrics { StringBuilder b = new StringBuilder(); for (VespaService s : services) { for (Metric metric : s.getMetrics().getMetrics()) { - String key = metric.getName(); - String alias = key; + MetricId key = metric.getName(); + MetricId alias = key; boolean isForwarded = false; for (ConfiguredMetric metricConsumer : getMetricDefinitions(vespaMetricsConsumerId)) { - if (metricConsumer.id().id.equals(key)) { + if (metricConsumer.id().equals(key)) { alias = metricConsumer.outputname(); isForwarded = true; } } if (isForwarded) { - b.append(formatter.format(s, alias, metric.getValue())).append(" "); + b.append(formatter.format(s, alias.id, metric.getValue())).append(" "); } } } @@ -273,11 +270,11 @@ public class VespaMetrics { for (Metric m : s.getMetrics().getMetrics()) { String description = m.getDescription(); - String alias = ""; + MetricId alias = MetricId.empty; boolean isForwarded = false; for (ConfiguredMetric metric : getMetricDefinitions(consumer)) { - if (metric.id().id.equals(m.getName())) { + if (metric.id().equals(m.getName())) { alias = metric.outputname(); isForwarded = true; if (description.isEmpty()) { @@ -296,7 +293,7 @@ public class VespaMetrics { if (!description.isEmpty()) { buffer.append(";description=").append(description); } - if (!alias.isEmpty()) { + if (!alias.id.isEmpty()) { buffer.append(";output-name=").append(alias); } buffer.append(','); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java index ae79e891e3d..dbc502d24ba 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java @@ -14,8 +14,8 @@ import java.util.Set; */ public final class AggregationKey { - private Map<DimensionId, String> dimensions; - private Set<ConsumerId> consumers; + private final Map<DimensionId, String> dimensions; + private final Set<ConsumerId> consumers; public AggregationKey(Map<DimensionId, String> dimensions, Set<ConsumerId> consumers) { this.dimensions = dimensions; 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 e39f34c43ce..f8d2184a454 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 @@ -19,7 +19,6 @@ import java.util.Set; import java.util.logging.Logger; import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; -import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static java.util.logging.Level.FINE; import static java.util.stream.Collectors.toCollection; @@ -33,7 +32,7 @@ public class ExternalMetrics { private static final Logger log = Logger.getLogger(ExternalMetrics.class.getName()); // NOTE: node service id must be kept in sync with the same constant _value_ used in node-admin:Metrics.java - public static final ServiceId VESPA_NODE_SERVICE_ID = toServiceId("vespa.node"); + public static final ServiceId VESPA_NODE_SERVICE_ID = ServiceId.toServiceId("vespa.node"); public static final DimensionId ROLE_DIMENSION = toDimensionId("role"); public static final DimensionId STATE_DIMENSION = toDimensionId("state"); @@ -55,11 +54,9 @@ public class ExternalMetrics { // 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(FINE, () -> "Setting new external metrics with " + externalPackets.size() + " metrics packets."); - externalPackets.forEach(packet -> { - packet.addConsumers(consumers.getAllConsumers()) - .retainMetrics(metricsToRetain()) - .applyOutputNames(outputNamesById()); - }); + externalPackets.forEach(packet -> packet.addConsumers(consumers.getAllConsumers()) + .retainMetrics(metricsToRetain()) + .applyOutputNames(outputNamesById())); metrics = List.copyOf(externalPackets); } @@ -73,8 +70,8 @@ public class ExternalMetrics { * Returns a mapping from metric id to a list of the metric's output names. * Metrics that only have their id as output name are included in the output. */ - private Map<MetricId, List<String>> outputNamesById() { - Map<MetricId, List<String>> outputNamesById = new LinkedHashMap<>(); + private Map<MetricId, List<MetricId>> outputNamesById() { + Map<MetricId, List<MetricId>> outputNamesById = new LinkedHashMap<>(); for (ConfiguredMetric metric : consumers.getConsumersByMetric().keySet()) { outputNamesById.computeIfAbsent(metric.id(), unused -> new ArrayList<>()) .add(metric.outputname()); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java index 63e147bf6b4..8030e03b0ff 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java @@ -3,6 +3,7 @@ package ai.vespa.metricsproxy.metric; import ai.vespa.metricsproxy.metric.model.ConsumerId; import ai.vespa.metricsproxy.metric.model.DimensionId; +import ai.vespa.metricsproxy.metric.model.MetricId; import java.util.Collections; import java.util.LinkedHashMap; @@ -17,7 +18,7 @@ public class Metric { private final long time; private final Number value; private final String description; - private String name; + private MetricId name; private Map<DimensionId, String> dimensions; private Set<ConsumerId> consumers; @@ -28,7 +29,7 @@ public class Metric { * @param value The numeric value * @param time The timestamp of this metric in seconds */ - public Metric(String name, Number value, long time, Map<DimensionId, String> dimensions, String description) { + public Metric(MetricId name, Number value, long time, Map<DimensionId, String> dimensions, String description) { this.time = time; this.value = value; this.name = name; @@ -36,11 +37,11 @@ public class Metric { this.description = description; } - public Metric(String name, Number value, long timestamp) { + public Metric(MetricId name, Number value, long timestamp) { this(name, value, timestamp, Collections.emptyMap(), ""); } - public Metric(String name, Number value) { + public Metric(MetricId name, Number value) { this(name, value, System.currentTimeMillis() / 1000); } @@ -72,14 +73,14 @@ public class Metric { * * @param name The name to use for this metric */ - public void setName(String name) { + public void setName(MetricId name) { this.name = name; } /** * @return The name of the metric */ - public String getName() { + public MetricId getName() { return name; } @@ -94,7 +95,7 @@ public class Metric { public String toString() { return "Metric{" + "time=" + time + - ", name=" + name + + ", name=" + name.id + ", value='" + value + '\'' + ", dimensions=" + dimensions + '}'; diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java index b45e7743640..143b999cf1c 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java @@ -1,6 +1,8 @@ // Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package ai.vespa.metricsproxy.metric; +import ai.vespa.metricsproxy.metric.model.MetricId; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -65,7 +67,7 @@ public class Metrics { * @param key metric name * @return the metric, or null */ - public Metric getMetric(String key) { + public Metric getMetric(MetricId key) { isFrozen = true; for (Metric m: metrics) { if (m.getName().equals(key)) { diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java index 795d1005b10..555a49228ef 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java @@ -28,9 +28,7 @@ public class ConsumerId { @Override public String toString() { - return "ConsumerId{" + - "id='" + id + '\'' + - '}'; + return id; } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java index 3804794804b..b99f720cb03 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java @@ -28,8 +28,6 @@ public final class DimensionId { @Override public String toString() { - return "DimensionId{" + - "id='" + id + '\'' + - '}'; + return id; } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java index 9be67607d4d..dcee4100f98 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java @@ -8,6 +8,7 @@ import java.util.Objects; */ public class MetricId { + public static final MetricId empty = toMetricId(""); public final String id; private MetricId(String id) { this.id = id; } @@ -28,9 +29,7 @@ public class MetricId { @Override public String toString() { - return "MetricId{" + - "id='" + id + '\'' + - '}'; + return id; } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java index 4e60838270a..dc289c6dac7 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java @@ -15,7 +15,6 @@ import java.util.Objects; import java.util.Set; import java.util.function.Function; -import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId; import static java.util.Collections.unmodifiableList; import static java.util.Collections.unmodifiableMap; import static java.util.stream.Collectors.joining; @@ -121,8 +120,7 @@ public class MetricsPacket { public Builder putMetrics(Collection<Metric> extraMetrics) { if (extraMetrics != null) - extraMetrics.forEach(metric -> metrics.put(toMetricId(metric.getName()), - metric.getValue().doubleValue())); + extraMetrics.forEach(metric -> metrics.put(metric.getName(), metric.getValue().doubleValue())); return this; } @@ -136,11 +134,11 @@ public class MetricsPacket { return this; } - public Builder applyOutputNames(Map<MetricId, List<String>> outputNamesById) { + public Builder applyOutputNames(Map<MetricId, List<MetricId>> outputNamesById) { Map<MetricId, Number> newMetrics = new LinkedHashMap<>(); outputNamesById.forEach((id, outputNames) -> { if (metrics.containsKey(id)) - outputNames.forEach(outputName -> newMetrics.put(toMetricId(outputName), metrics.get(id))); + outputNames.forEach(outputName -> newMetrics.put(outputName, metrics.get(id))); }); metrics = newMetrics; return this; diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java index 14f1a67bef3..bbc958fcda5 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java @@ -28,9 +28,7 @@ public class ServiceId { @Override public String toString() { - return "ServiceId{" + - "id='" + id + '\'' + - '}'; + return id; } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java index e249338c318..c04b6ea66ad 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java @@ -18,7 +18,6 @@ import java.util.stream.Collectors; import static ai.vespa.metricsproxy.metric.ExternalMetrics.VESPA_NODE_SERVICE_ID; import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId; -import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.createObjectMapper; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; @@ -139,7 +138,7 @@ public class GenericJsonUtil { } private static MetricsPacket.Builder newServicePacket(GenericService service) { - return new MetricsPacket.Builder(toServiceId(service.name)) + return new MetricsPacket.Builder(ServiceId.toServiceId(service.name)) .statusCode(StatusCode.fromString(service.status.code).ordinal()) .statusMessage(service.status.description) .timestamp(service.timestamp); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java index 38038fda66a..f5b7f67038a 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java @@ -4,6 +4,7 @@ package ai.vespa.metricsproxy.metric.model.json; import ai.vespa.metricsproxy.metric.Metric; import ai.vespa.metricsproxy.metric.model.ConsumerId; import ai.vespa.metricsproxy.metric.model.DimensionId; +import ai.vespa.metricsproxy.metric.model.MetricId; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @@ -55,7 +56,7 @@ public class YamasJsonModel { // NOTE: do not rename to 'setMetrics', as jackson will try to use it. public void resetMetrics(List<Metric> newMetrics) { metrics = new LinkedHashMap<>(); - newMetrics.forEach(metric -> metrics.put(metric.getName(), metric.getValue().doubleValue())); + newMetrics.forEach(metric -> metrics.put(metric.getName().id, metric.getValue().doubleValue())); } /** @@ -106,7 +107,7 @@ public class YamasJsonModel { if (metrics == null) return emptyList(); return metrics.keySet().stream() - .map(name -> new Metric(name, metrics.get(name))) + .map(name -> new Metric(MetricId.toMetricId(name), metrics.get(name))) .collect(Collectors.toList()); } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java index 4413a9ebc2e..4dbe1a9a982 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java @@ -3,6 +3,7 @@ package ai.vespa.metricsproxy.metric.model.json; import ai.vespa.metricsproxy.metric.model.ConsumerId; import ai.vespa.metricsproxy.metric.model.MetricsPacket; +import ai.vespa.metricsproxy.metric.model.ServiceId; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.ObjectMapper; @@ -17,7 +18,6 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId; -import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId; import static com.yahoo.stream.CustomCollectors.toLinkedMap; import static java.util.Collections.emptyList; import static java.util.logging.Level.WARNING; @@ -34,7 +34,7 @@ public class YamasJsonUtil { if (jsonModel.application == null) throw new IllegalArgumentException("Service id cannot be null"); - return new MetricsPacket.Builder(toServiceId(jsonModel.application)) + return new MetricsPacket.Builder(ServiceId.toServiceId(jsonModel.application)) .statusCode(jsonModel.status_code) .statusMessage(jsonModel.status_msg) .timestamp(jsonModel.timestamp) diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java index 20c2325e1f3..48621b9abab 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java @@ -4,6 +4,7 @@ package ai.vespa.metricsproxy.service; import ai.vespa.metricsproxy.metric.Metric; import ai.vespa.metricsproxy.metric.Metrics; import ai.vespa.metricsproxy.metric.model.DimensionId; +import ai.vespa.metricsproxy.metric.model.MetricId; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.JsonNode; @@ -30,9 +31,7 @@ public class MetricsParser { static Metrics parse(String data) throws IOException { return parse(jsonMapper.createParser(data)); } - static Metrics parse(byte [] data) throws IOException { - return parse(jsonMapper.createParser(data)); - } + static Metrics parse(InputStream data) throws IOException { return parse(jsonMapper.createParser(data)); } @@ -155,8 +154,8 @@ public class MetricsParser { if (value == null) { throw new IllegalArgumentException("Value for aggregator '" + aggregator + "' is not a number"); } - StringBuilder metricName = (new StringBuilder()).append(name).append(".").append(aggregator); - metrics.add(new Metric(metricName.toString(), value, timestamp, dim, description)); + String metricName = new StringBuilder().append(name).append(".").append(aggregator).toString(); + metrics.add(new Metric(MetricId.toMetricId(metricName), value, timestamp, dim, description)); } } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java index 5d119fc30e6..fbccd3dc066 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java @@ -3,6 +3,8 @@ package ai.vespa.metricsproxy.service; import ai.vespa.metricsproxy.metric.Metric; import ai.vespa.metricsproxy.metric.Metrics; +import ai.vespa.metricsproxy.metric.model.MetricId; + import java.util.logging.Level; import java.io.BufferedReader; @@ -115,8 +117,8 @@ public class SystemPoller { long[] size = getMemoryUsage(s); log.log(Level.FINE, () -> "Updating memory metric for service " + s); - metrics.add(new Metric("memory_virt", size[memoryTypeVirtual], startTime / 1000)); - metrics.add(new Metric("memory_rss", size[memoryTypeResident], startTime / 1000)); + metrics.add(new Metric(MetricId.toMetricId("memory_virt"), size[memoryTypeVirtual], startTime / 1000)); + metrics.add(new Metric(MetricId.toMetricId("memory_rss"), size[memoryTypeResident], startTime / 1000)); long procJiffies = getPidJiffies(s); if (lastTotalCpuJiffies >= 0 && lastCpuJiffiesMetrics.containsKey(s)) { @@ -124,7 +126,7 @@ public class SystemPoller { long diff = procJiffies - last; if (diff >= 0) { - metrics.add(new Metric("cpu", 100 * ((double) diff) / (sysJiffies - lastTotalCpuJiffies), startTime / 1000)); + metrics.add(new Metric(MetricId.toMetricId("cpu"), 100 * ((double) diff) / (sysJiffies - lastTotalCpuJiffies), startTime / 1000)); } } lastCpuJiffiesMetrics.put(s, procJiffies); |