Thanks to visit codestin.com
Credit goes to lib.rs

1 unstable release

Uses new Rust 2024

new 0.31.3 Jan 13, 2026

#9 in #open-metrics

Apache-2.0

41KB
942 lines

Ottotom (OpenTelemetry to text OpenMetrics)

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.

Features

  • Conversion of opentelemetry-sdk metric data to OpenMetrics-compliant text.
  • Ready-to-use Exporter to register in opentelemetry, outputs metrics in the OpenMetrics text format.

Usage

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

Dependencies

~7–11MB
~115K SLoC