Struct MeterProviderBuilder

Source
pub struct MeterProviderBuilder { /* private fields */ }
Expand description

Configuration options for a MeterProvider.

Implementations§

Source§

impl MeterProviderBuilder

Source

pub fn with_resource(self, resource: Resource) -> Self

Associates a Resource with a MeterProvider.

This Resource represents the entity producing telemetry and is associated with all Meters the MeterProvider will create.

By default, if this option is not used, the default Resource will be used.

Note: Calls to this method are additive, each call merges the provided resource with the previous one.

Source

pub fn with_reader<T: MetricReader>(self, reader: T) -> Self

Associates a [MetricReader] with a MeterProvider. `MeterProviderBuilder::with_periodic_exporter() can be used to add a PeriodicReader which is the most common use case.

A MeterProvider will export no metrics without [MetricReader] added.

Source

pub fn with_periodic_exporter<T>(self, exporter: T) -> Self

Adds a PushMetricExporter to the MeterProvider and configures it to export metrics at fixed intervals (60 seconds) using a PeriodicReader.

To customize the export interval, set the “OTEL_METRIC_EXPORT_INTERVAL” environment variable (in milliseconds).

Most users should use this method to attach an exporter. Advanced users who need finer control over the export process can use crate::metrics::PeriodicReaderBuilder to configure a custom reader and attach it using MeterProviderBuilder::with_reader().

Source

pub fn with_view<T>(self, view: T) -> Self
where T: Fn(&Instrument) -> Option<Stream> + Send + Sync + 'static,

Adds a view to the MeterProvider.

Views allow you to customize how metrics are aggregated, renamed, or otherwise transformed before export, without modifying instrument definitions in your application or library code.

You can pass any function or closure matching the signature Fn(&Instrument) -> Option<Stream> + Send + Sync + 'static. The function receives a reference to the Instrument and can return an Option of Stream to specify how matching instruments should be exported. Returning None means the view does not apply to the given instrument, and the default behavior will be used.

§Examples

Renaming a metric:

let view_rename = |i: &Instrument| {
    if i.name() == "my_counter" {
        Some(Stream::builder().with_name("my_counter_renamed").build().expect("Stream should be valid"))
    } else {
        None
    }
};
builder.with_view(view_rename);

Setting a cardinality limit to control resource usage:

let view_change_cardinality = |i: &Instrument| {
    if i.name() == "my_counter" {
        Some(
            Stream::builder()
                .with_cardinality_limit(100).build().expect("Stream should be valid"),
        )
    } else {
        None
    }
};
builder.with_view(view_change_cardinality);

Silently ignoring Stream build errors:

let my_view_change_cardinality = |i: &Instrument| {
    if i.name() == "my_second_histogram" {
        // Note: If Stream is invalid, build() will return `Error` variant.
        // By calling `.ok()`, any such error is ignored and treated as if the view does not match
        // the instrument.
        // If this is not the desired behavior, consider handling the error explicitly.
        Stream::builder().with_cardinality_limit(0).build().ok()
    } else {
        None
    }
};
builder.with_view(my_view_change_cardinality);

If no views are added, the MeterProvider uses the default view.

Source

pub fn build(self) -> SdkMeterProvider

Construct a new MeterProvider with this configuration.

Trait Implementations§

Source§

impl Debug for MeterProviderBuilder

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for MeterProviderBuilder

Source§

fn default() -> MeterProviderBuilder

Returns the “default value” for a type. 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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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>,

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.
Source§

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

Source§

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