summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-09-18 13:56:51 +0200
committerJon Bratseth <bratseth@gmail.com>2020-09-18 13:56:51 +0200
commit9a4a8a442f3b75a869e21adac4ae17f729e09688 (patch)
treeddb990bdcc64e23afee276dcd4e96b7627f959da
parent2480ea2140a14fe91722e9997eeae4d893bce3c8 (diff)
Add 'autoscaling' metric consumer
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java26
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java7
4 files changed, 40 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java
new file mode 100644
index 00000000000..f6f51ed91fb
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java
@@ -0,0 +1,26 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.admin.monitoring;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Metrics used for autoscaling
+ *
+ * @author bratseth
+ */
+public class AutoscalingMetrics {
+
+ public static final MetricSet autoscalingMetricSet = create();
+
+ private static MetricSet create() {
+ return new MetricSet("autoscaling",
+ metrics("cpu.util", "mem_total.util", "disk.util"));
+ }
+
+ private static Set<Metric> metrics(String ... names) {
+ return Arrays.stream(names).map(Metric::new).collect(Collectors.toSet());
+ }
+
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java
index 6731e9b2581..698b01c306a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java
@@ -10,6 +10,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
+import static com.yahoo.vespa.model.admin.monitoring.AutoscalingMetrics.autoscalingMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.DefaultMetrics.defaultMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet;
@@ -19,7 +20,7 @@ import static java.util.Collections.unmodifiableList;
/**
* A metric consumer is a set of metrics given an id that can be requested at runtime.
*
- * @author trygve
+ * @author Trygve Berdal
* @author gjoranv
*/
// TODO: This construct seems redundant when we have metrics sets
@@ -30,6 +31,9 @@ public class MetricsConsumer {
consumer(VespaMetrics.vespaMetricsConsumerId.id, vespaMetricSet, systemMetricSet, networkMetricSet);
public static final MetricsConsumer defaultConsumer =
consumer(ValuesFetcher.defaultMetricsConsumerId.id, defaultMetricSet, systemMetricSet);
+ // Referenced from com.yahoo.vespa.hosted.provision.autoscale.NodeMetricsFetcher
+ public static final MetricsConsumer autoscaling =
+ consumer("autoscaling", autoscalingMetricSet);
private final String id;
private final MetricSet metricSet;
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 fac6e37feec..dd514f1e245 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,6 +7,7 @@ import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
+import static com.yahoo.vespa.model.admin.monitoring.AutoscalingMetrics.autoscalingMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.DefaultMetrics.defaultMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.NetworkMetrics.networkMetricSet;
import static com.yahoo.vespa.model.admin.monitoring.SystemMetrics.systemMetricSet;
@@ -20,14 +21,17 @@ import static com.yahoo.vespa.model.admin.monitoring.VespaMetricSet.vespaMetricS
*/
public class PredefinedMetricSets {
- public static final Map<String, MetricSet> predefinedMetricSets = toMapById(
+ private static final Map<String, MetricSet> sets = toMapById(
defaultMetricSet,
defaultVespaMetricSet,
vespaMetricSet,
systemMetricSet,
- networkMetricSet
+ networkMetricSet,
+ autoscalingMetricSet
);
+ public static Map<String, MetricSet> get() { return sets; }
+
private static Map<String, MetricSet> toMapById(MetricSet... metricSets) {
Map<String, MetricSet> availableMetricSets = new LinkedHashMap<>();
for (MetricSet metricSet : metricSets) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
index d2f06da992c..b643f771d73 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
@@ -18,6 +18,7 @@ import com.yahoo.vespa.model.admin.ModelConfigProvider;
import com.yahoo.vespa.model.admin.monitoring.DefaultMonitoring;
import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import com.yahoo.vespa.model.admin.monitoring.builder.Metrics;
+import com.yahoo.vespa.model.admin.monitoring.builder.PredefinedMetricSets;
import com.yahoo.vespa.model.admin.monitoring.builder.xml.MetricsBuilder;
import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
import org.w3c.dom.Element;
@@ -25,8 +26,6 @@ import org.w3c.dom.Element;
import java.util.ArrayList;
import java.util.List;
-import static com.yahoo.vespa.model.admin.monitoring.builder.PredefinedMetricSets.predefinedMetricSets;
-
/**
* A base class for admin model builders, to support common functionality across versions.
*
@@ -69,8 +68,8 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
@Override
protected Admin doBuild(DeployState deployState, AbstractConfigProducer parent, Element adminElement) {
Monitoring monitoring = getMonitoring(XML.getChild(adminElement,"monitoring"), deployState.isHosted());
- Metrics metrics = new MetricsBuilder(applicationType, predefinedMetricSets)
- .buildMetrics(XML.getChild(adminElement, "metrics"));
+ Metrics metrics = new MetricsBuilder(applicationType, PredefinedMetricSets.get())
+ .buildMetrics(XML.getChild(adminElement, "metrics"));
FileDistributionConfigProducer fileDistributionConfigProducer = getFileDistributionConfigProducer(parent, deployState.isHosted());
Admin admin = new Admin(parent, monitoring, metrics, multitenant, fileDistributionConfigProducer, deployState.isHosted());