Skip to main content

Crate openraft_metrics_otel

Crate openraft_metrics_otel 

Source
Expand description

OpenTelemetry metrics integration for Openraft.

This crate provides an implementation of the MetricsRecorder trait from openraft, allowing applications to export Raft metrics to any OTEL-compatible backend (Prometheus, Jaeger, OTLP, etc.).

§Usage

  1. Add this crate to your Cargo.toml:

    [dependencies]
    openraft = "0.10"
    openraft-metrics-otel = "0.1"
    opentelemetry = "0.30"
    opentelemetry_sdk = "0.30"  # For configuring exporters
  2. Configure the OpenTelemetry SDK in your application:

    use opentelemetry_sdk::metrics::MeterProvider;
    
    let meter_provider = MeterProvider::builder()
        .with_reader(/* your exporter */)
        .build();
    
    opentelemetry::global::set_meter_provider(meter_provider);
  3. Install the recorder in your Raft instance:

    use std::sync::Arc;
    use openraft_metrics_otel::Instruments;
    
    let raft = Raft::new(...).await?;
    raft.set_metrics_recorder(Some(Arc::new(Instruments::new()))).await?;

§Metrics

The following metrics are exported:

§Histograms

  • openraft.log.apply.batch_size - Distribution of log entry counts in Apply commands
  • openraft.storage.append.batch_size - Distribution of log entry counts when appending
  • openraft.replication.batch_size - Distribution of log entry counts in replication RPCs
  • openraft.write.batch_size - Distribution of client write entries merged together

§Gauges

  • openraft.term.current - Current Raft term
  • openraft.log.index.last - Index of last log entry
  • openraft.log.index.committed - Index of last committed log entry
  • openraft.log.index.applied - Index of last applied log entry
  • openraft.snapshot.index - Index of last snapshot
  • openraft.log.index.purged - Index of last purged log entry
  • openraft.server.state - Server state (0=Learner, 1=Follower, 2=Candidate, 3=Leader)

§Counters

  • openraft.operation.vote.total - Vote operations
  • openraft.operation.heartbeat.total - Heartbeat operations
  • openraft.operation.append.total - Append entries operations

Structs§

Instruments
OpenTelemetry instruments for recording Raft metrics.