Struct metrics_util::Recency[][src]

pub struct Recency<K> { /* fields omitted */ }
Expand description

Tracks recency of metric updates by their registry generation and time.

In many cases, a user may have a long-running process where metrics are stored over time using labels that change for some particular reason, leaving behind versions of that metric with labels that are no longer relevant to the current process state. This can lead to cases where metrics that no longer matter are still present in rendered output, adding bloat.

When coupled with Registry, Recency can be used to track when the last update to a metric has occurred for the purposes of removing idle metrics from the registry. In addition, it will remove the value from the registry itself to reduce the aforementioned bloat.

Recency is separate from Registry specifically to avoid imposing any slowdowns when tracking recency does not matter, despite their otherwise tight coupling.

Implementations

Creates a new Recency.

If idle_timeout is None, no recency checking will occur. mask controls which metrics are covered by the recency logic. For example, if mask only contains counters and histograms, then gauges will not be considered for recency, and thus will never be deleted.

If idle_timeout is not None, then metrics which have not been updated within the given duration will be subject to deletion when checked. Specifically, the deletions done by this object only happen when the object is “driven” by calling should_store, and so handles will not necessarily be deleted immediately after execeeding their idle timeout.

Refer to the documentation for MetricKindMask for more information on defining a metric kind mask.

Checks if the given key should be stored, based on its known recency.

kind will be used to see if the given metric kind is subject to recency tracking for this instance. generation should be obtained from the the same reference to registry that been given.

If the given key has been updated recently enough, and should continue to be stored, this method will return true and will update the last update time internally. If the given key has not been updated recently enough, the key will be removed from the given registry if the given generation also matches.

If the generation does not match, this indicates that the key was updated between querying it from the registry and calling this method, and this method will return true in those cases, and false for all remaining cases.

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.