mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-15 02:42:38 +00:00
## Issue Addressed NA ## Proposed Changes - Adds a HTTP server to the VC which provides Prometheus metrics. - Moves the health metrics into the `lighthouse_metrics` crate so it can be shared between BN/VC. - Sprinkle some metrics around the VC. - Update the book to indicate that we now have VC metrics. - Shifts the "waiting for genesis" logic later in the `ProductionValidatorClient::new_from_cli` - This is worth attention during the review. ## Additional Info - ~~`clippy` has some new lints that are failing. I'll deal with that in another PR.~~
62 lines
2.9 KiB
Rust
62 lines
2.9 KiB
Rust
use eth2::lighthouse::Health;
|
|
use lighthouse_metrics::*;
|
|
|
|
lazy_static::lazy_static! {
|
|
pub static ref PROCESS_NUM_THREADS: Result<IntGauge> = 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(
|
|
"process_resident_memory_bytes",
|
|
"Resident memory used by the current process"
|
|
);
|
|
pub static ref PROCESS_VIRT_MEM: Result<IntGauge> = try_create_int_gauge(
|
|
"process_virtual_memory_bytes",
|
|
"Virtual memory used 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(
|
|
"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_PERCENTAGE: Result<Gauge> = 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");
|
|
}
|
|
|
|
pub fn scrape_health_metrics() {
|
|
// This will silently fail if we are unable to observe the health. This is desired behaviour
|
|
// since we don't support `Health` for all platforms.
|
|
if let Ok(health) = Health::observe() {
|
|
set_gauge(&PROCESS_NUM_THREADS, health.pid_num_threads as i64);
|
|
set_gauge(&PROCESS_RES_MEM, health.pid_mem_resident_set_size as i64);
|
|
set_gauge(&PROCESS_VIRT_MEM, health.pid_mem_virtual_memory_size as i64);
|
|
set_gauge(&SYSTEM_VIRT_MEM_TOTAL, health.sys_virt_mem_total as i64);
|
|
set_gauge(
|
|
&SYSTEM_VIRT_MEM_AVAILABLE,
|
|
health.sys_virt_mem_available as i64,
|
|
);
|
|
set_gauge(&SYSTEM_VIRT_MEM_USED, health.sys_virt_mem_used as i64);
|
|
set_gauge(&SYSTEM_VIRT_MEM_FREE, health.sys_virt_mem_free as i64);
|
|
set_float_gauge(
|
|
&SYSTEM_VIRT_MEM_PERCENTAGE,
|
|
health.sys_virt_mem_percent as f64,
|
|
);
|
|
set_float_gauge(&SYSTEM_LOADAVG_1, health.sys_loadavg_1);
|
|
set_float_gauge(&SYSTEM_LOADAVG_5, health.sys_loadavg_5);
|
|
set_float_gauge(&SYSTEM_LOADAVG_15, health.sys_loadavg_15);
|
|
}
|
|
}
|