@@ -22,6 +22,7 @@ use axum::{
2222use axum:: { serve, ServiceExt } ;
2323use build_info:: BuildInfo ;
2424use eventuals:: Eventual ;
25+ use prometheus:: TextEncoder ;
2526use reqwest:: StatusCode ;
2627use serde:: { de:: DeserializeOwned , Serialize } ;
2728use sqlx:: postgres:: PgPoolOptions ;
@@ -32,6 +33,7 @@ use tokio::net::TcpListener;
3233use tokio:: signal;
3334use tower_governor:: { governor:: GovernorConfigBuilder , GovernorLayer } ;
3435use tower_http:: { cors, cors:: CorsLayer , normalize_path:: NormalizePath , trace:: TraceLayer } ;
36+ use tracing:: error;
3537use tracing:: { info, info_span} ;
3638
3739use crate :: escrow_accounts:: EscrowAccounts ;
@@ -465,7 +467,21 @@ impl IndexerService {
465467 tokio:: spawn ( async move {
466468 let router = Router :: new ( ) . route (
467469 "/metrics" ,
468- get ( || async { prometheus_exporter:: encode_http_response ( ) } ) ,
470+ get ( || async {
471+ let metric_families = prometheus:: gather ( ) ;
472+ let encoder = TextEncoder :: new ( ) ;
473+
474+ match encoder. encode_to_string ( & metric_families) {
475+ Ok ( s) => ( StatusCode :: OK , s) ,
476+ Err ( e) => {
477+ error ! ( "Error encoding metrics: {}" , e) ;
478+ (
479+ StatusCode :: INTERNAL_SERVER_ERROR ,
480+ format ! ( "Error encoding metrics: {}" , e) ,
481+ )
482+ }
483+ }
484+ } ) ,
469485 ) ;
470486
471487 serve (
0 commit comments