| Crates.io | ottotom |
| lib.rs | ottotom |
| version | 0.31.3 |
| created_at | 2026-01-13 20:00:08.780653+00 |
| updated_at | 2026-01-13 20:00:08.780653+00 |
| description | Conversion of OpenTelemetry metrics to OpenMetrics Text format |
| homepage | |
| repository | https://github.com/max-te/ottotom |
| max_upload_size | |
| id | 2041075 |
| size | 90,102 |
A Rust crate for exporting OpenTelemetry metrics in the OpenMetrics text format.
This serves as a protobuf-free alternative to the discontinued opentelemetry-prometheus crate.
⚠️ Warning: This implementation is not fully spec-compliant for OpenTelemetry-to-OpenMetrics conversion. Some edge cases and complex metrics setups may not be handled correctly. This library is still in an experimental state.
opentelemetry-sdk metric data to OpenMetrics-compliant text.opentelemetry, outputs metrics in the OpenMetrics text format.use std::time::Duration;
use ottotom::exporter::OpenMetricsExporter;
use opentelemetry_sdk::metrics::PeriodicReader;
use opentelemetry_sdk::metrics::SdkMeterProvider;
pub fn init_openmetrics_exporter() -> OpenMetricsExporter {
let exporter = OpenMetricsExporter::default();
let reader = PeriodicReader::builder(exporter.clone())
.with_interval(Duration::from_secs(1))
.build();
let meter_provider = SdkMeterProvider::builder()
.with_reader(reader)
.build();
opentelemetry::global::set_meter_provider(meter_provider);
exporter
}
let exporter = init_openmetrics_exporter();
// Retain the exporter in you app state. Register some opentelmetry meters and fill them with data.
// Later on (e.g. in a `/metrics` endpoint) read the current metrics:
async {
let openmetrics = exporter.text().await;
println!("{}", openmetrics);
};