···
use anyhow::{bail, Result};
use clap::{Parser, ValueEnum};
use metrics_exporter_prometheus::PrometheusBuilder;
use std::sync::{atomic::AtomicU32, Arc};
···
#[command(version, about, long_about = None)]
/// Jetstream server to connect to (exclusive with --fixture). Provide either a wss:// URL, or a shorhand value:
/// 'us-east-1', 'us-east-2', 'us-west-1', or 'us-west-2'
···
let stream = jetstream_url(&args.jetstream);
println!("using jetstream server {stream:?}...",);
let stay_alive = CancellationToken::new();
-
StorageBackend::Memory => run(MemStorage::new(), fixture, None, stream, stay_alive),
#[cfg(feature = "rocks")]
StorageBackend::Rocks => {
let storage_dir = args.data.clone().unwrap_or("rocks.test".into());
···
rocks.start_backup(backup_dir, auto_backup, stay_alive.clone())?;
println!("rocks ready.");
-
run(rocks, fixture, args.data, stream, stay_alive)
···
fixture: Option<PathBuf>,
data_dir: Option<PathBuf>,
stay_alive: CancellationToken,
···
-
install_metrics_server()?;
-
serve(readable, "0.0.0.0:6789", staying_alive).await
···
-
fn install_metrics_server() -> Result<()> {
println!("installing metrics server...");
-
let host = [0, 0, 0, 0];
.set_quantiles(&[0.5, 0.9, 0.99, 1.0])?
.set_bucket_duration(time::Duration::from_secs(30))?
.set_bucket_count(NonZero::new(10).unwrap()) // count * duration = 5 mins. stuff doesn't happen that fast here.
.set_enable_unit_suffix(true)
-
.with_http_listener((host, port))
-
"metrics server installed! listening on http://{}.{}.{}.{}:{port}",
-
host[0], host[1], host[2], host[3]
···
use anyhow::{bail, Result};
use clap::{Parser, ValueEnum};
use metrics_exporter_prometheus::PrometheusBuilder;
+
use std::net::SocketAddr;
use std::sync::{atomic::AtomicU32, Arc};
···
#[command(version, about, long_about = None)]
+
/// constellation server's listen address
+
#[clap(default_value = "0.0.0.0:6789")]
+
/// metrics server's listen address
+
#[clap(default_value = "0.0.0.0:8765")]
+
bind_metrics: SocketAddr,
/// Jetstream server to connect to (exclusive with --fixture). Provide either a wss:// URL, or a shorhand value:
/// 'us-east-1', 'us-east-2', 'us-west-1', or 'us-west-2'
···
let stream = jetstream_url(&args.jetstream);
println!("using jetstream server {stream:?}...",);
+
let metrics_bind = args.bind_metrics;
let stay_alive = CancellationToken::new();
+
StorageBackend::Memory => run(
#[cfg(feature = "rocks")]
StorageBackend::Rocks => {
let storage_dir = args.data.clone().unwrap_or("rocks.test".into());
···
rocks.start_backup(backup_dir, auto_backup, stay_alive.clone())?;
println!("rocks ready.");
···
fixture: Option<PathBuf>,
data_dir: Option<PathBuf>,
+
metrics_bind: SocketAddr,
stay_alive: CancellationToken,
···
+
install_metrics_server(metrics_bind)?;
+
serve(readable, bind, staying_alive).await
···
+
fn install_metrics_server(metrics_bind: SocketAddr) -> Result<()> {
println!("installing metrics server...");
.set_quantiles(&[0.5, 0.9, 0.99, 1.0])?
.set_bucket_duration(time::Duration::from_secs(30))?
.set_bucket_count(NonZero::new(10).unwrap()) // count * duration = 5 mins. stuff doesn't happen that fast here.
.set_enable_unit_suffix(true)
+
.with_http_listener(metrics_bind)
+
println!("metrics server installed! listening at {metrics_bind:?}");