diff --git a/command-line/albatross_cli.ml b/command-line/albatross_cli.ml index 25d9982..40fc42a 100644 --- a/command-line/albatross_cli.ml +++ b/command-line/albatross_cli.ml @@ -3,23 +3,6 @@ open Astring open Vmm_core -let conn_metrics kind = - let s = ref (0, 0) in - let open Metrics in - let doc = "connection statistics" in - let data () = - Data.v [ - int "active" (fst !s) ; - int "total" (snd !s) ; - ] in - let tags = Tags.string "kind" in - let src = Src.v ~doc ~tags:Tags.[ tags ] ~data "connections" in - (fun action -> - (match action with - | `Open -> s := (succ (fst !s), succ (snd !s)) - | `Close -> s := (pred (fst !s), snd !s)); - Metrics.add src (fun x -> x kind) (fun d -> d ())) - open Lwt.Infix let process = diff --git a/daemon/albatross_console.ml b/daemon/albatross_console.ml index f3e1411..9ac154e 100644 --- a/daemon/albatross_console.ml +++ b/daemon/albatross_console.ml @@ -66,7 +66,7 @@ let open_fifo name = let t = ref String.Map.empty -let fifos = Albatross_cli.conn_metrics "fifo" +let fifos = Vmm_core.conn_metrics "fifo" let add_fifo id = let name = Vmm_core.Name.to_string id in @@ -159,7 +159,7 @@ let handle s addr = Vmm_lwt.safe_close s >|= fun () -> Logs.warn (fun m -> m "disconnected") -let m = Albatross_cli.conn_metrics "unix" +let m = Vmm_core.conn_metrics "unix" let jump _ influx = Sys.(set_signal sigpipe Signal_ignore) ; diff --git a/daemon/albatross_log.ml b/daemon/albatross_log.ml index 28944d9..fbd4893 100644 --- a/daemon/albatross_log.ml +++ b/daemon/albatross_log.ml @@ -159,7 +159,7 @@ let handle mvar ring s addr = end >>= fun () -> Vmm_lwt.safe_close s -let m = Albatross_cli.conn_metrics "unix" +let m = Vmm_core.conn_metrics "unix" let jump _ file influx = Sys.(set_signal sigpipe Signal_ignore) ; diff --git a/src/vmm_core.ml b/src/vmm_core.ml index c00fb8b..d5a7ba5 100644 --- a/src/vmm_core.ml +++ b/src/vmm_core.ml @@ -1,5 +1,22 @@ (* (c) 2017, 2018 Hannes Mehnert, all rights reserved *) +let conn_metrics kind = + let s = ref (0, 0) in + let open Metrics in + let doc = "connection statistics" in + let data () = + Data.v [ + int "active" (fst !s) ; + int "total" (snd !s) ; + ] in + let tags = Tags.string "kind" in + let src = Src.v ~doc ~tags:Tags.[ tags ] ~data "connections" in + (fun action -> + (match action with + | `Open -> s := (succ (fst !s), succ (snd !s)) + | `Close -> s := (pred (fst !s), snd !s)); + Metrics.add src (fun x -> x kind) (fun d -> d ())) + open Astring let tmpdir = Fpath.(v "/var" / "run" / "albatross") diff --git a/src/vmm_core.mli b/src/vmm_core.mli index 3cb9b0d..cd72785 100644 --- a/src/vmm_core.mli +++ b/src/vmm_core.mli @@ -1,5 +1,7 @@ (* (c) 2018 Hannes Mehnert, all rights reserved *) +val conn_metrics : string -> [ `Close | `Open ] -> unit + type service = [ `Console | `Log | `Stats | `Vmmd ] val socket_path : service -> string diff --git a/stats/albatross_stats.ml b/stats/albatross_stats.ml index a940c42..3f228ad 100644 --- a/stats/albatross_stats.ml +++ b/stats/albatross_stats.ml @@ -64,7 +64,7 @@ let timer () = Vmm_lwt.safe_close s) outs -let m = Albatross_cli.conn_metrics "unix" +let m = Vmm_core.conn_metrics "unix" let jump _ interval influx = Sys.(set_signal sigpipe Signal_ignore) ; diff --git a/stats/albatross_stats_pure.ml b/stats/albatross_stats_pure.ml index c228dfa..46002d8 100644 --- a/stats/albatross_stats_pure.ml +++ b/stats/albatross_stats_pure.ml @@ -46,7 +46,7 @@ let rec wrap f arg = Logs.err (fun m -> m "exception %s" (Printexc.to_string e)) ; None -let vmmapi = Albatross_cli.conn_metrics "vmmapi" +let vmmapi = conn_metrics "vmmapi" let remove_vmid t vmid = Logs.info (fun m -> m "removing vmid %a" Vmm_core.Name.pp vmid) ; diff --git a/stats/dune b/stats/dune index d11d535..4879890 100644 --- a/stats/dune +++ b/stats/dune @@ -7,7 +7,7 @@ let () = (library (name albatross_stats) (public_name albatross.stats) - (libraries albatross albatross.cli) + (libraries albatross) (wrapped false) (c_names albatross_stats_stubs) (modules albatross_stats_pure))