Struct relay_metrics::aggregator::Aggregator

source ·
pub struct Aggregator { /* private fields */ }
Expand description

A collector of Bucket submissions.

§Aggregation

Each metric is dispatched into the a Bucket depending on its project key (DSN), name, type, unit, tags and timestamp. The bucket timestamp is rounded to the precision declared by the bucket_interval field on the AggregatorConfig configuration.

Each bucket stores the accumulated value of submitted metrics:

  • Counter: Sum of values.
  • Distribution: A list of values.
  • Set: A unique set of hashed values.
  • Gauge: A summary of the reported values, see GaugeValue.

§Conflicts

Metrics are uniquely identified by the combination of their name, type and unit. It is allowed to send metrics of different types and units under the same name. For example, sending a metric once as set and once as distribution will result in two actual metrics being recorded.

Implementations§

source§

impl Aggregator

source

pub fn new(config: AggregatorConfig) -> Self

Create a new aggregator.

source

pub fn named(name: String, config: AggregatorConfig) -> Self

Like Self::new, but with a provided name.

source

pub fn name(&self) -> &str

Returns the name of the aggregator.

source

pub fn bucket_count(&self) -> usize

Returns the number of buckets in the aggregator.

source

pub fn totals_cost_exceeded(&self) -> bool

Returns true if the cost trackers value is larger than the configured max cost.

source

pub fn into_buckets(self) -> Vec<Bucket>

Converts this aggregator into a vector of Bucket.

source

pub fn pop_flush_buckets( &mut self, force: bool, ) -> HashMap<Option<u64>, HashMap<ProjectKey, Vec<Bucket>>>

Pop and return the partitions with buckets that are eligible for flushing out according to bucket interval.

If no partitioning is enabled, the function will return a single None partition.

Note that this function is primarily intended for tests.

source

pub fn merge( &mut self, project_key: ProjectKey, bucket: Bucket, ) -> Result<(), AggregateMetricsError>

Merge a bucket into this aggregator.

Like Self::merge_with_options with defaults.

source

pub fn merge_with_options( &mut self, project_key: ProjectKey, bucket: Bucket, now: UnixTimestamp, ) -> Result<(), AggregateMetricsError>

Merge a bucket into this aggregator.

If no bucket exists for the given bucket key, a new bucket will be created.

Arguments:

  • now: The current timestamp, when merging a large batch of buckets, the timestamp should be created outside of the loop.

Trait Implementations§

source§

impl Debug for Aggregator

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more