metrics-opentelemetry

Crates.iometrics-opentelemetry
lib.rsmetrics-opentelemetry
version0.24.0
created_at2026-01-10 06:26:03.064622+00
updated_at2026-01-10 06:26:03.064622+00
descriptionOpentelemetry recorder for metrics crate
homepage
repositoryhttps://github.com/DoumanAsh/metrics-opentelemetry
max_upload_size
id2033589
size42,314
Douman (DoumanAsh)

documentation

README

metrics-opentelemetry

Rust Crates.io Documentation dependency status

OpenTelemetry integration for metrics.

MSRV 1.85

Usage

Example of initialization using in memory exporter

use core::time;

use metrics_opentelemetry::{metrics, OpenTelemetryMetrics, OpenTelemetryRecorder};
use metrics_opentelemetry::opentelemetry::metrics::MeterProvider;
use opentelemetry_sdk::metrics::{InMemoryMetricExporter, PeriodicReader, SdkMeterProvider};
use opentelemetry_sdk::metrics::data::{MetricData, AggregatedMetrics, ResourceMetrics};

let exporter = InMemoryMetricExporter::default();
let reader = PeriodicReader::builder(exporter.clone()).with_interval(time::Duration::from_millis(100)).build();
let provider = SdkMeterProvider::builder().with_reader(reader).build();
let meter = provider.meter("app");
let metrics = OpenTelemetryMetrics::new(meter);
let recorder = OpenTelemetryRecorder::new(metrics);

// After installing recorder you're good to use `metrics` crate
metrics::set_global_recorder(recorder);

metrics::describe_counter!("requests_total", metrics::Unit::Count, "Total number of requests");
let get_requests = metrics::counter!("requests_total", "method" => "GET", "status" => "200");
let post_requests = metrics::counter!("requests_total", "method" => "POST", "status" => "201");

get_requests.increment(1);
post_requests.increment(2);
Commit count: 3

cargo fmt