summaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2019-12-02 09:20:01 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2019-12-02 13:06:04 +0100
commit0dc610dd56b0b655745829fbb0256046039a99e2 (patch)
treef022b5a243de80a112abcf2e054e7152d1fc924a /metrics-proxy
parente346de03f3ff1b37e9b7ce94399492fdebcd5ac6 (diff)
Add TTL to external metrics
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
index fc81bd1a0ee..27d4f06ab40 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
@@ -46,6 +46,8 @@ public class MetricsManager {
private final NodeDimensions nodeDimensions;
private volatile Map<DimensionId, String> extraDimensions = new HashMap<>();
+ private volatile Instant externalMetricsUpdateTime = Instant.now();
+ private static final Duration EXTERNAL_DIMENSIONS_TTL = Duration.ofMinutes(10);
public MetricsManager(VespaServices vespaServices,
VespaMetrics vespaMetrics,
@@ -88,6 +90,7 @@ public class MetricsManager {
List<MetricsPacket.Builder> result = vespaMetrics.getMetrics(services);
log.log(DEBUG, () -> "Got " + result.size() + " metrics packets for vespa services.");
+ clearStaleMetrics();
List<MetricsPacket.Builder> externalPackets = externalMetrics.getMetrics().stream()
.filter(MetricsPacket.Builder::hasMetrics)
.collect(toList());
@@ -145,14 +148,23 @@ public class MetricsManager {
}
public void setExtraMetrics(List<MetricsPacket.Builder> packets) {
+ externalMetricsUpdateTime = Instant.now();
extraDimensions = extractConfigserverDimensions(packets);
externalMetrics.setExtraMetrics(packets);
}
public Map<DimensionId, String> getExtraDimensions() {
+ clearStaleMetrics();
return this.extraDimensions;
}
+ private void clearStaleMetrics() {
+ if (Duration.between(externalMetricsUpdateTime, Instant.now()).getSeconds() > EXTERNAL_DIMENSIONS_TTL.getSeconds()) {
+ this.extraDimensions = new HashMap<>();
+ externalMetrics.setExtraMetrics(Collections.emptyList());
+ }
+ }
+
/**
* Returns a space separated list of all distinct service names.
*/