pub struct MeterProviderBuilder { /* private fields */ }Expand description
Configuration options for a MeterProvider.
Implementations§
Source§impl MeterProviderBuilder
impl MeterProviderBuilder
Sourcepub fn with_resource(self, resource: Resource) -> Self
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.
Sourcepub fn with_reader<T: MetricReader>(self, reader: T) -> Self
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.
Sourcepub fn with_periodic_exporter<T>(self, exporter: T) -> Selfwhere
T: PushMetricExporter,
pub fn with_periodic_exporter<T>(self, exporter: T) -> Selfwhere
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().
Sourcepub fn with_view<T>(self, view: T) -> Self
pub fn with_view<T>(self, view: T) -> Self
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.
Sourcepub fn build(self) -> SdkMeterProvider
pub fn build(self) -> SdkMeterProvider
Construct a new MeterProvider with this configuration.