more http handling

This commit is contained in:
Simon Cruanes 2024-01-18 21:34:47 -05:00
parent 9f9017f26a
commit 66ddee3522
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 16 additions and 0 deletions

View file

@ -104,3 +104,12 @@ let http_middleware (reg : Registry.t) : H.Middleware.t =
let code = response.code in let code = response.code in
if code < 200 || code >= 300 then Counter.incr c_err; if code < 200 || code >= 300 then Counter.incr c_err;
resp response) resp response)
let add_route_to_server (server : H.t) (reg : registry) : unit =
H.add_route_handler server H.Route.(exact "metrics" @/ return) @@ fun _req ->
let str = Registry.emit_str reg in
H.Response.make_string @@ Ok str
let instrument_server (server : H.t) reg : unit =
H.add_middleware ~stage:(`Stage 1) server (http_middleware global);
add_route_to_server server reg

View file

@ -49,3 +49,10 @@ end
*) *)
val http_middleware : Registry.t -> Tiny_httpd.Middleware.t val http_middleware : Registry.t -> Tiny_httpd.Middleware.t
(** Middleware to get basic metrics about HTTP requests *)
val add_route_to_server : Tiny_httpd.t -> Registry.t -> unit
(** Add a "/metrics" route to the server *)
val instrument_server : Tiny_httpd.t -> Registry.t -> unit
(** Add middleware and route *)