metrics-opentelemetry

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);
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);