From 37961d36882564a0460562aee8d0c1553f6b251c Mon Sep 17 00:00:00 2001 From: Victor Allombert Date: Mon, 12 Aug 2024 11:17:56 +0200 Subject: [PATCH] Store: introduce metric for delayed storage maintenance target --- src/lib_store/unix/store.ml | 29 +++++++++++++++++++++++++++++ src/lib_store/unix/store_metrics.ml | 9 +++++++++ 2 files changed, 38 insertions(+) diff --git a/src/lib_store/unix/store.ml b/src/lib_store/unix/store.ml index eaa6c770aeb1..105b66d5042d 100644 --- a/src/lib_store/unix/store.ml +++ b/src/lib_store/unix/store.ml @@ -1695,6 +1695,9 @@ module Chain = struct Store_events.(emit delay_store_merging) (chain_store.storage_maintenance.maintenance_delay, new_target) in + Prometheus.Gauge.set + Store_metrics.metrics.maintenance_target + (Int32.to_float new_target) ; return_unit (* Returns whether or not we should proceed to the merge. True upon @@ -1704,6 +1707,13 @@ module Chain = struct let level_to_merge_reached = target <= Block.level new_head in let* () = if level_to_merge_reached then + let () = + (* Set the storage maintenance target to -1 to notify that + no target is set. *) + Prometheus.Gauge.set + Store_metrics.metrics.maintenance_target + Float.minus_one + in Stored_data.write chain_store.storage_maintenance.scheduled_maintenance None @@ -1920,6 +1930,11 @@ module Chain = struct chain_store.storage_maintenance.scheduled_maintenance None in + (* Set the storage maintenance target to -1 to notify that no + target is set. *) + Prometheus.Gauge.set + Store_metrics.metrics.maintenance_target + Float.minus_one ; return_true | Custom delay -> custom_delayed_maintenance chain_store new_head delay @@ -2366,6 +2381,11 @@ module Chain = struct (Naming.scheduled_maintenance chain_dir) ~initial_data:None in + (* Set the storage maintenance target to -1 to notify that no + target is set. *) + Prometheus.Gauge.set + Store_metrics.metrics.maintenance_target + Float.minus_one ; let chain_store : chain_store = { global_store; @@ -2419,6 +2439,15 @@ module Chain = struct (Naming.scheduled_maintenance chain_dir) ~initial_data:None in + let*! scheduled_maintenance_value = + Stored_data.get scheduled_maintenance + in + (* Set the storage maintenance target to -1, if no value + found, to notify that no target is set. *) + Prometheus.Gauge.set + Store_metrics.metrics.maintenance_target + (Option.value ~default:Int32.minus_one scheduled_maintenance_value + |> Int32.to_float) ; let chain_store = { global_store; diff --git a/src/lib_store/unix/store_metrics.ml b/src/lib_store/unix/store_metrics.ml index f1247e4614d5..57d7ffe6b130 100644 --- a/src/lib_store/unix/store_metrics.ml +++ b/src/lib_store/unix/store_metrics.ml @@ -30,6 +30,7 @@ type metrics = { alternate_heads_count : Prometheus.Gauge.t; last_written_block_size : Prometheus.Gauge.t; last_store_merge_time : Prometheus.Gauge.t; + maintenance_target : Prometheus.Gauge.t; } let namespace = Tezos_version.Octez_node_version.namespace @@ -67,6 +68,13 @@ let metrics = let help = "Time, in seconds, for the completion of the last store merge" in Prometheus.Gauge.v ~help ~namespace ~subsystem "last_merge_time" in + let maintenance_target = + let help = + "The level at which the storage maintenance is expected to be triggered. \ + Set to -1 if no target is set" + in + Prometheus.Gauge.v ~help ~namespace ~subsystem "maintenance_target" + in let invalid_blocks_info = Prometheus.MetricInfo. { @@ -94,4 +102,5 @@ let metrics = alternate_heads_count; last_written_block_size; last_store_merge_time; + maintenance_target; } -- GitLab