Struct MeterProviderBuilder
pub struct MeterProviderBuilder { /* private fields */ }
Expand description
Configuration options for a MeterProvider.
Implementations§
§impl MeterProviderBuilder
impl MeterProviderBuilder
pub fn with_resource(self, resource: Resource) -> MeterProviderBuilder
pub fn with_resource(self, resource: Resource) -> MeterProviderBuilder
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.
pub fn with_reader<T>(self, reader: T) -> MeterProviderBuilderwhere
T: MetricReader,
pub fn with_reader<T>(self, reader: T) -> MeterProviderBuilderwhere
T: MetricReader,
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.
pub fn with_periodic_exporter<T>(self, exporter: T) -> MeterProviderBuilderwhere
T: PushMetricExporter,
pub fn with_periodic_exporter<T>(self, exporter: T) -> MeterProviderBuilderwhere
T: PushMetricExporter,
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()
.
pub fn with_view<T>(self, view: T) -> MeterProviderBuilder
pub fn with_view<T>(self, view: T) -> MeterProviderBuilder
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.
pub fn build(self) -> SdkMeterProvider
pub fn build(self) -> SdkMeterProvider
Construct a new MeterProvider with this configuration.
Trait Implementations§
§impl Debug for MeterProviderBuilder
impl Debug for MeterProviderBuilder
§impl Default for MeterProviderBuilder
impl Default for MeterProviderBuilder
§fn default() -> MeterProviderBuilder
fn default() -> MeterProviderBuilder
Auto Trait Implementations§
impl Freeze for MeterProviderBuilder
impl !RefUnwindSafe for MeterProviderBuilder
impl Send for MeterProviderBuilder
impl Sync for MeterProviderBuilder
impl Unpin for MeterProviderBuilder
impl !UnwindSafe for MeterProviderBuilder
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more