pub struct Histogram { /* private fields */ }Expand description
Open Metrics Histogram to measure distributions of discrete events.
let histogram = Histogram::new(exponential_buckets(1.0, 2.0, 10));
histogram.observe(4.2);Histogram does not implement Default, given that the choice of
bucket values depends on the situation Histogram is used in. As an
example, to measure HTTP request latency, the values suggested in the
Golang implementation might work for you:
// Default values from go client(https://github.com/prometheus/client_golang/blob/5d584e2717ef525673736d72cd1d12e304f243d7/prometheus/histogram.go#L68)
let custom_buckets = [
0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0,
];
let histogram = Histogram::new(custom_buckets);
histogram.observe(4.2);Implementations§
Source§impl Histogram
impl Histogram
Sourcepub fn new(buckets: impl IntoIterator<Item = f64>) -> Self
pub fn new(buckets: impl IntoIterator<Item = f64>) -> Self
Create a new Histogram.
let histogram = Histogram::new([10.0, 100.0, 1_000.0]);Sourcepub fn new_native(native: NativeHistogramConfig) -> Self
pub fn new_native(native: NativeHistogramConfig) -> Self
Create a new native Histogram without classic buckets.
Native-only histograms can only be encoded by the Prometheus protobuf encoder. Text and OpenMetrics protobuf encoders do not have native histogram fields and reject native-only histograms.
Sourcepub fn new_classic_and_native(
buckets: impl IntoIterator<Item = f64>,
native: NativeHistogramConfig,
) -> Self
pub fn new_classic_and_native( buckets: impl IntoIterator<Item = f64>, native: NativeHistogramConfig, ) -> Self
Create a new Histogram with both classic and native buckets.
Prometheus protobuf encodes both representations in one histogram message. Encoders without native histogram support encode the classic buckets.