Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add metadata to metrics #380

Merged
merged 12 commits into from
Jul 15, 2023
8 changes: 4 additions & 4 deletions metrics-benchmark/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use hdrhistogram::Histogram as HdrHistogram;
use log::{error, info};
use metrics::{
gauge, histogram, increment_counter, register_counter, register_gauge, register_histogram,
Counter, Gauge, Histogram, Key, KeyName, Recorder, SharedString, Unit,
Counter, Gauge, Histogram, Key, KeyName, Metadata, Recorder, SharedString, Unit,
};
use metrics_util::registry::{AtomicStorage, Registry};
use portable_atomic::AtomicU64;
Expand Down Expand Up @@ -68,15 +68,15 @@ impl Recorder for BenchmarkingRecorder {

fn describe_histogram(&self, _: KeyName, _: Option<Unit>, _: SharedString) {}

fn register_counter(&self, key: &Key) -> Counter {
fn register_counter(&self, key: &Key, _metadata: &Metadata<'_>) -> Counter {
self.registry.get_or_create_counter(key, |c| Counter::from_arc(c.clone()))
}

fn register_gauge(&self, key: &Key) -> Gauge {
fn register_gauge(&self, key: &Key, _metadata: &Metadata<'_>) -> Gauge {
self.registry.get_or_create_gauge(key, |g| Gauge::from_arc(g.clone()))
}

fn register_histogram(&self, key: &Key) -> Histogram {
fn register_histogram(&self, key: &Key, _metadata: &Metadata<'_>) -> Histogram {
self.registry.get_or_create_histogram(key, |h| Histogram::from_arc(h.clone()))
}
}
Expand Down
49 changes: 26 additions & 23 deletions metrics-exporter-prometheus/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -579,13 +579,16 @@ mod tests {

use super::{Matcher, PrometheusBuilder};

static METADATA: metrics::Metadata =
metrics::Metadata::new(module_path!(), metrics::Level::INFO, Some(module_path!()));
tobz marked this conversation as resolved.
Show resolved Hide resolved

#[test]
fn test_render() {
let recorder =
PrometheusBuilder::new().set_quantiles(&[0.0, 1.0]).unwrap().build_recorder();

let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

let handle = recorder.handle();
Expand All @@ -596,7 +599,7 @@ mod tests {

let labels = vec![Label::new("wutang", "forever")];
let key = Key::from_parts("basic_gauge", labels);
let gauge1 = recorder.register_gauge(&key);
let gauge1 = recorder.register_gauge(&key, &METADATA);
gauge1.set(-3.14);
let rendered = handle.render();
let expected_gauge = format!(
Expand All @@ -607,7 +610,7 @@ mod tests {
assert_eq!(rendered, expected_gauge);

let key = Key::from_name("basic_histogram");
let histogram1 = recorder.register_histogram(&key);
let histogram1 = recorder.register_histogram(&key, &METADATA);
histogram1.record(12.0);
let rendered = handle.render();

Expand Down Expand Up @@ -649,19 +652,19 @@ mod tests {
.build_recorder();

let full_key = Key::from_name("metrics.testing_foo");
let full_key_histo = recorder.register_histogram(&full_key);
let full_key_histo = recorder.register_histogram(&full_key, &METADATA);
full_key_histo.record(FULL_VALUES[0]);

let prefix_key = Key::from_name("metrics.testing_bar");
let prefix_key_histo = recorder.register_histogram(&prefix_key);
let prefix_key_histo = recorder.register_histogram(&prefix_key, &METADATA);
prefix_key_histo.record(PREFIX_VALUES[1]);

let suffix_key = Key::from_name("metrics_testin_foo");
let suffix_key_histo = recorder.register_histogram(&suffix_key);
let suffix_key_histo = recorder.register_histogram(&suffix_key, &METADATA);
suffix_key_histo.record(SUFFIX_VALUES[2]);

let default_key = Key::from_name("metrics.wee");
let default_key_histo = recorder.register_histogram(&default_key);
let default_key_histo = recorder.register_histogram(&default_key, &METADATA);
default_key_histo.record(DEFAULT_VALUES[2] + 1.0);

let full_data = concat!(
Expand Down Expand Up @@ -724,15 +727,15 @@ mod tests {
.build_with_clock(clock);

let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

let key = Key::from_name("basic_gauge");
let gauge1 = recorder.register_gauge(&key);
let gauge1 = recorder.register_gauge(&key, &METADATA);
gauge1.set(-3.14);

let key = Key::from_name("basic_histogram");
let histo1 = recorder.register_histogram(&key);
let histo1 = recorder.register_histogram(&key, &METADATA);
histo1.record(1.0);

let handle = recorder.handle();
Expand Down Expand Up @@ -774,15 +777,15 @@ mod tests {
.build_with_clock(clock);

let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

let key = Key::from_name("basic_gauge");
let gauge1 = recorder.register_gauge(&key);
let gauge1 = recorder.register_gauge(&key, &METADATA);
gauge1.set(-3.14);

let key = Key::from_name("basic_histogram");
let histo1 = recorder.register_histogram(&key);
let histo1 = recorder.register_histogram(&key, &METADATA);
histo1.record(1.0);

let handle = recorder.handle();
Expand Down Expand Up @@ -823,15 +826,15 @@ mod tests {
.build_with_clock(clock);

let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

let key = Key::from_name("basic_gauge");
let gauge1 = recorder.register_gauge(&key);
let gauge1 = recorder.register_gauge(&key, &METADATA);
gauge1.set(-3.14);

let key = Key::from_name("basic_histogram");
let histo1 = recorder.register_histogram(&key);
let histo1 = recorder.register_histogram(&key, &METADATA);
histo1.record(1.0);

let handle = recorder.handle();
Expand All @@ -855,7 +858,7 @@ mod tests {
assert_eq!(rendered, expected);

let key = Key::from_parts("basic_histogram", vec![Label::new("type", "special")]);
let histo2 = recorder.register_histogram(&key);
let histo2 = recorder.register_histogram(&key, &METADATA);
histo2.record(2.0);

let expected_second = concat!(
Expand Down Expand Up @@ -898,11 +901,11 @@ mod tests {
.build_with_clock(clock);

let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

let key = Key::from_name("basic_gauge");
let gauge1 = recorder.register_gauge(&key);
let gauge1 = recorder.register_gauge(&key, &METADATA);
gauge1.set(-3.14);

let handle = recorder.handle();
Expand Down Expand Up @@ -947,7 +950,7 @@ mod tests {
.build_with_clock(clock);

let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

// First render, which starts tracking the counter in the recency state.
Expand Down Expand Up @@ -986,7 +989,7 @@ mod tests {
.add_global_label("foo", "bar")
.build_recorder();
let key = Key::from_name("basic_counter");
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(42);

let handle = recorder.handle();
Expand All @@ -1002,7 +1005,7 @@ mod tests {

let key =
Key::from_name("overridden").with_extra_labels(vec![Label::new("foo", "overridden")]);
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(1);

let handle = recorder.handle();
Expand All @@ -1020,7 +1023,7 @@ mod tests {
let key = Key::from_name(key_name.clone())
.with_extra_labels(vec![Label::new("øhno", "\"yeet\nies\\\"")]);
recorder.describe_counter(key_name, None, "\"Simplë stuff.\nRëally.\"".into());
let counter1 = recorder.register_counter(&key);
let counter1 = recorder.register_counter(&key, &METADATA);
counter1.increment(1);

let handle = recorder.handle();
Expand Down
8 changes: 4 additions & 4 deletions metrics-exporter-prometheus/src/recorder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use std::sync::Arc;
use std::sync::{PoisonError, RwLock};

use indexmap::IndexMap;
use metrics::{Counter, Gauge, Histogram, Key, KeyName, Recorder, SharedString, Unit};
use metrics::{Counter, Gauge, Histogram, Key, KeyName, Metadata, Recorder, SharedString, Unit};
use metrics_util::registry::{Recency, Registry};
use quanta::Instant;

Expand Down Expand Up @@ -246,15 +246,15 @@ impl Recorder for PrometheusRecorder {
self.add_description_if_missing(&key_name, description);
}

fn register_counter(&self, key: &Key) -> Counter {
fn register_counter(&self, key: &Key, _metadata: &Metadata<'_>) -> Counter {
self.inner.registry.get_or_create_counter(key, |c| c.clone().into())
}

fn register_gauge(&self, key: &Key) -> Gauge {
fn register_gauge(&self, key: &Key, _metadata: &Metadata<'_>) -> Gauge {
self.inner.registry.get_or_create_gauge(key, |c| c.clone().into())
}

fn register_histogram(&self, key: &Key) -> Histogram {
fn register_histogram(&self, key: &Key, _metadata: &Metadata<'_>) -> Histogram {
self.inner.registry.get_or_create_histogram(key, |c| c.clone().into())
}
}
Expand Down
8 changes: 4 additions & 4 deletions metrics-exporter-tcp/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ use std::{
use bytes::Bytes;
use crossbeam_channel::{bounded, unbounded, Receiver, Sender};
use metrics::{
Counter, CounterFn, Gauge, GaugeFn, Histogram, HistogramFn, Key, KeyName, Recorder,
Counter, CounterFn, Gauge, GaugeFn, Histogram, HistogramFn, Key, KeyName, Metadata, Recorder,
SetRecorderError, SharedString, Unit,
};
use mio::{
Expand Down Expand Up @@ -333,15 +333,15 @@ impl Recorder for TcpRecorder {
self.state.register_metric(key_name, MetricType::Histogram, unit, description);
}

fn register_counter(&self, key: &Key) -> Counter {
fn register_counter(&self, key: &Key, _metadata: &Metadata<'_>) -> Counter {
Counter::from_arc(Arc::new(Handle::new(key.clone(), self.state.clone())))
}

fn register_gauge(&self, key: &Key) -> Gauge {
fn register_gauge(&self, key: &Key, _metadata: &Metadata<'_>) -> Gauge {
Gauge::from_arc(Arc::new(Handle::new(key.clone(), self.state.clone())))
}

fn register_histogram(&self, key: &Key) -> Histogram {
fn register_histogram(&self, key: &Key, _metadata: &Metadata<'_>) -> Histogram {
Histogram::from_arc(Arc::new(Handle::new(key.clone(), self.state.clone())))
}
}
Expand Down
Loading