| Crates.io | metrics-opentelemetry |
| lib.rs | metrics-opentelemetry |
| version | 0.24.0 |
| created_at | 2026-01-10 06:26:03.064622+00 |
| updated_at | 2026-01-10 06:26:03.064622+00 |
| description | Opentelemetry recorder for metrics crate |
| homepage | |
| repository | https://github.com/DoumanAsh/metrics-opentelemetry |
| max_upload_size | |
| id | 2033589 |
| size | 42,314 |
OpenTelemetry integration for metrics.
MSRV 1.85
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);