| Crates.io | metrics-exporter-otel |
| lib.rs | metrics-exporter-otel |
| version | 0.1.0-fork.3 |
| created_at | 2025-07-15 05:59:26.715289+00 |
| updated_at | 2025-08-01 00:56:45.929096+00 |
| description | A metrics-compatible exporter for sending metrics to OpenTelemetry collectors. |
| homepage | https://github.com/palindrom615/metrics |
| repository | https://github.com/palindrom615/metrics |
| max_upload_size | |
| id | 1752628 |
| size | 64,219 |
WARNING
This crate is not affiliated to [metrics] crate (yet). Use it at your own risk. See PR
A metrics-compatible exporter for sending metrics to OpenTelemetry collectors.
A metrics-compatible exporter for OpenTelemetry collectors and OTLP endpoints.
MeterAdd this to your Cargo.toml:
[dependencies]
metrics = "0.24"
metrics-exporter-otel = "0.1"
opentelemetry = "0.30"
opentelemetry_sdk = "0.30"
Basic usage:
use metrics_exporter_otel::OpenTelemetryRecorder;
use opentelemetry::metrics::MeterProvider;
use opentelemetry_sdk::metrics::SdkMeterProvider;
// Create an OpenTelemetry meter
let provider = SdkMeterProvider::default();
let meter = provider.meter("my_application");
// Create and install the recorder
let recorder = OpenTelemetryRecorder::new(meter);
metrics::set_global_recorder(recorder).expect("failed to install recorder");
// Use metrics as normal
metrics::counter!("requests_total", "method" => "GET").increment(1);
metrics::gauge!("cpu_usage", "core" => "0").set(45.2);
metrics::histogram!("response_time", "endpoint" => "/api/users").record(0.123);
let recorder = OpenTelemetryRecorder::new(meter);
recorder.set_histogram_bounds(
&metrics::KeyName::from("response_time"),
vec![0.001, 0.005, 0.01, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0]
);
metrics::set_global_recorder(recorder).expect("failed to install recorder");
You can provide descriptions and units for your metrics using the describe_* macros.
CAUTION: These macros must be called before the metrics are recorded. The instruments created before calling these macros will not have descriptions or units.
use metrics::{describe_counter, describe_histogram, Unit};
describe_counter!("requests_total", Unit::Count, "Total HTTP requests");
describe_histogram!("response_time", Unit::Seconds, "Response time distribution");
metrics::counter!("requests_total").increment(1);
metrics::histogram!("response_time").record(0.045);
metrics Type |
OpenTelemetry Instrument |
|---|---|
Counter |
ObservableCounter (u64) |
Gauge |
ObservableGauge (f64) |
Histogram |
Histogram (f64) |