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
-
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 -
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); -
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 commandsopenraft.storage.append.batch_size- Distribution of log entry counts when appendingopenraft.replication.batch_size- Distribution of log entry counts in replication RPCsopenraft.write.batch_size- Distribution of client write entries merged together
§Gauges
openraft.term.current- Current Raft termopenraft.log.index.last- Index of last log entryopenraft.log.index.committed- Index of last committed log entryopenraft.log.index.applied- Index of last applied log entryopenraft.snapshot.index- Index of last snapshotopenraft.log.index.purged- Index of last purged log entryopenraft.server.state- Server state (0=Learner, 1=Follower, 2=Candidate, 3=Leader)
§Counters
openraft.operation.vote.total- Vote operationsopenraft.operation.heartbeat.total- Heartbeat operationsopenraft.operation.append.total- Append entries operations
Structs§
- Instruments
- OpenTelemetry instruments for recording Raft metrics.