rama::telemetry::opentelemetry::metrics

Trait MeterProvider

pub trait MeterProvider {
    // Required method
    fn meter_with_scope(&self, scope: InstrumentationScope) -> Meter;

    // Provided method
    fn meter(&self, name: &'static str) -> Meter { ... }
}
Expand description

Provides access to named Meter instances, for instrumenting an application or crate.

Required Methods§

fn meter_with_scope(&self, scope: InstrumentationScope) -> Meter

Returns a new Meter with the given instrumentation scope.

§Examples
use std::sync::Arc;
use opentelemetry::InstrumentationScope;
use opentelemetry::metrics::MeterProvider;
use opentelemetry_sdk::metrics::SdkMeterProvider;

let provider = SdkMeterProvider::default();

// meter used in applications/binaries
let meter = provider.meter("my_app");

// meter used in libraries/crates that optionally includes version and schema url
let scope = InstrumentationScope::builder(env!("CARGO_PKG_NAME"))
    .with_version(env!("CARGO_PKG_VERSION"))
    .with_schema_url("https://opentelemetry.io/schema/1.0.0")
    .build();

let meter = provider.meter_with_scope(scope);

Provided Methods§

fn meter(&self, name: &'static str) -> Meter

Returns a new Meter with the provided name and default configuration.

A Meter should be scoped at most to a single application or crate. The name needs to be unique so it does not collide with other names used by an application, nor other applications.

§Examples
use opentelemetry::{global, metrics::MeterProvider};
use opentelemetry::KeyValue;

let provider = global::meter_provider();

// meter used in applications
let meter = provider.meter("my_app");

Implementors§