From 82762cd238c4588f51ff1c178b61fa2a9228f32b Mon Sep 17 00:00:00 2001 From: gjoranv Date: Thu, 1 Jun 2017 16:25:58 +0200 Subject: Add new metric set for system metrics, and add to predefined sets. --- .../model/admin/monitoring/SystemMetrics.java | 51 ++++++++++++++++++++++ .../model/admin/monitoring/VespaMetricSet.java | 3 ++ .../monitoring/builder/PredefinedMetricSets.java | 4 +- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java 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 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 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 systemMetrics = ImmutableSet.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 predefinedMetricSets = toMapById( - new VespaMetricSet() + new VespaMetricSet(), + SystemMetrics.systemMetricSet ); private static Map toMapById(MetricSet... metricSets) { -- cgit v1.2.3