relay_metrics::aggregator

Struct 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 named(name: String, config: &AggregatorConfig) -> Self

Creates a new named Self.

source

pub fn name(&self) -> &str

Returns the name of the aggregator.

source

pub fn is_empty(&self) -> bool

Returns true if the aggregator contains any metric buckets.

source

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

Merge a bucket into this aggregator.

source

pub fn try_flush_next(&mut self, now: SystemTime) -> Result<Partition, Duration>

Attempts to flush the next batch from the aggregator.

If it is too early to flush the next batch, the error contains the timestamp when the flush should be retried. After a successful flush, retry immediately until an error is returned with the next flush time, this makes sure time is eventually synchronized.

source

pub fn next_flush_at(&mut self, now: SystemTime) -> Duration

Returns when the next partition is ready to be flushed using Self::try_flush_next.

source

pub fn into_partitions(self) -> impl Iterator<Item = Partition>

Consumes the aggregator and returns all contained partitions.

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.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

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

source§

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>,

source§

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

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T