From 57a688761676501d84ceefdd924f09b7d4174344 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 5 May 2023 13:51:49 +0200 Subject: [PATCH 1/4] SCORU/Node: remove metrics dependency on protocol --- src/proto_alpha/lib_sc_rollup_node/daemon.ml | 7 ++- src/proto_alpha/lib_sc_rollup_node/inbox.ml | 7 ++- src/proto_alpha/lib_sc_rollup_node/metrics.ml | 50 ++++++------------- .../lib_sc_rollup_node/metrics.mli | 12 ++--- 4 files changed, 29 insertions(+), 47 deletions(-) diff --git a/src/proto_alpha/lib_sc_rollup_node/daemon.ml b/src/proto_alpha/lib_sc_rollup_node/daemon.ml index c938332a6b64..a53ac6cb324c 100644 --- a/src/proto_alpha/lib_sc_rollup_node/daemon.ml +++ b/src/proto_alpha/lib_sc_rollup_node/daemon.ml @@ -568,11 +568,10 @@ module Make (PVM : Pvm.S) = struct daemonize node_ctxt in Metrics.Info.init_rollup_node_info - ~id:node_ctxt.rollup_address + ~id:configuration.sc_rollup_address ~mode:configuration.mode - ~genesis_level:node_ctxt.genesis_info.level - ~genesis_hash:node_ctxt.genesis_info.commitment_hash - ~pvm_kind:node_ctxt.kind ; + ~genesis_level:(Raw_level.to_int32 node_ctxt.genesis_info.level) + ~pvm_kind:(Sc_rollup.Kind.to_string node_ctxt.kind) ; protect start ~on_error:(function | Sc_rollup_node_errors.( Lost_game _ | Unparsable_boot_sector _ | Invalid_genesis_state _) diff --git a/src/proto_alpha/lib_sc_rollup_node/inbox.ml b/src/proto_alpha/lib_sc_rollup_node/inbox.ml index 3a15cf6eba8d..a15d5f35bbbd 100644 --- a/src/proto_alpha/lib_sc_rollup_node/inbox.ml +++ b/src/proto_alpha/lib_sc_rollup_node/inbox.ml @@ -138,8 +138,11 @@ let process_messages (node_ctxt : _ Node_context.t) ~is_migration_block inbox messages in - Metrics.Inbox.Stats.head_messages_list := - messages_with_protocol_internal_messages ; + Metrics.Inbox.Stats.set + messages_with_protocol_internal_messages + ~is_internal:(function + | Sc_rollup.Inbox_message.Internal _ -> true + | External _ -> false) ; let* () = Node_context.save_messages node_ctxt diff --git a/src/proto_alpha/lib_sc_rollup_node/metrics.ml b/src/proto_alpha/lib_sc_rollup_node/metrics.ml index b85def394e48..ac3ec567d54b 100644 --- a/src/proto_alpha/lib_sc_rollup_node/metrics.ml +++ b/src/proto_alpha/lib_sc_rollup_node/metrics.ml @@ -23,8 +23,6 @@ (* *) (*****************************************************************************) -open Protocol -open Alpha_context open Prometheus let sc_rollup_node_registry = CollectorRegistry.create () @@ -56,10 +54,6 @@ let metric ~help ~name collector = in (info, collect) -(** Registers a pre-collector in [sc_rollup_node_registry] *) -let register_pre_collect = - CollectorRegistry.register_pre_collect sc_rollup_node_registry - (** Registers a metric defined with [info] associated to its [collector] *) let add_metric (info, collector) = CollectorRegistry.(register sc_rollup_node_registry) info collector @@ -153,22 +147,15 @@ module Info = struct let help = "Rollup node info" in v_labels_counter ~help - ~label_names: - ["rollup_address"; "mode"; "genesis_level"; "genesis_hash"; "pvm_kind"] + ~label_names:["rollup_address"; "mode"; "genesis_level"; "pvm_kind"] "rollup_node_info" - let init_rollup_node_info ~id ~mode ~genesis_level ~genesis_hash ~pvm_kind = - let id = Sc_rollup_repr.Address.to_b58check id in + let init_rollup_node_info ~id ~mode ~genesis_level ~pvm_kind = + let id = Tezos_crypto.Hashed.Smart_rollup_address.to_b58check id in let mode = Configuration.string_of_mode mode in - let genesis_level = Format.asprintf "%a" Raw_level.pp genesis_level in - let genesis_hash = - Format.asprintf "%a" Sc_rollup.Commitment.Hash.pp genesis_hash - in - let pvm_kind = Sc_rollup.Kind.to_string pvm_kind in + let genesis_level = Int32.to_string genesis_level in ignore - @@ Counter.labels - rollup_node_info - [id; mode; genesis_level; genesis_hash; pvm_kind] ; + @@ Counter.labels rollup_node_info [id; mode; genesis_level; pvm_kind] ; () let () = @@ -185,8 +172,6 @@ module Inbox = struct type t = {head_inbox_level : Gauge.t} module Stats = struct - let head_messages_list = ref [] - let internal_messages_number = ref 0. let external_messages_number = ref 0. @@ -194,6 +179,17 @@ module Inbox = struct let zero () = internal_messages_number := 0. ; external_messages_number := 0. + + let set ~is_internal l = + zero () ; + List.iter + (fun x -> + let r = + if is_internal x then internal_messages_number + else external_messages_number + in + r := !r +. 1.) + l end let metrics = @@ -212,20 +208,6 @@ module Inbox = struct ~name:"head_inbox_external_messages_number" (fun () -> !Stats.external_messages_number) in - (* Registers a pre-collector to set the stats values - that be will be collected by metrics *) - register_pre_collect (fun () -> - Stats.zero () ; - List.iter - (fun message -> - match message with - | Sc_rollup.Inbox_message.Internal _ -> - Stats.internal_messages_number := - !Stats.internal_messages_number +. 1. - | External _ -> - Stats.external_messages_number := - !Stats.external_messages_number +. 1.) - !Stats.head_messages_list) ; List.iter add_metric [head_internal_messages_number; head_external_messages_number] ; diff --git a/src/proto_alpha/lib_sc_rollup_node/metrics.mli b/src/proto_alpha/lib_sc_rollup_node/metrics.mli index f57e0acfc7eb..8d2cc9fcb695 100644 --- a/src/proto_alpha/lib_sc_rollup_node/metrics.mli +++ b/src/proto_alpha/lib_sc_rollup_node/metrics.mli @@ -39,11 +39,10 @@ module Info : sig (** Initializes the metric for rollup info with a the given arguments as label values *) val init_rollup_node_info : - id:Protocol.Alpha_context.Sc_rollup.t -> + id:Tezos_crypto.Hashed.Smart_rollup_address.t -> mode:Configuration.mode -> - genesis_level:Protocol.Alpha_context.Raw_level.t -> - genesis_hash:Protocol.Alpha_context.Sc_rollup.Commitment.Hash.t -> - pvm_kind:Protocol.Alpha_context.Sc_rollup.Kind.t -> + genesis_level:int32 -> + pvm_kind:string -> unit end @@ -54,9 +53,8 @@ module Inbox : sig (** The stats for the inboxes *) module Stats : sig - (** The list of messages from the head *) - val head_messages_list : - Protocol.Alpha_context.Sc_rollup.Inbox_message.t list ref + (** Set the number of messages from the head *) + val set : is_internal:('a -> bool) -> 'a list -> unit end (** The inboxes metrics *) -- GitLab From a073578b8fd6a4b5941ce5479a5ca920a01132af Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Tue, 2 May 2023 12:09:36 +0200 Subject: [PATCH 2/4] SCORU/Node/016: remove metrics dependency on protocol --- .../lib_sc_rollup_node/daemon.ml | 7 ++- .../lib_sc_rollup_node/inbox.ml | 7 ++- .../lib_sc_rollup_node/metrics.ml | 50 ++++++------------- .../lib_sc_rollup_node/metrics.mli | 12 ++--- 4 files changed, 29 insertions(+), 47 deletions(-) diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/daemon.ml b/src/proto_016_PtMumbai/lib_sc_rollup_node/daemon.ml index ef8f20fe450f..25ad3512d606 100644 --- a/src/proto_016_PtMumbai/lib_sc_rollup_node/daemon.ml +++ b/src/proto_016_PtMumbai/lib_sc_rollup_node/daemon.ml @@ -574,11 +574,10 @@ module Make (PVM : Pvm.S) = struct daemonize node_ctxt in Metrics.Info.init_rollup_node_info - ~id:node_ctxt.rollup_address + ~id:configuration.sc_rollup_address ~mode:configuration.mode - ~genesis_level:node_ctxt.genesis_info.level - ~genesis_hash:node_ctxt.genesis_info.commitment_hash - ~pvm_kind:node_ctxt.kind ; + ~genesis_level:(Raw_level.to_int32 node_ctxt.genesis_info.level) + ~pvm_kind:(Sc_rollup.Kind.to_string node_ctxt.kind) ; protect start ~on_error:(function | Sc_rollup_node_errors.(Lost_game _ | Invalid_genesis_state _) :: _ as e -> diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/inbox.ml b/src/proto_016_PtMumbai/lib_sc_rollup_node/inbox.ml index 7a3806c0c037..4b728a6a8a96 100644 --- a/src/proto_016_PtMumbai/lib_sc_rollup_node/inbox.ml +++ b/src/proto_016_PtMumbai/lib_sc_rollup_node/inbox.ml @@ -135,8 +135,11 @@ let process_messages (node_ctxt : _ Node_context.t) inbox messages in - Metrics.Inbox.Stats.head_messages_list := - messages_with_protocol_internal_messages ; + Metrics.Inbox.Stats.set + messages_with_protocol_internal_messages + ~is_internal:(function + | Sc_rollup.Inbox_message.Internal _ -> true + | External _ -> false) ; let* () = Node_context.save_messages node_ctxt diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml b/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml index b85def394e48..ac3ec567d54b 100644 --- a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml +++ b/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml @@ -23,8 +23,6 @@ (* *) (*****************************************************************************) -open Protocol -open Alpha_context open Prometheus let sc_rollup_node_registry = CollectorRegistry.create () @@ -56,10 +54,6 @@ let metric ~help ~name collector = in (info, collect) -(** Registers a pre-collector in [sc_rollup_node_registry] *) -let register_pre_collect = - CollectorRegistry.register_pre_collect sc_rollup_node_registry - (** Registers a metric defined with [info] associated to its [collector] *) let add_metric (info, collector) = CollectorRegistry.(register sc_rollup_node_registry) info collector @@ -153,22 +147,15 @@ module Info = struct let help = "Rollup node info" in v_labels_counter ~help - ~label_names: - ["rollup_address"; "mode"; "genesis_level"; "genesis_hash"; "pvm_kind"] + ~label_names:["rollup_address"; "mode"; "genesis_level"; "pvm_kind"] "rollup_node_info" - let init_rollup_node_info ~id ~mode ~genesis_level ~genesis_hash ~pvm_kind = - let id = Sc_rollup_repr.Address.to_b58check id in + let init_rollup_node_info ~id ~mode ~genesis_level ~pvm_kind = + let id = Tezos_crypto.Hashed.Smart_rollup_address.to_b58check id in let mode = Configuration.string_of_mode mode in - let genesis_level = Format.asprintf "%a" Raw_level.pp genesis_level in - let genesis_hash = - Format.asprintf "%a" Sc_rollup.Commitment.Hash.pp genesis_hash - in - let pvm_kind = Sc_rollup.Kind.to_string pvm_kind in + let genesis_level = Int32.to_string genesis_level in ignore - @@ Counter.labels - rollup_node_info - [id; mode; genesis_level; genesis_hash; pvm_kind] ; + @@ Counter.labels rollup_node_info [id; mode; genesis_level; pvm_kind] ; () let () = @@ -185,8 +172,6 @@ module Inbox = struct type t = {head_inbox_level : Gauge.t} module Stats = struct - let head_messages_list = ref [] - let internal_messages_number = ref 0. let external_messages_number = ref 0. @@ -194,6 +179,17 @@ module Inbox = struct let zero () = internal_messages_number := 0. ; external_messages_number := 0. + + let set ~is_internal l = + zero () ; + List.iter + (fun x -> + let r = + if is_internal x then internal_messages_number + else external_messages_number + in + r := !r +. 1.) + l end let metrics = @@ -212,20 +208,6 @@ module Inbox = struct ~name:"head_inbox_external_messages_number" (fun () -> !Stats.external_messages_number) in - (* Registers a pre-collector to set the stats values - that be will be collected by metrics *) - register_pre_collect (fun () -> - Stats.zero () ; - List.iter - (fun message -> - match message with - | Sc_rollup.Inbox_message.Internal _ -> - Stats.internal_messages_number := - !Stats.internal_messages_number +. 1. - | External _ -> - Stats.external_messages_number := - !Stats.external_messages_number +. 1.) - !Stats.head_messages_list) ; List.iter add_metric [head_internal_messages_number; head_external_messages_number] ; diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.mli b/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.mli index f57e0acfc7eb..8d2cc9fcb695 100644 --- a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.mli +++ b/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.mli @@ -39,11 +39,10 @@ module Info : sig (** Initializes the metric for rollup info with a the given arguments as label values *) val init_rollup_node_info : - id:Protocol.Alpha_context.Sc_rollup.t -> + id:Tezos_crypto.Hashed.Smart_rollup_address.t -> mode:Configuration.mode -> - genesis_level:Protocol.Alpha_context.Raw_level.t -> - genesis_hash:Protocol.Alpha_context.Sc_rollup.Commitment.Hash.t -> - pvm_kind:Protocol.Alpha_context.Sc_rollup.Kind.t -> + genesis_level:int32 -> + pvm_kind:string -> unit end @@ -54,9 +53,8 @@ module Inbox : sig (** The stats for the inboxes *) module Stats : sig - (** The list of messages from the head *) - val head_messages_list : - Protocol.Alpha_context.Sc_rollup.Inbox_message.t list ref + (** Set the number of messages from the head *) + val set : is_internal:('a -> bool) -> 'a list -> unit end (** The inboxes metrics *) -- GitLab From a32a3f663866e51dea2c20fd6dcbd01e5501c787 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 5 May 2023 13:54:35 +0200 Subject: [PATCH 3/4] SCORU/Node/017: remove metrics dependency on protocol --- .../lib_sc_rollup_node/daemon.ml | 7 ++- .../lib_sc_rollup_node/inbox.ml | 7 ++- .../lib_sc_rollup_node/metrics.ml | 50 ++++++------------- .../lib_sc_rollup_node/metrics.mli | 12 ++--- 4 files changed, 29 insertions(+), 47 deletions(-) diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/daemon.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/daemon.ml index f4cd8a88762a..623525ef0450 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/daemon.ml +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/daemon.ml @@ -568,11 +568,10 @@ module Make (PVM : Pvm.S) = struct daemonize node_ctxt in Metrics.Info.init_rollup_node_info - ~id:node_ctxt.rollup_address + ~id:configuration.sc_rollup_address ~mode:configuration.mode - ~genesis_level:node_ctxt.genesis_info.level - ~genesis_hash:node_ctxt.genesis_info.commitment_hash - ~pvm_kind:node_ctxt.kind ; + ~genesis_level:(Raw_level.to_int32 node_ctxt.genesis_info.level) + ~pvm_kind:(Sc_rollup.Kind.to_string node_ctxt.kind) ; protect start ~on_error:(function | Sc_rollup_node_errors.(Lost_game _ | Invalid_genesis_state _) :: _ as e -> diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/inbox.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/inbox.ml index fcafe33af0b0..07549aa6eb85 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/inbox.ml +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/inbox.ml @@ -138,8 +138,11 @@ let process_messages (node_ctxt : _ Node_context.t) ~is_migration_block inbox messages in - Metrics.Inbox.Stats.head_messages_list := - messages_with_protocol_internal_messages ; + Metrics.Inbox.Stats.set + messages_with_protocol_internal_messages + ~is_internal:(function + | Sc_rollup.Inbox_message.Internal _ -> true + | External _ -> false) ; let* () = Node_context.save_messages node_ctxt diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml index b85def394e48..ac3ec567d54b 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml @@ -23,8 +23,6 @@ (* *) (*****************************************************************************) -open Protocol -open Alpha_context open Prometheus let sc_rollup_node_registry = CollectorRegistry.create () @@ -56,10 +54,6 @@ let metric ~help ~name collector = in (info, collect) -(** Registers a pre-collector in [sc_rollup_node_registry] *) -let register_pre_collect = - CollectorRegistry.register_pre_collect sc_rollup_node_registry - (** Registers a metric defined with [info] associated to its [collector] *) let add_metric (info, collector) = CollectorRegistry.(register sc_rollup_node_registry) info collector @@ -153,22 +147,15 @@ module Info = struct let help = "Rollup node info" in v_labels_counter ~help - ~label_names: - ["rollup_address"; "mode"; "genesis_level"; "genesis_hash"; "pvm_kind"] + ~label_names:["rollup_address"; "mode"; "genesis_level"; "pvm_kind"] "rollup_node_info" - let init_rollup_node_info ~id ~mode ~genesis_level ~genesis_hash ~pvm_kind = - let id = Sc_rollup_repr.Address.to_b58check id in + let init_rollup_node_info ~id ~mode ~genesis_level ~pvm_kind = + let id = Tezos_crypto.Hashed.Smart_rollup_address.to_b58check id in let mode = Configuration.string_of_mode mode in - let genesis_level = Format.asprintf "%a" Raw_level.pp genesis_level in - let genesis_hash = - Format.asprintf "%a" Sc_rollup.Commitment.Hash.pp genesis_hash - in - let pvm_kind = Sc_rollup.Kind.to_string pvm_kind in + let genesis_level = Int32.to_string genesis_level in ignore - @@ Counter.labels - rollup_node_info - [id; mode; genesis_level; genesis_hash; pvm_kind] ; + @@ Counter.labels rollup_node_info [id; mode; genesis_level; pvm_kind] ; () let () = @@ -185,8 +172,6 @@ module Inbox = struct type t = {head_inbox_level : Gauge.t} module Stats = struct - let head_messages_list = ref [] - let internal_messages_number = ref 0. let external_messages_number = ref 0. @@ -194,6 +179,17 @@ module Inbox = struct let zero () = internal_messages_number := 0. ; external_messages_number := 0. + + let set ~is_internal l = + zero () ; + List.iter + (fun x -> + let r = + if is_internal x then internal_messages_number + else external_messages_number + in + r := !r +. 1.) + l end let metrics = @@ -212,20 +208,6 @@ module Inbox = struct ~name:"head_inbox_external_messages_number" (fun () -> !Stats.external_messages_number) in - (* Registers a pre-collector to set the stats values - that be will be collected by metrics *) - register_pre_collect (fun () -> - Stats.zero () ; - List.iter - (fun message -> - match message with - | Sc_rollup.Inbox_message.Internal _ -> - Stats.internal_messages_number := - !Stats.internal_messages_number +. 1. - | External _ -> - Stats.external_messages_number := - !Stats.external_messages_number +. 1.) - !Stats.head_messages_list) ; List.iter add_metric [head_internal_messages_number; head_external_messages_number] ; diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli b/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli index f57e0acfc7eb..8d2cc9fcb695 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli @@ -39,11 +39,10 @@ module Info : sig (** Initializes the metric for rollup info with a the given arguments as label values *) val init_rollup_node_info : - id:Protocol.Alpha_context.Sc_rollup.t -> + id:Tezos_crypto.Hashed.Smart_rollup_address.t -> mode:Configuration.mode -> - genesis_level:Protocol.Alpha_context.Raw_level.t -> - genesis_hash:Protocol.Alpha_context.Sc_rollup.Commitment.Hash.t -> - pvm_kind:Protocol.Alpha_context.Sc_rollup.Kind.t -> + genesis_level:int32 -> + pvm_kind:string -> unit end @@ -54,9 +53,8 @@ module Inbox : sig (** The stats for the inboxes *) module Stats : sig - (** The list of messages from the head *) - val head_messages_list : - Protocol.Alpha_context.Sc_rollup.Inbox_message.t list ref + (** Set the number of messages from the head *) + val set : is_internal:('a -> bool) -> 'a list -> unit end (** The inboxes metrics *) -- GitLab From 5204d05d93a089badb9c8420745a0c7a62a138a9 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Fri, 21 Apr 2023 15:49:09 +0200 Subject: [PATCH 4/4] SCORU/Node: move metrics outside of proto directory --- manifest/main.ml | 5 +- opam/octez-smart-rollup-node-PtMumbai.opam | 2 - opam/octez-smart-rollup-node-PtNairob.opam | 2 - opam/octez-smart-rollup-node-alpha.opam | 2 - opam/octez-smart-rollup-node.opam | 3 + src/lib_smart_rollup_node/dune | 3 + .../metrics.ml | 2 +- .../metrics.mli | 0 .../node_events.ml} | 54 ++--- .../node_events.mli} | 47 ++-- .../lib_sc_rollup_node/dune | 4 +- .../lib_sc_rollup_node/dune | 4 +- .../lib_sc_rollup_node/metrics.ml | 215 ------------------ src/proto_alpha/lib_sc_rollup_node/dune | 4 +- src/proto_alpha/lib_sc_rollup_node/metrics.ml | 215 ------------------ 15 files changed, 50 insertions(+), 512 deletions(-) rename src/{proto_016_PtMumbai/lib_sc_rollup_node => lib_smart_rollup_node}/metrics.ml (99%) rename src/{proto_016_PtMumbai/lib_sc_rollup_node => lib_smart_rollup_node}/metrics.mli (100%) rename src/{proto_alpha/lib_sc_rollup_node/metrics.mli => lib_smart_rollup_node/node_events.ml} (62%) rename src/{proto_017_PtNairob/lib_sc_rollup_node/metrics.mli => lib_smart_rollup_node/node_events.mli} (61%) delete mode 100644 src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml delete mode 100644 src/proto_alpha/lib_sc_rollup_node/metrics.ml diff --git a/manifest/main.ml b/manifest/main.ml index 66a77cd3f0d7..5f6c60c36079 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -4109,6 +4109,9 @@ let octez_smart_rollup_node_lib = octez_base_unix; octez_stdlib_unix |> open_; octez_crypto |> open_; + cohttp_lwt_unix; + octez_node_config; + prometheus_app; octez_injector |> open_; ] @@ -6084,8 +6087,6 @@ let hash = Protocol.hash octez_scoru_wasm; octez_scoru_wasm_fast; octez_crypto_dal |> if_ N.(number >= 016) |> open_; - prometheus_app |> if_ N.(number >= 016); - octez_node_config |> if_ N.(number >= 016); ] ~conflicts:[Conflicts.checkseum] in diff --git a/opam/octez-smart-rollup-node-PtMumbai.opam b/opam/octez-smart-rollup-node-PtMumbai.opam index e7d9d4600372..a1d4c63c959e 100644 --- a/opam/octez-smart-rollup-node-PtMumbai.opam +++ b/opam/octez-smart-rollup-node-PtMumbai.opam @@ -41,8 +41,6 @@ depends: [ "tezos-scoru-wasm" "tezos-scoru-wasm-fast" "tezos-crypto-dal" - "prometheus-app" { >= "1.2" } - "octez-node-config" "tezos-clic" "tezos-client-commands" ] diff --git a/opam/octez-smart-rollup-node-PtNairob.opam b/opam/octez-smart-rollup-node-PtNairob.opam index 2b966161c12d..49d78f713af9 100644 --- a/opam/octez-smart-rollup-node-PtNairob.opam +++ b/opam/octez-smart-rollup-node-PtNairob.opam @@ -41,8 +41,6 @@ depends: [ "tezos-scoru-wasm" "tezos-scoru-wasm-fast" "tezos-crypto-dal" - "prometheus-app" { >= "1.2" } - "octez-node-config" "tezos-clic" "tezos-client-commands" ] diff --git a/opam/octez-smart-rollup-node-alpha.opam b/opam/octez-smart-rollup-node-alpha.opam index 4175cf4fdcd0..839792240c0d 100644 --- a/opam/octez-smart-rollup-node-alpha.opam +++ b/opam/octez-smart-rollup-node-alpha.opam @@ -42,8 +42,6 @@ depends: [ "tezos-scoru-wasm" "tezos-scoru-wasm-fast" "tezos-crypto-dal" - "prometheus-app" { >= "1.2" } - "octez-node-config" "tezos-clic" "tezos-client-commands" ] diff --git a/opam/octez-smart-rollup-node.opam b/opam/octez-smart-rollup-node.opam index d3afa262e1ab..80114f0aa9e3 100644 --- a/opam/octez-smart-rollup-node.opam +++ b/opam/octez-smart-rollup-node.opam @@ -13,6 +13,9 @@ depends: [ "tezos-base" "tezos-stdlib-unix" "tezos-crypto" + "cohttp-lwt-unix" { >= "4.0.0" } + "octez-node-config" + "prometheus-app" { >= "1.2" } "octez-injector" ] build: [ diff --git a/src/lib_smart_rollup_node/dune b/src/lib_smart_rollup_node/dune index ccb262db751e..76f35fe2d3f9 100644 --- a/src/lib_smart_rollup_node/dune +++ b/src/lib_smart_rollup_node/dune @@ -10,6 +10,9 @@ tezos-base.unix tezos-stdlib-unix tezos-crypto + cohttp-lwt-unix + octez-node-config + prometheus-app octez-injector) (flags (:standard) diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml b/src/lib_smart_rollup_node/metrics.ml similarity index 99% rename from src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml rename to src/lib_smart_rollup_node/metrics.ml index ac3ec567d54b..8c2c08fd18a8 100644 --- a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.ml +++ b/src/lib_smart_rollup_node/metrics.ml @@ -91,7 +91,7 @@ let metrics_serve metrics_addr = List.iter_p (fun (addr, port) -> let host = Ipaddr.V6.to_string addr in - let*! () = Event.starting_metrics_server ~host ~port in + let*! () = Node_events.starting_metrics_server ~host ~port in let*! ctx = Conduit_lwt_unix.init ~src:host () in let ctx = Cohttp_lwt_unix.Net.init ~ctx () in let mode = `TCP (`Port port) in diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.mli b/src/lib_smart_rollup_node/metrics.mli similarity index 100% rename from src/proto_016_PtMumbai/lib_sc_rollup_node/metrics.mli rename to src/lib_smart_rollup_node/metrics.mli diff --git a/src/proto_alpha/lib_sc_rollup_node/metrics.mli b/src/lib_smart_rollup_node/node_events.ml similarity index 62% rename from src/proto_alpha/lib_sc_rollup_node/metrics.mli rename to src/lib_smart_rollup_node/node_events.ml index 8d2cc9fcb695..ec58ac949645 100644 --- a/src/proto_alpha/lib_sc_rollup_node/metrics.mli +++ b/src/lib_smart_rollup_node/node_events.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2022 Nomadic Labs, *) +(* Copyright (c) 2023 Functori, *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) @@ -23,40 +24,33 @@ (* *) (*****************************************************************************) -(** The collector registry for the rollup node metrics. *) -val sc_rollup_node_registry : Prometheus.CollectorRegistry.t +module Simple = struct + include Internal_event.Simple -(** [metrics_server metrics_addr] runs a server for the rollup metrics on [metrics_addr]. - The metrics are accessible thanks to a [/metrics] request. *) -val metrics_serve : string option -> (unit, tztrace) result Lwt.t + let section = ["smart_rollup_node"] -(** [print_csv_metrics ppf metrics] prints the [metrics] as CSV. *) -val print_csv_metrics : - Format.formatter -> 'a Prometheus.MetricFamilyMap.t -> unit + let starting_metrics_server = + declare_2 + ~section + ~name:"starting_metrics_server" + ~msg:"starting metrics server on {host}:{port}" + ~level:Notice + ("host", Data_encoding.string) + ("port", Data_encoding.uint16) -(** The node info metrics *) -module Info : sig - (** Initializes the metric for rollup info - with a the given arguments as label values *) - val init_rollup_node_info : - id:Tezos_crypto.Hashed.Smart_rollup_address.t -> - mode:Configuration.mode -> - genesis_level:int32 -> - pvm_kind:string -> - unit + let metrics_ended = + declare_1 + ~section + ~name:"metrics_ended" + ~level:Error + ~msg:"metrics server ended with error {stacktrace}" + ("stacktrace", Data_encoding.string) end -(** The metrics related to Inboxes *) -module Inbox : sig - (** The type of an inbox metrics *) - type t = {head_inbox_level : Prometheus.Gauge.t} +let starting_metrics_server ~host ~port = + Simple.(emit starting_metrics_server) (host, port) - (** The stats for the inboxes *) - module Stats : sig - (** Set the number of messages from the head *) - val set : is_internal:('a -> bool) -> 'a list -> unit - end +let metrics_ended error = Simple.(emit metrics_ended) error - (** The inboxes metrics *) - val metrics : t -end +let metrics_ended_dont_wait error = + Simple.(emit__dont_wait__use_with_care metrics_ended) error diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli b/src/lib_smart_rollup_node/node_events.mli similarity index 61% rename from src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli rename to src/lib_smart_rollup_node/node_events.mli index 8d2cc9fcb695..64fc3bb0ae75 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.mli +++ b/src/lib_smart_rollup_node/node_events.mli @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2022 Nomadic Labs, *) +(* Copyright (c) 2023 Functori, *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) @@ -23,40 +24,18 @@ (* *) (*****************************************************************************) -(** The collector registry for the rollup node metrics. *) -val sc_rollup_node_registry : Prometheus.CollectorRegistry.t +(** This module defines functions that emit the events used when the smart + rollup node is running. *) -(** [metrics_server metrics_addr] runs a server for the rollup metrics on [metrics_addr]. - The metrics are accessible thanks to a [/metrics] request. *) -val metrics_serve : string option -> (unit, tztrace) result Lwt.t +(** [starting_metrics_server ~metrics_addr ~metrics_port] emits the event + that the metrics server for the rollup node is starting. *) +val starting_metrics_server : host:string -> port:int -> unit Lwt.t -(** [print_csv_metrics ppf metrics] prints the [metrics] as CSV. *) -val print_csv_metrics : - Format.formatter -> 'a Prometheus.MetricFamilyMap.t -> unit +(** [metrics_ended error] emits the event that the metrics server + has ended with a failure. *) +val metrics_ended : string -> unit Lwt.t -(** The node info metrics *) -module Info : sig - (** Initializes the metric for rollup info - with a the given arguments as label values *) - val init_rollup_node_info : - id:Tezos_crypto.Hashed.Smart_rollup_address.t -> - mode:Configuration.mode -> - genesis_level:int32 -> - pvm_kind:string -> - unit -end - -(** The metrics related to Inboxes *) -module Inbox : sig - (** The type of an inbox metrics *) - type t = {head_inbox_level : Prometheus.Gauge.t} - - (** The stats for the inboxes *) - module Stats : sig - (** Set the number of messages from the head *) - val set : is_internal:('a -> bool) -> 'a list -> unit - end - - (** The inboxes metrics *) - val metrics : t -end +(** [metrics_ended error] emits the event that the metrics server + has ended with a failure. + (Doesn't wait for event to be emited. *) +val metrics_ended_dont_wait : string -> unit diff --git a/src/proto_016_PtMumbai/lib_sc_rollup_node/dune b/src/proto_016_PtMumbai/lib_sc_rollup_node/dune index a49d5c1cfe1e..caf1c6c92fdb 100644 --- a/src/proto_016_PtMumbai/lib_sc_rollup_node/dune +++ b/src/proto_016_PtMumbai/lib_sc_rollup_node/dune @@ -39,9 +39,7 @@ octez-smart-rollup-node tezos-scoru-wasm tezos-scoru-wasm-fast - tezos-crypto-dal - prometheus-app - octez-node-config) + tezos-crypto-dal) (flags (:standard) -open Tezos_base diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/dune b/src/proto_017_PtNairob/lib_sc_rollup_node/dune index 529517c67cfa..ec3c44bd3a8e 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/dune +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/dune @@ -39,9 +39,7 @@ octez-smart-rollup-node tezos-scoru-wasm tezos-scoru-wasm-fast - tezos-crypto-dal - prometheus-app - octez-node-config) + tezos-crypto-dal) (flags (:standard) -open Tezos_base diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml deleted file mode 100644 index ac3ec567d54b..000000000000 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/metrics.ml +++ /dev/null @@ -1,215 +0,0 @@ -(*****************************************************************************) -(* *) -(* Open Source License *) -(* Copyright (c) 2022 Nomadic Labs, *) -(* *) -(* Permission is hereby granted, free of charge, to any person obtaining a *) -(* copy of this software and associated documentation files (the "Software"),*) -(* to deal in the Software without restriction, including without limitation *) -(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) -(* and/or sell copies of the Software, and to permit persons to whom the *) -(* Software is furnished to do so, subject to the following conditions: *) -(* *) -(* The above copyright notice and this permission notice shall be included *) -(* in all copies or substantial portions of the Software. *) -(* *) -(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) -(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) -(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) -(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) -(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) -(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) -(* DEALINGS IN THE SOFTWARE. *) -(* *) -(*****************************************************************************) - -open Prometheus - -let sc_rollup_node_registry = CollectorRegistry.create () - -let namespace = Tezos_version.Node_version.namespace - -let subsystem = "sc_rollup_node" - -(** Registers a labeled counter in [sc_rollup_node_registry] *) -let v_labels_counter = - Counter.v_labels ~registry:sc_rollup_node_registry ~namespace ~subsystem - -(** Registers a gauge in [sc_rollup_node_registry] *) -let v_gauge = Gauge.v ~registry:sc_rollup_node_registry ~namespace ~subsystem - -(** Creates a metric with a given [collector] *) -let metric ~help ~name collector = - let info = - { - MetricInfo.name = - MetricName.v (String.concat "_" [namespace; subsystem; name]); - help; - metric_type = Gauge; - label_names = []; - } - in - let collect () = - LabelSetMap.singleton [] [Prometheus.Sample_set.sample (collector ())] - in - (info, collect) - -(** Registers a metric defined with [info] associated to its [collector] *) -let add_metric (info, collector) = - CollectorRegistry.(register sc_rollup_node_registry) info collector - -module Cohttp (Server : Cohttp_lwt.S.Server) = struct - let callback _conn req _body = - let open Cohttp in - let open Lwt_syntax in - let uri = Request.uri req in - match (Request.meth req, Uri.path uri) with - | `GET, "/metrics" -> - let* data = CollectorRegistry.(collect sc_rollup_node_registry) in - let body = - Fmt.to_to_string Prometheus_app.TextFormat_0_0_4.output data - in - let headers = - Header.init_with "Content-Type" "text/plain; version=0.0.4" - in - Server.respond_string ~status:`OK ~headers ~body () - | _ -> Server.respond_error ~status:`Bad_request ~body:"Bad request" () -end - -module Metrics_server = Cohttp (Cohttp_lwt_unix.Server) - -let metrics_serve metrics_addr = - let open Lwt_result_syntax in - match metrics_addr with - | Some metrics_addr -> - let* addrs = - Octez_node_config.Config_file.resolve_metrics_addrs - ~default_metrics_port:Configuration.default_metrics_port - metrics_addr - in - let*! () = - List.iter_p - (fun (addr, port) -> - let host = Ipaddr.V6.to_string addr in - let*! () = Event.starting_metrics_server ~host ~port in - let*! ctx = Conduit_lwt_unix.init ~src:host () in - let ctx = Cohttp_lwt_unix.Net.init ~ctx () in - let mode = `TCP (`Port port) in - let callback = Metrics_server.callback in - Cohttp_lwt_unix.Server.create - ~ctx - ~mode - (Cohttp_lwt_unix.Server.make ~callback ())) - addrs - in - return_unit - | None -> return_unit - -let metric_type_to_string = function - | Counter -> "Counter" - | Gauge -> "Gauge" - | Summary -> "Summary" - | Histogram -> "Histogram" - -let pp_label_names fmt = - Format.pp_print_list - ~pp_sep:(fun fmt () -> Format.fprintf fmt ";") - (fun fmt v -> Format.fprintf fmt "%a" LabelName.pp v) - fmt - -let print_csv_metrics ppf metrics = - let open Prometheus in - Format.fprintf ppf "@[Name,Type,Description,Labels" ; - List.iter - (fun (v, _) -> - Format.fprintf - ppf - "@,@[%a@],%s,\"%s\",%a" - MetricName.pp - v.MetricInfo.name - (metric_type_to_string v.MetricInfo.metric_type) - v.MetricInfo.help - pp_label_names - v.MetricInfo.label_names) - (Prometheus.MetricFamilyMap.to_list metrics) ; - Format.fprintf ppf "@]@." - -module Info = struct - open Tezos_version - - let node_general_info = - v_labels_counter - ~help:"General information on the node" - ~label_names:["version"; "commit_hash"; "commit_date"] - "node_info" - - let rollup_node_info = - let help = "Rollup node info" in - v_labels_counter - ~help - ~label_names:["rollup_address"; "mode"; "genesis_level"; "pvm_kind"] - "rollup_node_info" - - let init_rollup_node_info ~id ~mode ~genesis_level ~pvm_kind = - let id = Tezos_crypto.Hashed.Smart_rollup_address.to_b58check id in - let mode = Configuration.string_of_mode mode in - let genesis_level = Int32.to_string genesis_level in - ignore - @@ Counter.labels rollup_node_info [id; mode; genesis_level; pvm_kind] ; - () - - let () = - let version = Version.to_string Current_git_info.version in - let commit_hash = Current_git_info.commit_hash in - let commit_date = Current_git_info.committer_date in - let _ = - Counter.labels node_general_info [version; commit_hash; commit_date] - in - () -end - -module Inbox = struct - type t = {head_inbox_level : Gauge.t} - - module Stats = struct - let internal_messages_number = ref 0. - - let external_messages_number = ref 0. - - let zero () = - internal_messages_number := 0. ; - external_messages_number := 0. - - let set ~is_internal l = - zero () ; - List.iter - (fun x -> - let r = - if is_internal x then internal_messages_number - else external_messages_number - in - r := !r +. 1.) - l - end - - let metrics = - let head_inbox_level = - v_gauge ~help:"The level of the last inbox" "head_inbox_level" - in - let head_internal_messages_number = - metric - ~help:"The number of internal messages in head's inbox" - ~name:"head_inbox_internal_messages_number" - (fun () -> !Stats.internal_messages_number) - in - let head_external_messages_number = - metric - ~help:"The number of external messages in head's inbox" - ~name:"head_inbox_external_messages_number" - (fun () -> !Stats.external_messages_number) - in - List.iter - add_metric - [head_internal_messages_number; head_external_messages_number] ; - {head_inbox_level} -end diff --git a/src/proto_alpha/lib_sc_rollup_node/dune b/src/proto_alpha/lib_sc_rollup_node/dune index 553a49ac3e94..5a5f17218c49 100644 --- a/src/proto_alpha/lib_sc_rollup_node/dune +++ b/src/proto_alpha/lib_sc_rollup_node/dune @@ -40,9 +40,7 @@ octez-smart-rollup-node tezos-scoru-wasm tezos-scoru-wasm-fast - tezos-crypto-dal - prometheus-app - octez-node-config) + tezos-crypto-dal) (flags (:standard) -open Tezos_base diff --git a/src/proto_alpha/lib_sc_rollup_node/metrics.ml b/src/proto_alpha/lib_sc_rollup_node/metrics.ml deleted file mode 100644 index ac3ec567d54b..000000000000 --- a/src/proto_alpha/lib_sc_rollup_node/metrics.ml +++ /dev/null @@ -1,215 +0,0 @@ -(*****************************************************************************) -(* *) -(* Open Source License *) -(* Copyright (c) 2022 Nomadic Labs, *) -(* *) -(* Permission is hereby granted, free of charge, to any person obtaining a *) -(* copy of this software and associated documentation files (the "Software"),*) -(* to deal in the Software without restriction, including without limitation *) -(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *) -(* and/or sell copies of the Software, and to permit persons to whom the *) -(* Software is furnished to do so, subject to the following conditions: *) -(* *) -(* The above copyright notice and this permission notice shall be included *) -(* in all copies or substantial portions of the Software. *) -(* *) -(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*) -(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *) -(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *) -(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*) -(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *) -(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *) -(* DEALINGS IN THE SOFTWARE. *) -(* *) -(*****************************************************************************) - -open Prometheus - -let sc_rollup_node_registry = CollectorRegistry.create () - -let namespace = Tezos_version.Node_version.namespace - -let subsystem = "sc_rollup_node" - -(** Registers a labeled counter in [sc_rollup_node_registry] *) -let v_labels_counter = - Counter.v_labels ~registry:sc_rollup_node_registry ~namespace ~subsystem - -(** Registers a gauge in [sc_rollup_node_registry] *) -let v_gauge = Gauge.v ~registry:sc_rollup_node_registry ~namespace ~subsystem - -(** Creates a metric with a given [collector] *) -let metric ~help ~name collector = - let info = - { - MetricInfo.name = - MetricName.v (String.concat "_" [namespace; subsystem; name]); - help; - metric_type = Gauge; - label_names = []; - } - in - let collect () = - LabelSetMap.singleton [] [Prometheus.Sample_set.sample (collector ())] - in - (info, collect) - -(** Registers a metric defined with [info] associated to its [collector] *) -let add_metric (info, collector) = - CollectorRegistry.(register sc_rollup_node_registry) info collector - -module Cohttp (Server : Cohttp_lwt.S.Server) = struct - let callback _conn req _body = - let open Cohttp in - let open Lwt_syntax in - let uri = Request.uri req in - match (Request.meth req, Uri.path uri) with - | `GET, "/metrics" -> - let* data = CollectorRegistry.(collect sc_rollup_node_registry) in - let body = - Fmt.to_to_string Prometheus_app.TextFormat_0_0_4.output data - in - let headers = - Header.init_with "Content-Type" "text/plain; version=0.0.4" - in - Server.respond_string ~status:`OK ~headers ~body () - | _ -> Server.respond_error ~status:`Bad_request ~body:"Bad request" () -end - -module Metrics_server = Cohttp (Cohttp_lwt_unix.Server) - -let metrics_serve metrics_addr = - let open Lwt_result_syntax in - match metrics_addr with - | Some metrics_addr -> - let* addrs = - Octez_node_config.Config_file.resolve_metrics_addrs - ~default_metrics_port:Configuration.default_metrics_port - metrics_addr - in - let*! () = - List.iter_p - (fun (addr, port) -> - let host = Ipaddr.V6.to_string addr in - let*! () = Event.starting_metrics_server ~host ~port in - let*! ctx = Conduit_lwt_unix.init ~src:host () in - let ctx = Cohttp_lwt_unix.Net.init ~ctx () in - let mode = `TCP (`Port port) in - let callback = Metrics_server.callback in - Cohttp_lwt_unix.Server.create - ~ctx - ~mode - (Cohttp_lwt_unix.Server.make ~callback ())) - addrs - in - return_unit - | None -> return_unit - -let metric_type_to_string = function - | Counter -> "Counter" - | Gauge -> "Gauge" - | Summary -> "Summary" - | Histogram -> "Histogram" - -let pp_label_names fmt = - Format.pp_print_list - ~pp_sep:(fun fmt () -> Format.fprintf fmt ";") - (fun fmt v -> Format.fprintf fmt "%a" LabelName.pp v) - fmt - -let print_csv_metrics ppf metrics = - let open Prometheus in - Format.fprintf ppf "@[Name,Type,Description,Labels" ; - List.iter - (fun (v, _) -> - Format.fprintf - ppf - "@,@[%a@],%s,\"%s\",%a" - MetricName.pp - v.MetricInfo.name - (metric_type_to_string v.MetricInfo.metric_type) - v.MetricInfo.help - pp_label_names - v.MetricInfo.label_names) - (Prometheus.MetricFamilyMap.to_list metrics) ; - Format.fprintf ppf "@]@." - -module Info = struct - open Tezos_version - - let node_general_info = - v_labels_counter - ~help:"General information on the node" - ~label_names:["version"; "commit_hash"; "commit_date"] - "node_info" - - let rollup_node_info = - let help = "Rollup node info" in - v_labels_counter - ~help - ~label_names:["rollup_address"; "mode"; "genesis_level"; "pvm_kind"] - "rollup_node_info" - - let init_rollup_node_info ~id ~mode ~genesis_level ~pvm_kind = - let id = Tezos_crypto.Hashed.Smart_rollup_address.to_b58check id in - let mode = Configuration.string_of_mode mode in - let genesis_level = Int32.to_string genesis_level in - ignore - @@ Counter.labels rollup_node_info [id; mode; genesis_level; pvm_kind] ; - () - - let () = - let version = Version.to_string Current_git_info.version in - let commit_hash = Current_git_info.commit_hash in - let commit_date = Current_git_info.committer_date in - let _ = - Counter.labels node_general_info [version; commit_hash; commit_date] - in - () -end - -module Inbox = struct - type t = {head_inbox_level : Gauge.t} - - module Stats = struct - let internal_messages_number = ref 0. - - let external_messages_number = ref 0. - - let zero () = - internal_messages_number := 0. ; - external_messages_number := 0. - - let set ~is_internal l = - zero () ; - List.iter - (fun x -> - let r = - if is_internal x then internal_messages_number - else external_messages_number - in - r := !r +. 1.) - l - end - - let metrics = - let head_inbox_level = - v_gauge ~help:"The level of the last inbox" "head_inbox_level" - in - let head_internal_messages_number = - metric - ~help:"The number of internal messages in head's inbox" - ~name:"head_inbox_internal_messages_number" - (fun () -> !Stats.internal_messages_number) - in - let head_external_messages_number = - metric - ~help:"The number of external messages in head's inbox" - ~name:"head_inbox_external_messages_number" - (fun () -> !Stats.external_messages_number) - in - List.iter - add_metric - [head_internal_messages_number; head_external_messages_number] ; - {head_inbox_level} -end -- GitLab