Upgrade to metrics 0.19.x and metrics-exporter-prometheus 0.10.x.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2022-06-17 11:19:23 +01:00
parent a119564abf
commit e584b1b43f
4 changed files with 54 additions and 147 deletions

97
Cargo.lock generated
View File

@ -49,15 +49,6 @@ dependencies = [
"version_check",
]
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "ansi_term"
version = "0.12.1"
@ -475,16 +466,6 @@ dependencies = [
"syn",
]
[[package]]
name = "dashmap"
version = "4.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c"
dependencies = [
"cfg-if 1.0.0",
"num_cpus",
]
[[package]]
name = "digest"
version = "0.9.0"
@ -555,12 +536,6 @@ version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "endian-type"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
[[package]]
name = "equihash"
version = "0.2.0"
@ -1087,9 +1062,9 @@ dependencies = [
[[package]]
name = "metrics"
version = "0.17.1"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55586aa936c35f34ba8aa5d97356d554311206e1ce1f9e68fe7b07288e5ad827"
checksum = "142c53885123b68d94108295a09d4afe1a1388ed95b54d5dacd9a454753030f2"
dependencies = [
"ahash",
"metrics-macros",
@ -1097,11 +1072,12 @@ dependencies = [
[[package]]
name = "metrics-exporter-prometheus"
version = "0.6.1"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "343a5ceb38235928e7a5687412590f07e6d281522dcd9ff51246f8856eef5fe5"
checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66"
dependencies = [
"hyper",
"indexmap",
"ipnet",
"metrics",
"metrics-util",
@ -1109,41 +1085,34 @@ dependencies = [
"quanta",
"thiserror",
"tokio",
"tracing",
]
[[package]]
name = "metrics-macros"
version = "0.4.1"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0daa0ab3a0ae956d0e2c1f42511422850e577d36a255357d1a7d08d45ee3a2f1"
checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa"
dependencies = [
"lazy_static",
"proc-macro2",
"quote",
"regex",
"syn",
]
[[package]]
name = "metrics-util"
version = "0.10.2"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1174223789e331d9d47a4a953dac36e397db60fa8d2a111ac505388c6c7fe32e"
checksum = "fd1f4b69bef1e2b392b2d4a12902f2af90bb438ba4a66aa222d1023fa6561b50"
dependencies = [
"ahash",
"aho-corasick",
"atomic-shim",
"crossbeam-epoch",
"crossbeam-utils",
"dashmap",
"hashbrown",
"indexmap",
"metrics",
"num_cpus",
"ordered-float",
"parking_lot",
"quanta",
"radix_trie",
"sketches-ddsketch",
]
@ -1180,15 +1149,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "nibble_vec"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
dependencies = [
"smallvec",
]
[[package]]
name = "nix"
version = "0.22.3"
@ -1325,15 +1285,6 @@ dependencies = [
"zcash_note_encryption",
]
[[package]]
name = "ordered-float"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
dependencies = [
"num-traits",
]
[[package]]
name = "pairing"
version = "0.22.0"
@ -1558,16 +1509,6 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
[[package]]
name = "radix_trie"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
dependencies = [
"endian-type",
"nibble_vec",
]
[[package]]
name = "rand"
version = "0.7.3"
@ -1726,8 +1667,6 @@ version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
@ -1865,9 +1804,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "sketches-ddsketch"
version = "0.1.2"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76a77a8fd93886010f05e7ea0720e569d6d16c65329dbe3ec033bbbccccb017b"
checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee"
[[package]]
name = "smallvec"
@ -2017,21 +1956,9 @@ dependencies = [
"mio",
"pin-project-lite",
"socket2",
"tokio-macros",
"winapi",
]
[[package]]
name = "tokio-macros"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "toml"
version = "0.5.9"

View File

@ -69,8 +69,8 @@ rayon = "1.5"
# Metrics
ipnet = "2"
metrics = "0.17"
metrics-exporter-prometheus = "0.6"
metrics = "0.19"
metrics-exporter-prometheus = "0.10"
# Wallet tool
# (also depends on tracing, and tracing-subscriber with "env-filter" and "fmt" features)

View File

@ -20,10 +20,6 @@ criteria = "safe-to-deploy"
version = "0.7.6"
criteria = "safe-to-deploy"
[[unaudited.aho-corasick]]
version = "0.7.18"
criteria = "safe-to-deploy"
[[unaudited.ansi_term]]
version = "0.12.1"
criteria = "safe-to-deploy"
@ -212,10 +208,6 @@ criteria = "safe-to-deploy"
version = "1.0.68"
criteria = "safe-to-deploy"
[[unaudited.dashmap]]
version = "4.0.2"
criteria = "safe-to-deploy"
[[unaudited.digest]]
version = "0.9.0"
criteria = "safe-to-deploy"
@ -244,10 +236,6 @@ criteria = "safe-to-deploy"
version = "1.6.1"
criteria = "safe-to-deploy"
[[unaudited.endian-type]]
version = "0.1.2"
criteria = "safe-to-deploy"
[[unaudited.ff]]
version = "0.12.0"
criteria = "safe-to-deploy"
@ -433,19 +421,19 @@ version = "0.2.0"
criteria = "safe-to-deploy"
[[unaudited.metrics]]
version = "0.17.1"
version = "0.19.0"
criteria = "safe-to-deploy"
[[unaudited.metrics-exporter-prometheus]]
version = "0.6.1"
version = "0.10.0"
criteria = "safe-to-deploy"
[[unaudited.metrics-macros]]
version = "0.4.1"
version = "0.5.1"
criteria = "safe-to-deploy"
[[unaudited.metrics-util]]
version = "0.10.2"
version = "0.13.0"
criteria = "safe-to-deploy"
[[unaudited.miniz_oxide]]
@ -460,10 +448,6 @@ criteria = "safe-to-deploy"
version = "0.3.7"
criteria = "safe-to-deploy"
[[unaudited.nibble_vec]]
version = "0.1.0"
criteria = "safe-to-deploy"
[[unaudited.nix]]
version = "0.22.3"
criteria = "safe-to-deploy"
@ -512,10 +496,6 @@ criteria = "safe-to-deploy"
version = "0.3.0"
criteria = "safe-to-deploy"
[[unaudited.ordered-float]]
version = "2.10.0"
criteria = "safe-to-deploy"
[[unaudited.pairing]]
version = "0.22.0"
criteria = "safe-to-deploy"
@ -604,10 +584,6 @@ criteria = "safe-to-deploy"
version = "0.7.0"
criteria = "safe-to-deploy"
[[unaudited.radix_trie]]
version = "0.2.1"
criteria = "safe-to-deploy"
[[unaudited.rand]]
version = "0.7.3"
criteria = "safe-to-deploy"
@ -729,7 +705,7 @@ version = "0.3.10"
criteria = "safe-to-deploy"
[[unaudited.sketches-ddsketch]]
version = "0.1.2"
version = "0.1.3"
criteria = "safe-to-deploy"
[[unaudited.smallvec]]
@ -800,10 +776,6 @@ criteria = "safe-to-deploy"
version = "1.17.0"
criteria = "safe-to-deploy"
[[unaudited.tokio-macros]]
version = "1.7.0"
criteria = "safe-to-deploy"
[[unaudited.toml]]
version = "0.5.9"
criteria = "safe-to-deploy"

View File

@ -1,5 +1,5 @@
use libc::{c_char, c_double};
use metrics::{try_recorder, GaugeValue, Key, Label};
use metrics::{try_recorder, Key, Label};
use metrics_exporter_prometheus::PrometheusBuilder;
use std::ffi::CStr;
use std::net::{IpAddr, SocketAddr};
@ -14,20 +14,12 @@ pub extern "C" fn metrics_run(
allow_ips_len: usize,
prometheus_port: u16,
) -> bool {
// Parse any allowed IPs.
// Convert the C string IPs to Rust strings.
let allow_ips = unsafe { slice::from_raw_parts(allow_ips, allow_ips_len) };
let mut allow_ips: Vec<ipnet::IpNet> = match allow_ips
let mut allow_ips: Vec<&str> = match allow_ips
.iter()
.map(|&p| unsafe { CStr::from_ptr(p) })
.map(|s| {
s.to_str().ok().and_then(|s| {
s.parse()
.map_err(|e| {
error!("Invalid -metricsallowip argument '{}': {}", s, e);
})
.ok()
})
})
.map(|s| s.to_str().ok())
.collect()
{
Some(ips) => ips,
@ -36,7 +28,7 @@ pub extern "C" fn metrics_run(
}
};
// We always allow localhost.
allow_ips.extend(&["127.0.0.0/8".parse().unwrap(), "::1/128".parse().unwrap()]);
allow_ips.extend(&["127.0.0.0/8", "::1/128"]);
// Parse the address to bind to.
let bind_address = SocketAddr::new(
@ -64,11 +56,21 @@ pub extern "C" fn metrics_run(
allow_ips
.into_iter()
.fold(
PrometheusBuilder::new().listen_address(bind_address),
|builder, subnet| builder.add_allowed(subnet),
.try_fold(
PrometheusBuilder::new().with_http_listener(bind_address),
|builder, subnet| {
builder.add_allowed_address(subnet).map_err(|e| {
error!("Invalid -metricsallowip argument '{}': {}", subnet, e);
e
})
},
)
.install()
.and_then(|builder| {
builder.install().map_err(|e| {
error!("Could not install Prometheus exporter: {}", e);
e
})
})
.is_ok()
}
@ -153,7 +155,7 @@ pub extern "C" fn metrics_key(
pub extern "C" fn metrics_static_increment_counter(callsite: *const FfiCallsite, value: u64) {
if let Some(recorder) = try_recorder() {
let callsite = unsafe { callsite.as_ref().unwrap() };
recorder.increment_counter(&callsite.key, value);
recorder.register_counter(&callsite.key).increment(value);
}
}
@ -162,7 +164,7 @@ pub extern "C" fn metrics_increment_counter(key: *mut FfiKey, value: u64) {
if let Some(recorder) = try_recorder() {
if !key.is_null() {
let key = unsafe { Box::from_raw(key) };
recorder.increment_counter(&key.inner, value);
recorder.register_counter(&key.inner).increment(value);
}
}
}
@ -171,7 +173,7 @@ pub extern "C" fn metrics_increment_counter(key: *mut FfiKey, value: u64) {
pub extern "C" fn metrics_static_update_gauge(callsite: *const FfiCallsite, value: c_double) {
if let Some(recorder) = try_recorder() {
let callsite = unsafe { callsite.as_ref().unwrap() };
recorder.update_gauge(&callsite.key, GaugeValue::Absolute(value));
recorder.register_gauge(&callsite.key).set(value as f64);
}
}
@ -180,7 +182,7 @@ pub extern "C" fn metrics_update_gauge(key: *mut FfiKey, value: c_double) {
if let Some(recorder) = try_recorder() {
if !key.is_null() {
let key = unsafe { Box::from_raw(key) };
recorder.update_gauge(&key.inner, GaugeValue::Absolute(value));
recorder.register_gauge(&key.inner).set(value as f64);
}
}
}
@ -189,7 +191,9 @@ pub extern "C" fn metrics_update_gauge(key: *mut FfiKey, value: c_double) {
pub extern "C" fn metrics_static_increment_gauge(callsite: *const FfiCallsite, value: c_double) {
if let Some(recorder) = try_recorder() {
let callsite = unsafe { callsite.as_ref().unwrap() };
recorder.update_gauge(&callsite.key, GaugeValue::Increment(value));
recorder
.register_gauge(&callsite.key)
.increment(value as f64);
}
}
@ -198,7 +202,7 @@ pub extern "C" fn metrics_increment_gauge(key: *mut FfiKey, value: c_double) {
if let Some(recorder) = try_recorder() {
if !key.is_null() {
let key = unsafe { Box::from_raw(key) };
recorder.update_gauge(&key.inner, GaugeValue::Increment(value));
recorder.register_gauge(&key.inner).increment(value as f64);
}
}
}
@ -207,7 +211,9 @@ pub extern "C" fn metrics_increment_gauge(key: *mut FfiKey, value: c_double) {
pub extern "C" fn metrics_static_decrement_gauge(callsite: *const FfiCallsite, value: c_double) {
if let Some(recorder) = try_recorder() {
let callsite = unsafe { callsite.as_ref().unwrap() };
recorder.update_gauge(&callsite.key, GaugeValue::Decrement(value));
recorder
.register_gauge(&callsite.key)
.decrement(value as f64);
}
}
@ -216,7 +222,7 @@ pub extern "C" fn metrics_decrement_gauge(key: *mut FfiKey, value: c_double) {
if let Some(recorder) = try_recorder() {
if !key.is_null() {
let key = unsafe { Box::from_raw(key) };
recorder.update_gauge(&key.inner, GaugeValue::Decrement(value));
recorder.register_gauge(&key.inner).decrement(value as f64);
}
}
}
@ -225,7 +231,9 @@ pub extern "C" fn metrics_decrement_gauge(key: *mut FfiKey, value: c_double) {
pub extern "C" fn metrics_static_record_histogram(callsite: *const FfiCallsite, value: c_double) {
if let Some(recorder) = try_recorder() {
let callsite = unsafe { callsite.as_ref().unwrap() };
recorder.record_histogram(&callsite.key, value);
recorder
.register_histogram(&callsite.key)
.record(value as f64);
}
}
@ -234,7 +242,7 @@ pub extern "C" fn metrics_record_histogram(key: *mut FfiKey, value: c_double) {
if let Some(recorder) = try_recorder() {
if !key.is_null() {
let key = unsafe { Box::from_raw(key) };
recorder.record_histogram(&key.inner, value);
recorder.register_histogram(&key.inner).record(value as f64);
}
}
}