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