mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-16 20:39:10 +00:00
Merge branch 'unstable' into vc-fallback
This commit is contained in:
@@ -122,6 +122,7 @@ impl fmt::Display for Error {
|
||||
pub struct Timeouts {
|
||||
pub attestation: Duration,
|
||||
pub attester_duties: Duration,
|
||||
pub attestation_subscriptions: Duration,
|
||||
pub liveness: Duration,
|
||||
pub proposal: Duration,
|
||||
pub proposer_duties: Duration,
|
||||
@@ -138,6 +139,7 @@ impl Timeouts {
|
||||
Timeouts {
|
||||
attestation: timeout,
|
||||
attester_duties: timeout,
|
||||
attestation_subscriptions: timeout,
|
||||
liveness: timeout,
|
||||
proposal: timeout,
|
||||
proposer_duties: timeout,
|
||||
@@ -768,6 +770,31 @@ impl BeaconNodeHttpClient {
|
||||
self.get_opt(path).await
|
||||
}
|
||||
|
||||
/// `GET beacon/light_client/updates`
|
||||
///
|
||||
/// Returns `Ok(None)` on a 404 error.
|
||||
pub async fn get_beacon_light_client_updates<E: EthSpec>(
|
||||
&self,
|
||||
start_period: u64,
|
||||
count: u64,
|
||||
) -> Result<Option<Vec<ForkVersionedResponse<LightClientUpdate<E>>>>, Error> {
|
||||
let mut path = self.eth_path(V1)?;
|
||||
|
||||
path.path_segments_mut()
|
||||
.map_err(|()| Error::InvalidUrl(self.server.clone()))?
|
||||
.push("beacon")
|
||||
.push("light_client")
|
||||
.push("updates");
|
||||
|
||||
path.query_pairs_mut()
|
||||
.append_pair("start_period", &start_period.to_string());
|
||||
|
||||
path.query_pairs_mut()
|
||||
.append_pair("count", &count.to_string());
|
||||
|
||||
self.get_opt(path).await
|
||||
}
|
||||
|
||||
/// `GET beacon/light_client/bootstrap`
|
||||
///
|
||||
/// Returns `Ok(None)` on a 404 error.
|
||||
@@ -1119,7 +1146,8 @@ impl BeaconNodeHttpClient {
|
||||
&self,
|
||||
block_id: BlockId,
|
||||
indices: Option<&[u64]>,
|
||||
) -> Result<Option<GenericResponse<BlobSidecarList<E>>>, Error> {
|
||||
) -> Result<Option<ExecutionOptimisticFinalizedForkVersionedResponse<BlobSidecarList<E>>>, Error>
|
||||
{
|
||||
let mut path = self.get_blobs_path(block_id)?;
|
||||
if let Some(indices) = indices {
|
||||
let indices_string = indices
|
||||
@@ -2520,7 +2548,12 @@ impl BeaconNodeHttpClient {
|
||||
.push("validator")
|
||||
.push("beacon_committee_subscriptions");
|
||||
|
||||
self.post(path, &subscriptions).await?;
|
||||
self.post_with_timeout(
|
||||
path,
|
||||
&subscriptions,
|
||||
self.timeouts.attestation_subscriptions,
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -784,6 +784,24 @@ pub struct ValidatorAggregateAttestationQuery {
|
||||
pub committee_index: Option<CommitteeIndex>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Deserialize)]
|
||||
pub struct LightClientUpdatesQuery {
|
||||
pub start_period: u64,
|
||||
pub count: u64,
|
||||
}
|
||||
|
||||
#[derive(Encode, Decode)]
|
||||
pub struct LightClientUpdateSszResponse {
|
||||
pub response_chunk_len: Vec<u8>,
|
||||
pub response_chunk: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(Encode, Decode)]
|
||||
pub struct LightClientUpdateResponseChunk {
|
||||
pub context: [u8; 4],
|
||||
pub payload: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
|
||||
pub struct BeaconCommitteeSubscription {
|
||||
#[serde(with = "serde_utils::quoted_u64")]
|
||||
|
||||
@@ -7,7 +7,6 @@ edition = { workspace = true }
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
lazy_static = { workspace = true }
|
||||
num-bigint = "0.4.2"
|
||||
ethereum_hashing = { workspace = true }
|
||||
hex = { workspace = true }
|
||||
|
||||
@@ -18,22 +18,21 @@
|
||||
//! tests](https://github.com/ethereum/eth2.0-pm/blob/6e41fcf383ebeb5125938850d8e9b4e9888389b4/interop/mocked_start/keygen_test_vector.yaml).
|
||||
use bls::{Keypair, PublicKey, SecretKey};
|
||||
use ethereum_hashing::hash;
|
||||
use lazy_static::lazy_static;
|
||||
use num_bigint::BigUint;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fs::File;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
pub const PRIVATE_KEY_BYTES: usize = 32;
|
||||
pub const PUBLIC_KEY_BYTES: usize = 48;
|
||||
pub const HASH_BYTES: usize = 32;
|
||||
|
||||
lazy_static! {
|
||||
static ref CURVE_ORDER: BigUint =
|
||||
"52435875175126190479447740508185965837690552500527637822603658699938581184513"
|
||||
.parse::<BigUint>()
|
||||
.expect("Curve order should be valid");
|
||||
}
|
||||
static CURVE_ORDER: LazyLock<BigUint> = LazyLock::new(|| {
|
||||
"52435875175126190479447740508185965837690552500527637822603658699938581184513"
|
||||
.parse::<BigUint>()
|
||||
.expect("Curve order should be valid")
|
||||
});
|
||||
|
||||
/// Return a G1 point for the given `validator_index`, encoded as a compressed point in
|
||||
/// big-endian byte-ordering.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#![allow(clippy::needless_doctest_main)]
|
||||
//! A wrapper around the `prometheus` crate that provides a global, `lazy_static` metrics registry
|
||||
//! A wrapper around the `prometheus` crate that provides a global metrics registry
|
||||
//! and functions to add and use the following components (more info at
|
||||
//! [Prometheus docs](https://prometheus.io/docs/concepts/metric_types/)):
|
||||
//!
|
||||
//! - `Histogram`: used with `start_timer(..)` and `stop_timer(..)` to record durations (e.g.,
|
||||
//! block processing time).
|
||||
//! block processing time).
|
||||
//! - `IncCounter`: used to represent an ideally ever-growing, never-shrinking integer (e.g.,
|
||||
//! number of block processing requests).
|
||||
//! number of block processing requests).
|
||||
//! - `IntGauge`: used to represent an varying integer (e.g., number of attestations per block).
|
||||
//!
|
||||
//! ## Important
|
||||
@@ -20,23 +20,20 @@
|
||||
//! ## Example
|
||||
//!
|
||||
//! ```rust
|
||||
//! use lazy_static::lazy_static;
|
||||
//! use lighthouse_metrics::*;
|
||||
//! use std::sync::LazyLock;
|
||||
//!
|
||||
//! // These metrics are "magically" linked to the global registry defined in `lighthouse_metrics`.
|
||||
//! lazy_static! {
|
||||
//! pub static ref RUN_COUNT: Result<IntCounter> = try_create_int_counter(
|
||||
//! "runs_total",
|
||||
//! "Total number of runs"
|
||||
//! );
|
||||
//! pub static ref CURRENT_VALUE: Result<IntGauge> = try_create_int_gauge(
|
||||
//! "current_value",
|
||||
//! "The current value"
|
||||
//! );
|
||||
//! pub static ref RUN_TIME: Result<Histogram> =
|
||||
//! try_create_histogram("run_seconds", "Time taken (measured to high precision)");
|
||||
//! }
|
||||
//!
|
||||
//! pub static RUN_COUNT: LazyLock<Result<IntCounter>> = LazyLock::new(|| try_create_int_counter(
|
||||
//! "runs_total",
|
||||
//! "Total number of runs"
|
||||
//! ));
|
||||
//! pub static CURRENT_VALUE: LazyLock<Result<IntGauge>> = LazyLock::new(|| try_create_int_gauge(
|
||||
//! "current_value",
|
||||
//! "The current value"
|
||||
//! ));
|
||||
//! pub static RUN_TIME: LazyLock<Result<Histogram>> =
|
||||
//! LazyLock::new(|| try_create_histogram("run_seconds", "Time taken (measured to high precision)"));
|
||||
//!
|
||||
//! fn main() {
|
||||
//! for i in 0..100 {
|
||||
|
||||
@@ -17,8 +17,8 @@ pub const VERSION: &str = git_version!(
|
||||
// NOTE: using --match instead of --exclude for compatibility with old Git
|
||||
"--match=thiswillnevermatchlol"
|
||||
],
|
||||
prefix = "Lighthouse/v5.2.1-",
|
||||
fallback = "Lighthouse/v5.2.1"
|
||||
prefix = "Lighthouse/v5.3.0-",
|
||||
fallback = "Lighthouse/v5.3.0"
|
||||
);
|
||||
|
||||
/// Returns the first eight characters of the latest commit hash for this build.
|
||||
|
||||
@@ -9,7 +9,6 @@ test_logger = [] # Print log output to stderr when running tests instead of drop
|
||||
|
||||
[dependencies]
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock", "std"] }
|
||||
lazy_static = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
parking_lot = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
|
||||
@@ -175,7 +175,7 @@ impl Serialize for AsyncRecord {
|
||||
// Convoluted pattern to avoid binding `format_args!` to a temporary.
|
||||
// See: https://stackoverflow.com/questions/56304313/cannot-use-format-args-due-to-temporary-value-is-freed-at-the-end-of-this-state
|
||||
let mut f = |msg: std::fmt::Arguments| {
|
||||
map_serializer.serialize_entry("msg", &msg.to_string())?;
|
||||
map_serializer.serialize_entry("msg", msg.to_string())?;
|
||||
|
||||
let record = Record::new(&rs, &msg, BorrowedKV(&(*kv)));
|
||||
self.logger_values
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use lazy_static::lazy_static;
|
||||
use lighthouse_metrics::{
|
||||
inc_counter, try_create_int_counter, IntCounter, Result as MetricsResult,
|
||||
};
|
||||
@@ -6,6 +5,7 @@ use slog::Logger;
|
||||
use slog_term::Decorator;
|
||||
use std::io::{Result, Write};
|
||||
use std::path::PathBuf;
|
||||
use std::sync::LazyLock;
|
||||
use std::time::{Duration, Instant};
|
||||
use tracing_appender::non_blocking::NonBlocking;
|
||||
use tracing_appender::rolling::{RollingFileAppender, Rotation};
|
||||
@@ -25,16 +25,14 @@ pub use tracing_metrics_layer::MetricsLayer;
|
||||
/// The minimum interval between log messages indicating that a queue is full.
|
||||
const LOG_DEBOUNCE_INTERVAL: Duration = Duration::from_secs(30);
|
||||
|
||||
lazy_static! {
|
||||
pub static ref INFOS_TOTAL: MetricsResult<IntCounter> =
|
||||
try_create_int_counter("info_total", "Count of infos logged");
|
||||
pub static ref WARNS_TOTAL: MetricsResult<IntCounter> =
|
||||
try_create_int_counter("warn_total", "Count of warns logged");
|
||||
pub static ref ERRORS_TOTAL: MetricsResult<IntCounter> =
|
||||
try_create_int_counter("error_total", "Count of errors logged");
|
||||
pub static ref CRITS_TOTAL: MetricsResult<IntCounter> =
|
||||
try_create_int_counter("crit_total", "Count of crits logged");
|
||||
}
|
||||
pub static INFOS_TOTAL: LazyLock<MetricsResult<IntCounter>> =
|
||||
LazyLock::new(|| try_create_int_counter("info_total", "Count of infos logged"));
|
||||
pub static WARNS_TOTAL: LazyLock<MetricsResult<IntCounter>> =
|
||||
LazyLock::new(|| try_create_int_counter("warn_total", "Count of warns logged"));
|
||||
pub static ERRORS_TOTAL: LazyLock<MetricsResult<IntCounter>> =
|
||||
LazyLock::new(|| try_create_int_counter("error_total", "Count of errors logged"));
|
||||
pub static CRITS_TOTAL: LazyLock<MetricsResult<IntCounter>> =
|
||||
LazyLock::new(|| try_create_int_counter("crit_total", "Count of crits logged"));
|
||||
|
||||
pub struct AlignedTermDecorator<D: Decorator> {
|
||||
wrapped: D,
|
||||
@@ -291,10 +289,10 @@ pub fn test_logger() -> Logger {
|
||||
sloggers::terminal::TerminalLoggerBuilder::new()
|
||||
.level(sloggers::types::Severity::Debug)
|
||||
.build()
|
||||
.expect("Should build test_logger")
|
||||
.expect("Should build TerminalLoggerBuilder")
|
||||
} else {
|
||||
sloggers::null::NullLoggerBuilder
|
||||
.build()
|
||||
.expect("Should build null_logger")
|
||||
.expect("Should build NullLoggerBuilder")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,36 @@
|
||||
//! Exposes [`MetricsLayer`]: A tracing layer that registers metrics of logging events.
|
||||
|
||||
use lazy_static::lazy_static;
|
||||
use lighthouse_metrics as metrics;
|
||||
use std::sync::LazyLock;
|
||||
use tracing_log::NormalizeEvent;
|
||||
|
||||
lazy_static! {
|
||||
/// Count of `INFO` logs registered per enabled dependency.
|
||||
pub static ref DEP_INFOS_TOTAL: metrics::Result<metrics::IntCounterVec> =
|
||||
/// Count of `INFO` logs registered per enabled dependency.
|
||||
pub static DEP_INFOS_TOTAL: LazyLock<metrics::Result<metrics::IntCounterVec>> =
|
||||
LazyLock::new(|| {
|
||||
metrics::try_create_int_counter_vec(
|
||||
"dep_info_total",
|
||||
"Count of infos logged per enabled dependency",
|
||||
&["target"]
|
||||
);
|
||||
/// Count of `WARN` logs registered per enabled dependency.
|
||||
pub static ref DEP_WARNS_TOTAL: metrics::Result<metrics::IntCounterVec> =
|
||||
&["target"],
|
||||
)
|
||||
});
|
||||
/// Count of `WARN` logs registered per enabled dependency.
|
||||
pub static DEP_WARNS_TOTAL: LazyLock<metrics::Result<metrics::IntCounterVec>> =
|
||||
LazyLock::new(|| {
|
||||
metrics::try_create_int_counter_vec(
|
||||
"dep_warn_total",
|
||||
"Count of warns logged per enabled dependency",
|
||||
&["target"]
|
||||
);
|
||||
/// Count of `ERROR` logs registered per enabled dependency.
|
||||
pub static ref DEP_ERRORS_TOTAL: metrics::Result<metrics::IntCounterVec> =
|
||||
&["target"],
|
||||
)
|
||||
});
|
||||
/// Count of `ERROR` logs registered per enabled dependency.
|
||||
pub static DEP_ERRORS_TOTAL: LazyLock<metrics::Result<metrics::IntCounterVec>> =
|
||||
LazyLock::new(|| {
|
||||
metrics::try_create_int_counter_vec(
|
||||
"dep_error_total",
|
||||
"Count of errors logged per enabled dependency",
|
||||
&["target"]
|
||||
);
|
||||
}
|
||||
&["target"],
|
||||
)
|
||||
});
|
||||
|
||||
/// Layer that registers Prometheus metrics for `INFO`, `WARN` and `ERROR` logs emitted per dependency.
|
||||
/// Dependencies are enabled via the `RUST_LOG` env flag.
|
||||
|
||||
@@ -6,7 +6,6 @@ edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
lighthouse_metrics = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
libc = "0.2.79"
|
||||
parking_lot = { workspace = true }
|
||||
jemalloc-ctl = { version = "0.5.0", optional = true }
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
//! https://www.gnu.org/software/libc/manual/html_node/The-GNU-Allocator.html
|
||||
//!
|
||||
//! These functions are generally only suitable for Linux systems.
|
||||
use lazy_static::lazy_static;
|
||||
use lighthouse_metrics::*;
|
||||
use parking_lot::Mutex;
|
||||
use std::env;
|
||||
use std::os::raw::c_int;
|
||||
use std::result::Result;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
/// The optimal mmap threshold for Lighthouse seems to be around 128KB.
|
||||
///
|
||||
@@ -33,50 +33,65 @@ const M_MMAP_THRESHOLD: c_int = -3;
|
||||
/// https://man7.org/linux/man-pages/man3/mallopt.3.html
|
||||
const ENV_VAR_MMAP_THRESHOLD: &str = "MALLOC_MMAP_THRESHOLD_";
|
||||
|
||||
lazy_static! {
|
||||
pub static ref GLOBAL_LOCK: Mutex<()> = <_>::default();
|
||||
}
|
||||
pub static GLOBAL_LOCK: LazyLock<Mutex<()>> = LazyLock::new(|| <_>::default());
|
||||
|
||||
// Metrics for the malloc. For more information, see:
|
||||
//
|
||||
// https://man7.org/linux/man-pages/man3/mallinfo.3.html
|
||||
lazy_static! {
|
||||
pub static ref MALLINFO_ARENA: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
pub static MALLINFO_ARENA: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_arena",
|
||||
"The total amount of memory allocated by means other than mmap(2). \
|
||||
This figure includes both in-use blocks and blocks on the free list.",
|
||||
);
|
||||
pub static ref MALLINFO_ORDBLKS: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_ORDBLKS: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_ordblks",
|
||||
"The number of ordinary (i.e., non-fastbin) free blocks.",
|
||||
);
|
||||
pub static ref MALLINFO_SMBLKS: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("mallinfo_smblks", "The number of fastbin free blocks.",);
|
||||
pub static ref MALLINFO_HBLKS: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_SMBLKS: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("mallinfo_smblks", "The number of fastbin free blocks."));
|
||||
pub static MALLINFO_HBLKS: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_hblks",
|
||||
"The number of blocks currently allocated using mmap.",
|
||||
);
|
||||
pub static ref MALLINFO_HBLKHD: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_HBLKHD: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_hblkhd",
|
||||
"The number of bytes in blocks currently allocated using mmap.",
|
||||
);
|
||||
pub static ref MALLINFO_FSMBLKS: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_FSMBLKS: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_fsmblks",
|
||||
"The total number of bytes in fastbin free blocks.",
|
||||
);
|
||||
pub static ref MALLINFO_UORDBLKS: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
"mallinfo_uordblks",
|
||||
"The total number of bytes used by in-use allocations.",
|
||||
);
|
||||
pub static ref MALLINFO_FORDBLKS: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
"mallinfo_fordblks",
|
||||
"The total number of bytes in free blocks.",
|
||||
);
|
||||
pub static ref MALLINFO_KEEPCOST: lighthouse_metrics::Result<IntGauge> = try_create_int_gauge(
|
||||
"mallinfo_keepcost",
|
||||
"The total amount of releasable free space at the top of the heap..",
|
||||
);
|
||||
}
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_UORDBLKS: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_uordblks",
|
||||
"The total number of bytes used by in-use allocations.",
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_FORDBLKS: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_fordblks",
|
||||
"The total number of bytes in free blocks.",
|
||||
)
|
||||
});
|
||||
pub static MALLINFO_KEEPCOST: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"mallinfo_keepcost",
|
||||
"The total amount of releasable free space at the top of the heap..",
|
||||
)
|
||||
});
|
||||
|
||||
/// Calls `mallinfo` and updates Prometheus metrics with the results.
|
||||
pub fn scrape_mallinfo_metrics() {
|
||||
|
||||
@@ -8,29 +8,31 @@
|
||||
//! A) `JEMALLOC_SYS_WITH_MALLOC_CONF` at compile-time.
|
||||
//! B) `_RJEM_MALLOC_CONF` at runtime.
|
||||
use jemalloc_ctl::{arenas, epoch, stats, Error};
|
||||
use lazy_static::lazy_static;
|
||||
use lighthouse_metrics::{set_gauge, try_create_int_gauge, IntGauge};
|
||||
use std::sync::LazyLock;
|
||||
|
||||
#[global_allocator]
|
||||
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
||||
|
||||
// Metrics for jemalloc.
|
||||
lazy_static! {
|
||||
pub static ref NUM_ARENAS: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_num_arenas", "The number of arenas in use");
|
||||
pub static ref BYTES_ALLOCATED: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_bytes_allocated", "Equivalent to stats.allocated");
|
||||
pub static ref BYTES_ACTIVE: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_bytes_active", "Equivalent to stats.active");
|
||||
pub static ref BYTES_MAPPED: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_bytes_mapped", "Equivalent to stats.mapped");
|
||||
pub static ref BYTES_METADATA: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_bytes_metadata", "Equivalent to stats.metadata");
|
||||
pub static ref BYTES_RESIDENT: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_bytes_resident", "Equivalent to stats.resident");
|
||||
pub static ref BYTES_RETAINED: lighthouse_metrics::Result<IntGauge> =
|
||||
try_create_int_gauge("jemalloc_bytes_retained", "Equivalent to stats.retained");
|
||||
}
|
||||
pub static NUM_ARENAS: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("jemalloc_num_arenas", "The number of arenas in use"));
|
||||
pub static BYTES_ALLOCATED: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("jemalloc_bytes_allocated", "Equivalent to stats.allocated")
|
||||
});
|
||||
pub static BYTES_ACTIVE: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("jemalloc_bytes_active", "Equivalent to stats.active"));
|
||||
pub static BYTES_MAPPED: LazyLock<lighthouse_metrics::Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("jemalloc_bytes_mapped", "Equivalent to stats.mapped"));
|
||||
pub static BYTES_METADATA: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("jemalloc_bytes_metadata", "Equivalent to stats.metadata")
|
||||
});
|
||||
pub static BYTES_RESIDENT: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("jemalloc_bytes_resident", "Equivalent to stats.resident")
|
||||
});
|
||||
pub static BYTES_RETAINED: LazyLock<lighthouse_metrics::Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("jemalloc_bytes_retained", "Equivalent to stats.retained")
|
||||
});
|
||||
|
||||
pub fn scrape_jemalloc_metrics() {
|
||||
scrape_jemalloc_metrics_fallible().unwrap()
|
||||
|
||||
@@ -17,6 +17,5 @@ lighthouse_version = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
store = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
regex = { workspace = true }
|
||||
sensitive_url = { workspace = true }
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use super::types::{BeaconProcessMetrics, ValidatorProcessMetrics};
|
||||
use lazy_static::lazy_static;
|
||||
use lighthouse_metrics::{MetricFamily, MetricType};
|
||||
use serde_json::json;
|
||||
use std::collections::HashMap;
|
||||
use std::path::Path;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
/// Represents a metric that needs to be fetched from lighthouse metrics registry
|
||||
/// and sent to the remote monitoring service.
|
||||
@@ -126,19 +126,20 @@ pub enum JsonType {
|
||||
Boolean,
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
/// HashMap representing the `BEACON_PROCESS_METRICS`.
|
||||
pub static ref BEACON_METRICS_MAP: HashMap<String, JsonMetric> = BEACON_PROCESS_METRICS
|
||||
/// HashMap representing the `BEACON_PROCESS_METRICS`.
|
||||
pub static BEACON_METRICS_MAP: LazyLock<HashMap<String, JsonMetric>> = LazyLock::new(|| {
|
||||
BEACON_PROCESS_METRICS
|
||||
.iter()
|
||||
.map(|metric| (metric.lighthouse_metric_name.to_string(), metric.clone()))
|
||||
.collect();
|
||||
/// HashMap representing the `VALIDATOR_PROCESS_METRICS`.
|
||||
pub static ref VALIDATOR_METRICS_MAP: HashMap<String,JsonMetric> =
|
||||
VALIDATOR_PROCESS_METRICS
|
||||
.collect()
|
||||
});
|
||||
/// HashMap representing the `VALIDATOR_PROCESS_METRICS`.
|
||||
pub static VALIDATOR_METRICS_MAP: LazyLock<HashMap<String, JsonMetric>> = LazyLock::new(|| {
|
||||
VALIDATOR_PROCESS_METRICS
|
||||
.iter()
|
||||
.map(|metric| (metric.lighthouse_metric_name.to_string(), metric.clone()))
|
||||
.collect();
|
||||
}
|
||||
.collect()
|
||||
});
|
||||
|
||||
/// Returns the value from a Counter/Gauge `MetricType` assuming that it has no associated labels
|
||||
/// else it returns `None`.
|
||||
|
||||
@@ -6,6 +6,5 @@ edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
types = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
parking_lot = { workspace = true }
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
use crate::SlotClock;
|
||||
use lazy_static::lazy_static;
|
||||
pub use lighthouse_metrics::*;
|
||||
use std::sync::LazyLock;
|
||||
use types::{EthSpec, Slot};
|
||||
|
||||
lazy_static! {
|
||||
pub static ref PRESENT_SLOT: Result<IntGauge> =
|
||||
try_create_int_gauge("slotclock_present_slot", "The present wall-clock slot");
|
||||
pub static ref PRESENT_EPOCH: Result<IntGauge> =
|
||||
try_create_int_gauge("slotclock_present_epoch", "The present wall-clock epoch");
|
||||
pub static ref SLOTS_PER_EPOCH: Result<IntGauge> =
|
||||
try_create_int_gauge("slotclock_slots_per_epoch", "Slots per epoch (constant)");
|
||||
pub static ref SECONDS_PER_SLOT: Result<IntGauge> = try_create_int_gauge(
|
||||
pub static PRESENT_SLOT: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("slotclock_present_slot", "The present wall-clock slot"));
|
||||
pub static PRESENT_EPOCH: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("slotclock_present_epoch", "The present wall-clock epoch")
|
||||
});
|
||||
pub static SLOTS_PER_EPOCH: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("slotclock_slots_per_epoch", "Slots per epoch (constant)")
|
||||
});
|
||||
pub static SECONDS_PER_SLOT: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"slotclock_slot_time_seconds",
|
||||
"The duration in seconds between each slot"
|
||||
);
|
||||
}
|
||||
"The duration in seconds between each slot",
|
||||
)
|
||||
});
|
||||
|
||||
/// Update the global metrics `DEFAULT_REGISTRY` with info from the slot clock.
|
||||
pub fn scrape_for_metrics<E: EthSpec, U: SlotClock>(clock: &U) {
|
||||
|
||||
@@ -9,7 +9,6 @@ async-channel = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
lighthouse_metrics = { workspace = true }
|
||||
sloggers = { workspace = true }
|
||||
logging = { workspace = true }
|
||||
|
||||
@@ -1,36 +1,46 @@
|
||||
/// Handles async task metrics
|
||||
use lazy_static::lazy_static;
|
||||
pub use lighthouse_metrics::*;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
lazy_static! {
|
||||
pub static ref ASYNC_TASKS_COUNT: Result<IntGaugeVec> = try_create_int_gauge_vec(
|
||||
pub static ASYNC_TASKS_COUNT: LazyLock<Result<IntGaugeVec>> = LazyLock::new(|| {
|
||||
try_create_int_gauge_vec(
|
||||
"async_tasks_count",
|
||||
"Total number of async tasks spawned using spawn",
|
||||
&["async_task_count"]
|
||||
);
|
||||
pub static ref BLOCKING_TASKS_COUNT: Result<IntGaugeVec> = try_create_int_gauge_vec(
|
||||
&["async_task_count"],
|
||||
)
|
||||
});
|
||||
pub static BLOCKING_TASKS_COUNT: LazyLock<Result<IntGaugeVec>> = LazyLock::new(|| {
|
||||
try_create_int_gauge_vec(
|
||||
"blocking_tasks_count",
|
||||
"Total number of async tasks spawned using spawn_blocking",
|
||||
&["blocking_task_count"]
|
||||
);
|
||||
pub static ref BLOCKING_TASKS_HISTOGRAM: Result<HistogramVec> = try_create_histogram_vec(
|
||||
&["blocking_task_count"],
|
||||
)
|
||||
});
|
||||
pub static BLOCKING_TASKS_HISTOGRAM: LazyLock<Result<HistogramVec>> = LazyLock::new(|| {
|
||||
try_create_histogram_vec(
|
||||
"blocking_tasks_histogram",
|
||||
"Time taken by blocking tasks",
|
||||
&["blocking_task_hist"]
|
||||
);
|
||||
pub static ref BLOCK_ON_TASKS_COUNT: Result<IntGaugeVec> = try_create_int_gauge_vec(
|
||||
&["blocking_task_hist"],
|
||||
)
|
||||
});
|
||||
pub static BLOCK_ON_TASKS_COUNT: LazyLock<Result<IntGaugeVec>> = LazyLock::new(|| {
|
||||
try_create_int_gauge_vec(
|
||||
"block_on_tasks_count",
|
||||
"Total number of block_on_dangerous tasks spawned",
|
||||
&["name"]
|
||||
);
|
||||
pub static ref BLOCK_ON_TASKS_HISTOGRAM: Result<HistogramVec> = try_create_histogram_vec(
|
||||
&["name"],
|
||||
)
|
||||
});
|
||||
pub static BLOCK_ON_TASKS_HISTOGRAM: LazyLock<Result<HistogramVec>> = LazyLock::new(|| {
|
||||
try_create_histogram_vec(
|
||||
"block_on_tasks_histogram",
|
||||
"Time taken by block_on_dangerous tasks",
|
||||
&["name"]
|
||||
);
|
||||
pub static ref TASKS_HISTOGRAM: Result<HistogramVec> = try_create_histogram_vec(
|
||||
&["name"],
|
||||
)
|
||||
});
|
||||
pub static TASKS_HISTOGRAM: LazyLock<Result<HistogramVec>> = LazyLock::new(|| {
|
||||
try_create_histogram_vec(
|
||||
"async_tasks_time_histogram",
|
||||
"Time taken by async tasks",
|
||||
&["async_task_hist"]
|
||||
);
|
||||
}
|
||||
&["async_task_hist"],
|
||||
)
|
||||
});
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
use crate::TaskExecutor;
|
||||
use logging::test_logger;
|
||||
pub use logging::test_logger;
|
||||
use slog::Logger;
|
||||
use sloggers::{null::NullLoggerBuilder, Build};
|
||||
use std::sync::Arc;
|
||||
use tokio::runtime;
|
||||
|
||||
@@ -67,10 +66,3 @@ impl TestRuntime {
|
||||
self.task_executor.log = log;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn null_logger() -> Result<Logger, String> {
|
||||
let log_builder = NullLoggerBuilder;
|
||||
log_builder
|
||||
.build()
|
||||
.map_err(|e| format!("Failed to start null logger: {:?}", e))
|
||||
}
|
||||
|
||||
@@ -7,5 +7,4 @@ edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
lru_cache = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
parking_lot = { workspace = true }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use lazy_static::lazy_static;
|
||||
use lru_cache::LRUTimeCache;
|
||||
use parking_lot::Mutex;
|
||||
use std::net::{SocketAddr, TcpListener, UdpSocket};
|
||||
use std::sync::LazyLock;
|
||||
use std::time::Duration;
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
@@ -18,10 +18,8 @@ pub enum IpVersion {
|
||||
|
||||
pub const CACHED_PORTS_TTL: Duration = Duration::from_secs(300);
|
||||
|
||||
lazy_static! {
|
||||
static ref FOUND_PORTS_CACHE: Mutex<LRUTimeCache<u16>> =
|
||||
Mutex::new(LRUTimeCache::new(CACHED_PORTS_TTL));
|
||||
}
|
||||
static FOUND_PORTS_CACHE: LazyLock<Mutex<LRUTimeCache<u16>>> =
|
||||
LazyLock::new(|| Mutex::new(LRUTimeCache::new(CACHED_PORTS_TTL)));
|
||||
|
||||
/// A convenience wrapper over [`zero_port`].
|
||||
pub fn unused_tcp4_port() -> Result<u16, String> {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//! Provides:
|
||||
//!
|
||||
//! - `ValidatorDir`: manages a directory containing validator keypairs, deposit info and other
|
||||
//! things.
|
||||
//! things.
|
||||
//!
|
||||
//! This crate is intended to be used by the account manager to create validators and the validator
|
||||
//! client to load those validators.
|
||||
|
||||
@@ -18,6 +18,5 @@ serde_json = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
headers = "0.3.2"
|
||||
lighthouse_metrics = { workspace = true }
|
||||
lazy_static = { workspace = true }
|
||||
serde_array_query = "0.1.0"
|
||||
bytes = { workspace = true }
|
||||
|
||||
@@ -1,86 +1,125 @@
|
||||
use eth2::lighthouse::{ProcessHealth, SystemHealth};
|
||||
use lighthouse_metrics::*;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
pub static ref PROCESS_NUM_THREADS: Result<IntGauge> = try_create_int_gauge(
|
||||
pub static PROCESS_NUM_THREADS: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"process_num_threads",
|
||||
"Number of threads used by the current process"
|
||||
);
|
||||
pub static ref PROCESS_RES_MEM: Result<IntGauge> = try_create_int_gauge(
|
||||
"Number of threads used by the current process",
|
||||
)
|
||||
});
|
||||
pub static PROCESS_RES_MEM: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"process_resident_memory_bytes",
|
||||
"Resident memory used by the current process"
|
||||
);
|
||||
pub static ref PROCESS_VIRT_MEM: Result<IntGauge> = try_create_int_gauge(
|
||||
"Resident memory used by the current process",
|
||||
)
|
||||
});
|
||||
pub static PROCESS_VIRT_MEM: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"process_virtual_memory_bytes",
|
||||
"Virtual memory used by the current process"
|
||||
);
|
||||
pub static ref PROCESS_SHR_MEM: Result<IntGauge> = try_create_int_gauge(
|
||||
"Virtual memory used by the current process",
|
||||
)
|
||||
});
|
||||
pub static PROCESS_SHR_MEM: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"process_shared_memory_bytes",
|
||||
"Shared memory used by the current process"
|
||||
);
|
||||
pub static ref PROCESS_SECONDS: Result<IntGauge> = try_create_int_gauge(
|
||||
"Shared memory used by the current process",
|
||||
)
|
||||
});
|
||||
pub static PROCESS_SECONDS: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"process_cpu_seconds_total",
|
||||
"Total cpu time taken by the current process"
|
||||
);
|
||||
pub static ref SYSTEM_VIRT_MEM_TOTAL: Result<IntGauge> =
|
||||
try_create_int_gauge("system_virt_mem_total_bytes", "Total system virtual memory");
|
||||
pub static ref SYSTEM_VIRT_MEM_AVAILABLE: Result<IntGauge> = try_create_int_gauge(
|
||||
"Total cpu time taken by the current process",
|
||||
)
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_TOTAL: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("system_virt_mem_total_bytes", "Total system virtual memory")
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_AVAILABLE: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"system_virt_mem_available_bytes",
|
||||
"Available system virtual memory"
|
||||
);
|
||||
pub static ref SYSTEM_VIRT_MEM_USED: Result<IntGauge> =
|
||||
try_create_int_gauge("system_virt_mem_used_bytes", "Used system virtual memory");
|
||||
pub static ref SYSTEM_VIRT_MEM_FREE: Result<IntGauge> =
|
||||
try_create_int_gauge("system_virt_mem_free_bytes", "Free system virtual memory");
|
||||
pub static ref SYSTEM_VIRT_MEM_CACHED: Result<IntGauge> =
|
||||
try_create_int_gauge("system_virt_mem_cached_bytes", "Used system virtual memory");
|
||||
pub static ref SYSTEM_VIRT_MEM_BUFFERS: Result<IntGauge> =
|
||||
try_create_int_gauge("system_virt_mem_buffer_bytes", "Free system virtual memory");
|
||||
pub static ref SYSTEM_VIRT_MEM_PERCENTAGE: Result<Gauge> = try_create_float_gauge(
|
||||
"Available system virtual memory",
|
||||
)
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_USED: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("system_virt_mem_used_bytes", "Used system virtual memory")
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_FREE: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("system_virt_mem_free_bytes", "Free system virtual memory")
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_CACHED: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("system_virt_mem_cached_bytes", "Used system virtual memory")
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_BUFFERS: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("system_virt_mem_buffer_bytes", "Free system virtual memory")
|
||||
});
|
||||
pub static SYSTEM_VIRT_MEM_PERCENTAGE: LazyLock<Result<Gauge>> = LazyLock::new(|| {
|
||||
try_create_float_gauge(
|
||||
"system_virt_mem_percentage",
|
||||
"Percentage of used virtual memory"
|
||||
);
|
||||
pub static ref SYSTEM_LOADAVG_1: Result<Gauge> =
|
||||
try_create_float_gauge("system_loadavg_1", "Loadavg over 1 minute");
|
||||
pub static ref SYSTEM_LOADAVG_5: Result<Gauge> =
|
||||
try_create_float_gauge("system_loadavg_5", "Loadavg over 5 minutes");
|
||||
pub static ref SYSTEM_LOADAVG_15: Result<Gauge> =
|
||||
try_create_float_gauge("system_loadavg_15", "Loadavg over 15 minutes");
|
||||
"Percentage of used virtual memory",
|
||||
)
|
||||
});
|
||||
pub static SYSTEM_LOADAVG_1: LazyLock<Result<Gauge>> =
|
||||
LazyLock::new(|| try_create_float_gauge("system_loadavg_1", "Loadavg over 1 minute"));
|
||||
pub static SYSTEM_LOADAVG_5: LazyLock<Result<Gauge>> =
|
||||
LazyLock::new(|| try_create_float_gauge("system_loadavg_5", "Loadavg over 5 minutes"));
|
||||
pub static SYSTEM_LOADAVG_15: LazyLock<Result<Gauge>> =
|
||||
LazyLock::new(|| try_create_float_gauge("system_loadavg_15", "Loadavg over 15 minutes"));
|
||||
|
||||
pub static ref CPU_CORES: Result<IntGauge> =
|
||||
try_create_int_gauge("cpu_cores", "Number of physical cpu cores");
|
||||
pub static ref CPU_THREADS: Result<IntGauge> =
|
||||
try_create_int_gauge("cpu_threads", "Number of logical cpu cores");
|
||||
pub static CPU_CORES: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("cpu_cores", "Number of physical cpu cores"));
|
||||
pub static CPU_THREADS: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("cpu_threads", "Number of logical cpu cores"));
|
||||
|
||||
pub static ref CPU_SYSTEM_SECONDS_TOTAL: Result<IntGauge> =
|
||||
try_create_int_gauge("cpu_system_seconds_total", "Total time spent in kernel mode");
|
||||
pub static ref CPU_USER_SECONDS_TOTAL: Result<IntGauge> =
|
||||
try_create_int_gauge("cpu_user_seconds_total", "Total time spent in user mode");
|
||||
pub static ref CPU_IOWAIT_SECONDS_TOTAL: Result<IntGauge> =
|
||||
try_create_int_gauge("cpu_iowait_seconds_total", "Total time spent waiting for io");
|
||||
pub static ref CPU_IDLE_SECONDS_TOTAL: Result<IntGauge> =
|
||||
try_create_int_gauge("cpu_idle_seconds_total", "Total time spent idle");
|
||||
pub static CPU_SYSTEM_SECONDS_TOTAL: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"cpu_system_seconds_total",
|
||||
"Total time spent in kernel mode",
|
||||
)
|
||||
});
|
||||
pub static CPU_USER_SECONDS_TOTAL: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge("cpu_user_seconds_total", "Total time spent in user mode")
|
||||
});
|
||||
pub static CPU_IOWAIT_SECONDS_TOTAL: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"cpu_iowait_seconds_total",
|
||||
"Total time spent waiting for io",
|
||||
)
|
||||
});
|
||||
pub static CPU_IDLE_SECONDS_TOTAL: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("cpu_idle_seconds_total", "Total time spent idle"));
|
||||
|
||||
pub static ref DISK_BYTES_TOTAL: Result<IntGauge> =
|
||||
try_create_int_gauge("disk_node_bytes_total", "Total capacity of disk");
|
||||
pub static DISK_BYTES_TOTAL: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("disk_node_bytes_total", "Total capacity of disk"));
|
||||
|
||||
pub static ref DISK_BYTES_FREE: Result<IntGauge> =
|
||||
try_create_int_gauge("disk_node_bytes_free", "Free space in disk");
|
||||
pub static DISK_BYTES_FREE: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("disk_node_bytes_free", "Free space in disk"));
|
||||
|
||||
pub static ref DISK_READS: Result<IntGauge> =
|
||||
try_create_int_gauge("disk_node_reads_total", "Number of disk reads");
|
||||
pub static DISK_READS: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("disk_node_reads_total", "Number of disk reads"));
|
||||
|
||||
pub static ref DISK_WRITES: Result<IntGauge> =
|
||||
try_create_int_gauge("disk_node_writes_total", "Number of disk writes");
|
||||
pub static DISK_WRITES: LazyLock<Result<IntGauge>> =
|
||||
LazyLock::new(|| try_create_int_gauge("disk_node_writes_total", "Number of disk writes"));
|
||||
|
||||
pub static ref NETWORK_BYTES_RECEIVED: Result<IntGauge> =
|
||||
try_create_int_gauge("network_node_bytes_total_received", "Total bytes received over all network interfaces");
|
||||
pub static ref NETWORK_BYTES_SENT: Result<IntGauge> =
|
||||
try_create_int_gauge("network_node_bytes_total_transmit", "Total bytes sent over all network interfaces");
|
||||
pub static NETWORK_BYTES_RECEIVED: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"network_node_bytes_total_received",
|
||||
"Total bytes received over all network interfaces",
|
||||
)
|
||||
});
|
||||
pub static NETWORK_BYTES_SENT: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"network_node_bytes_total_transmit",
|
||||
"Total bytes sent over all network interfaces",
|
||||
)
|
||||
});
|
||||
|
||||
pub static ref BOOT_TIME: Result<IntGauge> =
|
||||
try_create_int_gauge("misc_node_boot_ts_seconds", "Boot time as unix epoch timestamp");
|
||||
}
|
||||
pub static BOOT_TIME: LazyLock<Result<IntGauge>> = LazyLock::new(|| {
|
||||
try_create_int_gauge(
|
||||
"misc_node_boot_ts_seconds",
|
||||
"Boot time as unix epoch timestamp",
|
||||
)
|
||||
});
|
||||
|
||||
pub fn scrape_health_metrics() {
|
||||
scrape_process_health_metrics();
|
||||
|
||||
Reference in New Issue
Block a user