Skip to content

Haphazard conversion of opentelemetry-rust metrics into openmetrics text format to replace opetelemetry-prometheus

License

Notifications You must be signed in to change notification settings

max-te/opentelemetry-openmetrics-text

Repository files navigation

opentelemetry-openmetrics

A Rust library 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 output metrics in the OpenMetrics text format.

How to use

use std::time::Duration;
use opentelemetry_openmetrics::exporter::OpenMetricsExporter;
use opentelemetry_sdk::metrics::PeriodicReader;
use opentelemetry_sdk::metrics::SdkMeterProvider;

pub fn init_openmetrics_exporter() -> OpenMetricsExporter {
    let exporter = OpenMetricsExporter::new();
    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.
// Register and fill some meters.

// Later read the current metrics:
let openmetrics = exporter.text().await;

About

Haphazard conversion of opentelemetry-rust metrics into openmetrics text format to replace opetelemetry-prometheus

Resources

License

Stars

Watchers

Forks