@@ -6,7 +6,6 @@ use axum::{
66} ;
77use color_eyre:: eyre:: Context ;
88use hyper:: Method ;
9- use metrics_exporter_prometheus:: PrometheusHandle ;
109use tokio:: net:: TcpListener ;
1110use tower_http:: {
1211 catch_panic:: CatchPanicLayer ,
@@ -38,11 +37,7 @@ pub struct HttpServer {
3837}
3938
4039impl HttpServer {
41- pub async fn new (
42- config : & Config ,
43- state : AppState ,
44- metrics_handle : Option < PrometheusHandle > ,
45- ) -> color_eyre:: Result < Self > {
40+ pub async fn new ( config : & Config , state : AppState ) -> color_eyre:: Result < Self > {
4641 let cors = CorsLayer :: new ( )
4742 . allow_methods ( [ Method :: GET , Method :: POST , Method :: OPTIONS ] )
4843 . allow_origin ( Any )
@@ -58,16 +53,7 @@ impl HttpServer {
5853 . layer ( cors)
5954 . with_state ( state) ;
6055
61- if config. server . enable_metrics {
62- if let Some ( handle) = metrics_handle {
63- tracing:: info!( "StatusList Monitor: ENABLED (Metrics at /metrics)" ) ;
64- router = router. route ( "/metrics" , get ( move || metrics_handler ( handle) ) ) ;
65- } else {
66- tracing:: warn!( "Metrics enabled in config but no handle provided" ) ;
67- }
68- } else {
69- tracing:: info!( "StatusList Monitor: DISABLED" ) ;
70- }
56+ router = metrics ( router, config) ;
7157
7258 let listener = TcpListener :: bind ( format ! ( "{}:{}" , config. server. host, config. server. port) )
7359 . await
@@ -95,3 +81,22 @@ fn status_list_routes(state: AppState) -> Router<AppState> {
9581 . merge ( protected_routes)
9682 . route ( "/{list_id}" , get ( get_status_list) )
9783}
84+
85+ fn metrics ( router : Router , config : & Config ) -> Router {
86+ if config. server . enable_metrics {
87+ match crate :: utils:: metrics:: setup_metrics ( ) {
88+ Ok ( handle) => {
89+ crate :: utils:: metrics:: start_metrics_collector ( ) ;
90+ tracing:: info!( "StatusList Monitor: ENABLED (Metrics at /metrics)" ) ;
91+ router. route ( "/metrics" , get ( move || metrics_handler ( handle) ) )
92+ }
93+ Err ( e) => {
94+ tracing:: warn!( "Failed to setup metrics: {e}" ) ;
95+ router
96+ }
97+ }
98+ } else {
99+ tracing:: info!( "StatusList Monitor: DISABLED" ) ;
100+ router
101+ }
102+ }
0 commit comments