aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'metrics-proxy/src/main')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java6
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java3
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java6
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java29
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java15
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java15
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java5
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java8
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java3
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java5
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java9
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java8
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);