From 5e1667c406862661ffced2c78dced9f63b95a638 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Fri, 6 Mar 2020 20:32:33 +0300 Subject: [PATCH] Add state/database caches to prometheus (#5165) * add state/database caches to prometheus * also state-db memory * use suggestions from review --- substrate/client/service/src/builder.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/substrate/client/service/src/builder.rs b/substrate/client/service/src/builder.rs index 096f492e64..e49f568733 100644 --- a/substrate/client/service/src/builder.rs +++ b/substrate/client/service/src/builder.rs @@ -62,6 +62,9 @@ struct ServiceMetrics { cpu_usage_percentage: Gauge, network_per_sec_bytes: GaugeVec, node_roles: Gauge, + database_cache: Gauge, + state_cache: Gauge, + state_db: GaugeVec, } impl ServiceMetrics { @@ -87,7 +90,16 @@ impl ServiceMetrics { node_roles: register(Gauge::new( "node_roles", "The roles the node is running as", )?, registry)?, - + database_cache: register(Gauge::new( + "database_cache_bytes", "RocksDB cache size in bytes", + )?, registry)?, + state_cache: register(Gauge::new( + "state_cache_bytes", "State cache size in bytes", + )?, registry)?, + state_db: register(GaugeVec::new( + Opts::new("state_db_cache_bytes", "State DB cache in bytes"), + &["subtype"] + )?, registry)?, }) } } @@ -1079,6 +1091,17 @@ ServiceBuilder< if let Some(best_seen_block) = best_seen_block { metrics.block_height_number.with_label_values(&["sync_target"]).set(best_seen_block); } + + if let Some(info) = info.usage.as_ref() { + metrics.database_cache.set(info.memory.database_cache.as_bytes() as u64); + metrics.state_cache.set(info.memory.state_cache.as_bytes() as u64); + + metrics.state_db.with_label_values(&["non_canonical"]).set(info.memory.state_db.non_canonical.as_bytes() as u64); + if let Some(pruning) = info.memory.state_db.pruning { + metrics.state_db.with_label_values(&["pruning"]).set(pruning.as_bytes() as u64); + } + metrics.state_db.with_label_values(&["pinned"]).set(info.memory.state_db.pinned.as_bytes() as u64); + } } ready(())