@@ -7,28 +7,33 @@ use axum::{
77 response:: { IntoResponse , Response } ,
88 routing:: get,
99} ;
10- use cb_common:: config:: ModuleMetricsConfig ;
10+ use cb_common:: {
11+ config:: ModuleMetricsConfig ,
12+ constants:: { COMMIT_BOOST_COMMIT , COMMIT_BOOST_VERSION } ,
13+ types:: Chain ,
14+ } ;
1115use eyre:: bail;
12- use prometheus:: { Encoder , Registry , TextEncoder } ;
16+ use prometheus:: { Encoder , IntGauge , Opts , Registry , TextEncoder } ;
1317use tokio:: net:: TcpListener ;
1418use tracing:: { error, info, trace, warn} ;
1519
1620pub struct MetricsProvider {
21+ network : Chain ,
1722 config : ModuleMetricsConfig ,
1823 registry : Registry ,
1924}
2025
2126impl MetricsProvider {
22- pub fn new ( config : ModuleMetricsConfig , registry : Registry ) -> Self {
23- MetricsProvider { config, registry }
27+ pub fn new ( network : Chain , config : ModuleMetricsConfig , registry : Registry ) -> Self {
28+ MetricsProvider { network , config, registry }
2429 }
2530
26- pub fn from_registry ( registry : Registry ) -> eyre:: Result < Option < Self > > {
27- Ok ( ModuleMetricsConfig :: load_from_env ( ) ?. map ( |config| MetricsProvider { config, registry } ) )
31+ pub fn from_registry ( network : Chain , registry : Registry ) -> eyre:: Result < Option < Self > > {
32+ Ok ( ModuleMetricsConfig :: load_from_env ( ) ?. map ( |config| Self :: new ( network , config, registry) ) )
2833 }
2934
30- pub fn load_and_run ( registry : Registry ) -> eyre:: Result < ( ) > {
31- if let Some ( provider) = MetricsProvider :: from_registry ( registry) ? {
35+ pub fn load_and_run ( network : Chain , registry : Registry ) -> eyre:: Result < ( ) > {
36+ if let Some ( provider) = MetricsProvider :: from_registry ( network , registry) ? {
3237 tokio:: spawn ( async move {
3338 if let Err ( err) = provider. run ( ) . await {
3439 error ! ( "Metrics server error: {:?}" , err) ;
@@ -44,6 +49,15 @@ impl MetricsProvider {
4449 pub async fn run ( self ) -> eyre:: Result < ( ) > {
4550 info ! ( "Starting metrics server on port {}" , self . config. server_port) ;
4651
52+ let opts = Opts :: new ( "info" , "Commit Boost info" )
53+ . const_label ( "version" , COMMIT_BOOST_VERSION )
54+ . const_label ( "commit" , COMMIT_BOOST_COMMIT )
55+ . const_label ( "network" , self . network . to_string ( ) ) ;
56+ let info = IntGauge :: with_opts ( opts) . unwrap ( ) ;
57+ info. set ( 1 ) ;
58+
59+ self . registry . register ( Box :: new ( info) ) . unwrap ( ) ;
60+
4761 let router = axum:: Router :: new ( )
4862 . route ( "/metrics" , get ( handle_metrics) )
4963 . route ( "/status" , get ( handle_status) )
0 commit comments