diff options
3 files changed, 57 insertions, 1 deletions
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 new file mode 100644 index 00000000000..5f637090b73 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java @@ -0,0 +1,51 @@ +// Copyright 2017 Yahoo 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.Set; + +/** + * @author gjoranv + */ +@SuppressWarnings("UnusedDeclaration") // Used by model amenders +public class SystemMetrics { + public static final String CPU_UTIL = "cpu.util"; + public static final String DISK_LIMIT = "disk.limit"; + public static final String DISK_USED = "disk.used"; + public static final String DISK_UTIL = "disk.util"; + public static final String MEM_LIMIT = "mem.limit"; + public static final String MEM_USED = "mem.used"; + public static final String MEM_UTIL = "mem.util"; + + public static final MetricSet systemMetricSet = createSystemMetricSet(); + + private static MetricSet createSystemMetricSet() { + Set<Metric> dockerNodeMetrics = + ImmutableSet.of(new Metric(CPU_UTIL), + new Metric(DISK_LIMIT), + new Metric(DISK_USED), + new Metric(DISK_UTIL), + new Metric(MEM_LIMIT), + new Metric(MEM_USED), + new Metric(MEM_UTIL) + ); + + Set<Metric> nonDockerNodeMetrics = + // Disk metrics should be based on /home, or else '/' - or simply add filesystem as dimension + ImmutableSet.of(new Metric("cpu.busy.pct", CPU_UTIL), + new Metric("mem.used.pct", MEM_UTIL), + new Metric("memory.usage", MEM_USED), + new Metric("mem.total.kb", MEM_LIMIT), + new Metric("fs.used.kb", DISK_USED), + new Metric("fs.capacity.kb", DISK_LIMIT) + ); + + Set<Metric> systemMetrics = ImmutableSet.<Metric>builder() + .addAll(dockerNodeMetrics) + .addAll(nonDockerNodeMetrics) + .build(); + + return new MetricSet("system", systemMetrics); + } +} 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 073435a1d53..e16f28a7ad1 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 @@ -7,6 +7,9 @@ import java.util.LinkedHashSet; import java.util.Set; /** + * Encapsulates vespa service metrics. + * IS-A metric set for convenience only (to avoid one indirection to what would have been this class' HAS-A metric set). + * * @author gjoranv */ @SuppressWarnings("UnusedDeclaration") // Used by model amenders 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 bbeccb52bcb..f68aff3c407 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 @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.admin.monitoring.builder; import com.yahoo.vespa.model.admin.monitoring.MetricSet; +import com.yahoo.vespa.model.admin.monitoring.SystemMetrics; import com.yahoo.vespa.model.admin.monitoring.VespaMetricSet; import java.util.Collections; @@ -16,7 +17,8 @@ import java.util.Map; public class PredefinedMetricSets { public static final Map<String, MetricSet> predefinedMetricSets = toMapById( - new VespaMetricSet() + new VespaMetricSet(), + SystemMetrics.systemMetricSet ); private static Map<String, MetricSet> toMapById(MetricSet... metricSets) { |