summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2022-08-24 12:31:00 +0200
committerHåkon Hallingstad <hakon@yahooinc.com>2022-08-24 12:31:00 +0200
commit96d6c9b0024e32e1c32bd6533c3672a9c8289cd1 (patch)
tree65fe5dbe11fd3db15b8ceedea4faa264f1b54433 /node-admin
parent9c5726880f750a2d99ef56cfc660774eacd35b4e (diff)
Purge old containers dimension value
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Dimensions.java27
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java16
3 files changed, 15 insertions, 30 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Dimensions.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Dimensions.java
index 5a542feb5c7..d29569945a8 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Dimensions.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Dimensions.java
@@ -7,39 +7,14 @@ import java.util.Map;
/**
* @author freva
*/
-public class Dimensions {
+public record Dimensions(Map<String, String> dimensionsMap) {
public static final Dimensions NONE = new Dimensions(Map.of());
- private final Map<String, String> dimensionsMap;
-
public Dimensions(Map<String, String> dimensionsMap) {
this.dimensionsMap = Map.copyOf(dimensionsMap);
}
- public Map<String, String> asMap() {
- return dimensionsMap;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Dimensions that = (Dimensions) o;
- return dimensionsMap.equals(that.dimensionsMap);
- }
-
- @Override
- public int hashCode() {
- return dimensionsMap.hashCode();
- }
-
- @Override
- public String toString() {
- return dimensionsMap.toString();
- }
-
public static class Builder {
private final Map<String, String> dimensionsMap = new HashMap<>();
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java
index f7fdf171fc1..07a8d545178 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java
@@ -117,7 +117,7 @@ public class Metrics {
}
}
- // Used to distinguish whether metrics have been populated with all tag vaules
+ // Used to distinguish whether metrics have been populated with all tag values
public enum DimensionType {
/** Default metrics get added default dimensions set in check config */
DEFAULT,
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
index a112c0d2697..528383eb91e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
@@ -52,6 +52,7 @@ public class NodeAdminImpl implements NodeAdmin {
private final Gauge containerCount;
private final Counter numberOfUnhandledExceptions;
private final Metrics metrics;
+ private Dimensions previousMemoryOverheadDimensions = null;
public NodeAdminImpl(NodeAgentFactory nodeAgentFactory, Metrics metrics, Clock clock, FileSystem fileSystem) {
this(nodeAgentContext -> create(clock, nodeAgentFactory, nodeAgentContext),
@@ -113,7 +114,7 @@ public class NodeAdminImpl implements NodeAdmin {
@Override
public void updateMetrics(boolean isSuspended) {
- long numContainers = 0;
+ int numContainers = 0;
long totalContainerMemoryBytes = 0;
for (NodeAgentWithScheduler nodeAgentWithScheduler : nodeAgentWithSchedulerByHostname.values()) {
@@ -139,11 +140,20 @@ public class NodeAdminImpl implements NodeAdmin {
if (!isSuspended) {
containerCount.sample(numContainers);
ProcMeminfo meminfo = procMeminfoReader.read();
- metrics.declareGauge("mem.system.overhead", new Dimensions(Map.of("containers", Long.toString(numContainers))))
- .sample(meminfo.memTotalBytes() - meminfo.memAvailableBytes() - totalContainerMemoryBytes);
+ updateMemoryOverheadMetric(numContainers, meminfo.memTotalBytes() - meminfo.memAvailableBytes() - totalContainerMemoryBytes);
}
}
+ private void updateMemoryOverheadMetric(int numContainers, double memoryOverhead) {
+ final String name = "mem.system.overhead";
+ Dimensions dimensions = new Dimensions(Map.of("containers", Integer.toString(numContainers)));
+ metrics.declareGauge(Metrics.APPLICATION_HOST, name, dimensions, Metrics.DimensionType.DEFAULT)
+ .sample(memoryOverhead);
+ if (previousMemoryOverheadDimensions != null && !previousMemoryOverheadDimensions.equals(dimensions))
+ metrics.deleteMetricByDimension(name, previousMemoryOverheadDimensions, Metrics.DimensionType.DEFAULT);
+ previousMemoryOverheadDimensions = dimensions;
+ }
+
@Override
public boolean setFrozen(boolean wantFrozen) {
if (wantFrozen != previousWantFrozen) {