diff options
author | bjormel <bjormel@verizonmedia.com> | 2021-07-30 13:01:49 +0200 |
---|---|---|
committer | bjormel <bjormel@verizonmedia.com> | 2021-07-30 13:01:49 +0200 |
commit | 7188c50f25d8f33503fa1186a13b919c7257431a (patch) | |
tree | 0c4d6e1f78937adc60f11d8b68935751e4868db8 /node-admin | |
parent | 568ac5d621592fb6c675157a6cfd582408d3788f (diff) |
Maintaining last change time, using diff as metric value
Diffstat (limited to 'node-admin')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java index 63217acd2f7..e5fae90c8aa 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java @@ -18,7 +18,9 @@ import java.net.InetAddress; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.logging.Level; @@ -47,11 +49,18 @@ public class AclMaintainer { private final ContainerOperations containerOperations; private final IPAddresses ipAddresses; private final Metrics metrics; + private final Map<String, Long> lastSuccess; + private static final String METRIC_NAME_POSTFIX = ".acl.age"; public AclMaintainer(ContainerOperations containerOperations, IPAddresses ipAddresses, Metrics metrics) { this.containerOperations = containerOperations; this.ipAddresses = ipAddresses; this.metrics = metrics; + this.lastSuccess = new HashMap<>(){{ + put(IPVersion.IPv4.id(), System.currentTimeMillis()); + put(IPVersion.IPv6.id(), System.currentTimeMillis()); + }}; + } // ip(6)tables operate while having the xtables lock, run with synchronized to prevent multiple NodeAgents @@ -62,8 +71,8 @@ public class AclMaintainer { // Apply acl to the filter table boolean updatedIPv4 = editFlushOnError(context, IPVersion.IPv4, "filter", FilterTableLineEditor.from(context.acl(), IPVersion.IPv4)); boolean updatedIPv6 = editFlushOnError(context, IPVersion.IPv6, "filter", FilterTableLineEditor.from(context.acl(), IPVersion.IPv6)); - updateMetrics(context, updatedIPv4, "IPv4-acl.updated"); - updateMetrics(context, updatedIPv6, "IPv6-acl.updated"); + updateMetric(context, updatedIPv4, IPVersion.IPv4.id()); + updateMetric(context, updatedIPv6, IPVersion.IPv6.id()); ipAddresses.getAddress(context.hostname().value(), IPVersion.IPv4).ifPresent(addr -> applyRedirect(context, addr)); ipAddresses.getAddress(context.hostname().value(), IPVersion.IPv6).ifPresent(addr -> applyRedirect(context, addr)); @@ -122,12 +131,17 @@ public class AclMaintainer { }; } - void updateMetrics(NodeAgentContext context, boolean updated, String name) { - if (!updated) return; - + void updateMetric(NodeAgentContext context, boolean updated, String ipVersion) { Dimensions dimensions = generateDimensions(context); + if (!updated) { + metrics.declareGauge(Metrics.APPLICATION_NODE, ipVersion + METRIC_NAME_POSTFIX, dimensions, Metrics.DimensionType.PRETAGGED) + .sample((System.currentTimeMillis() - lastSuccess.get(ipVersion)) / 1000); + return; + } - metrics.declareGauge(Metrics.APPLICATION_NODE, name, dimensions, Metrics.DimensionType.PRETAGGED).sample(System.currentTimeMillis()/1000); + metrics.declareGauge(Metrics.APPLICATION_NODE, ipVersion + METRIC_NAME_POSTFIX, dimensions, Metrics.DimensionType.PRETAGGED) + .sample(0); + lastSuccess.put(ipVersion, System.currentTimeMillis()); } |