feat(sequencer): add possibility to disable metrics

This commit is contained in:
Daniil Polyakov 2026-08-03 23:43:54 +03:00
parent 8bbce62290
commit cd835bd0c9
4 changed files with 30 additions and 21 deletions

View File

@ -66,7 +66,7 @@ pub struct SequencerConfig {
pub cross_zone: Option<CrossZoneConfig>,
/// Address the Prometheus metrics exporter binds to.
#[serde(default = "default_metrics_address")]
pub metrics_address: SocketAddr,
pub metrics_address: Option<SocketAddr>,
}
#[derive(Clone, Serialize, Deserialize)]
@ -97,6 +97,7 @@ const fn default_max_block_size() -> ByteSize {
ByteSize::mib(1)
}
const fn default_metrics_address() -> SocketAddr {
SequencerConfig::DEFAULT_METRICS_ADDRESS
#[expect(clippy::unnecessary_wraps, reason = "Required by serde")]
const fn default_metrics_address() -> Option<SocketAddr> {
Some(SequencerConfig::DEFAULT_METRICS_ADDRESS)
}

View File

@ -90,7 +90,7 @@ fn setup_sequencer_config() -> SequencerConfig {
retry_pending_blocks_timeout: Duration::from_mins(4),
genesis: vec![],
cross_zone: None,
metrics_address: SequencerConfig::DEFAULT_METRICS_ADDRESS,
metrics_address: None,
}
}

View File

@ -39,27 +39,18 @@ struct Args {
async fn main() -> Result<()> {
env_logger::init();
let Args {
config_path,
port,
listen_address,
home,
metrics_address,
} = Args::parse();
let args = Args::parse();
let cancellation_token = listen_for_shutdown_signal();
let mut config = sequencer_service::SequencerConfig::from_path(&config_path)?;
if let Some(home) = home {
config.home = home;
}
if let Some(metrics_address) = metrics_address {
config.metrics_address = metrics_address;
}
let mut config = sequencer_service::SequencerConfig::from_path(&args.config_path)?;
apply_config_overrides(&args, &mut config);
install_prometheus_recorder(config.metrics_address)?;
if let Some(metrics_address) = config.metrics_address {
install_prometheus_recorder(metrics_address)?;
}
let mut sequencer_handle =
sequencer_service::run(config, SocketAddr::new(listen_address, port)).await?;
sequencer_service::run(config, SocketAddr::new(args.listen_address, args.port)).await?;
tokio::select! {
() = cancellation_token.cancelled() => {
@ -82,6 +73,23 @@ async fn main() -> Result<()> {
Ok(())
}
fn apply_config_overrides(args: &Args, config: &mut sequencer_service::SequencerConfig) {
let Args {
home,
metrics_address,
config_path: _,
port: _,
listen_address: _,
} = args;
if let Some(home) = home {
config.home.clone_from(home);
}
if let Some(metrics_address) = metrics_address {
config.metrics_address = Some(*metrics_address);
}
}
/// Installs the recorder on `metrics_address`.
fn install_prometheus_recorder(metrics_address: SocketAddr) -> Result<()> {
/// Ladder for `*_seconds` histograms, densest across the 1100 ms band where

View File

@ -110,7 +110,7 @@ pub fn sequencer_config(
auth: None,
},
cross_zone,
metrics_address: SequencerConfig::DEFAULT_METRICS_ADDRESS,
metrics_address: Some(SequencerConfig::DEFAULT_METRICS_ADDRESS),
})
}