diff --git a/connector-mango/src/main.rs b/connector-mango/src/main.rs index b65316e..7215689 100644 --- a/connector-mango/src/main.rs +++ b/connector-mango/src/main.rs @@ -31,7 +31,7 @@ async fn main() -> anyhow::Result<()> { Arc::new(mango::MangoCacheTable {}), ]; - let metrics_tx = metrics::start(config.metrics); + let metrics_tx = metrics::start(config.metrics, "connector-mango".into()); let (account_write_queue_sender, slot_queue_sender) = postgres_target::init(&config.postgres_target, account_tables, metrics_tx.clone()).await?; diff --git a/connector-raw/src/main.rs b/connector-raw/src/main.rs index c741e05..9ec4e84 100644 --- a/connector-raw/src/main.rs +++ b/connector-raw/src/main.rs @@ -22,7 +22,7 @@ async fn main() -> anyhow::Result<()> { solana_logger::setup_with_default("info"); info!("startup"); - let metrics_tx = metrics::start(config.metrics); + let metrics_tx = metrics::start(config.metrics, "connector-raw".into()); let account_tables: AccountTables = vec![Arc::new(RawAccountTable {})]; diff --git a/lib/src/fill_event_filter.rs b/lib/src/fill_event_filter.rs index f0abd46..31cbf27 100644 --- a/lib/src/fill_event_filter.rs +++ b/lib/src/fill_event_filter.rs @@ -247,11 +247,11 @@ pub async fn init( let metrics_sender = metrics_sender.clone(); let mut metric_events_new = - metrics_sender.register_u64("fills_feed_events_new".into(), MetricType::Gauge); + metrics_sender.register_u64("fills_feed_events_new".into(), MetricType::Counter); let mut metric_events_change = - metrics_sender.register_u64("fills_feed_events_change".into(), MetricType::Gauge); + metrics_sender.register_u64("fills_feed_events_change".into(), MetricType::Counter); let mut metrics_events_drop = - metrics_sender.register_u64("fills_feed_events_drop".into(), MetricType::Gauge); + metrics_sender.register_u64("fills_feed_events_drop".into(), MetricType::Counter); // The actual message may want to also contain a retry count, if it self-reinserts on failure? let (account_write_queue_sender, account_write_queue_receiver) = diff --git a/lib/src/metrics.rs b/lib/src/metrics.rs index c812c5a..0b27196 100644 --- a/lib/src/metrics.rs +++ b/lib/src/metrics.rs @@ -112,6 +112,7 @@ impl MetricBool { #[derive(Clone)] pub struct Metrics { registry: Arc>>, + labels: HashMap, } impl Metrics { @@ -201,8 +202,8 @@ impl Metrics { async fn handle_prometheus_poll(metrics: Metrics) -> Result { debug!("handle_prometheus_poll"); - let labels = HashMap::from([("process", "fills")]); - let label_strings_vec: Vec = labels + let label_strings_vec: Vec = metrics + .labels .iter() .map(|(name, value)| format!("{}=\"{}\"", name, value)) .collect(); @@ -231,13 +232,13 @@ pub fn with_metrics( warp::any().map(move || metrics.clone()) } -pub fn start(config: MetricsConfig) -> Metrics { +pub fn start(config: MetricsConfig, process_name: String) -> Metrics { let mut write_interval = time::interval(time::Duration::from_secs(60)); let registry = Arc::new(RwLock::new(HashMap::::new())); let registry_c = Arc::clone(®istry); - - let metrics_tx = Metrics { registry }; + let labels = HashMap::from([(String::from("process"), process_name)]); + let metrics_tx = Metrics { registry, labels }; let metrics_route = warp::path!("metrics") .and(with_metrics(metrics_tx.clone())) .and_then(handle_prometheus_poll); diff --git a/service-mango-fills/src/main.rs b/service-mango-fills/src/main.rs index 59d9033..91492c3 100644 --- a/service-mango-fills/src/main.rs +++ b/service-mango-fills/src/main.rs @@ -103,13 +103,13 @@ async fn main() -> anyhow::Result<()> { solana_logger::setup_with_default("info"); - let metrics_tx = metrics::start(config.metrics); + let metrics_tx = metrics::start(config.metrics, "fills".into()); let metrics_opened_connections = - metrics_tx.register_u64("fills_feed_opened_connections".into(), MetricType::Gauge); + metrics_tx.register_u64("fills_feed_opened_connections".into(), MetricType::Counter); let metrics_closed_connections = - metrics_tx.register_u64("fills_feed_closed_connections".into(), MetricType::Gauge); + metrics_tx.register_u64("fills_feed_closed_connections".into(), MetricType::Counter); let (account_write_queue_sender, slot_queue_sender, fill_receiver) = fill_event_filter::init(config.markets.clone(), metrics_tx.clone()).await?; diff --git a/service-mango-pnl/src/main.rs b/service-mango-pnl/src/main.rs index c4246fc..e6d068c 100644 --- a/service-mango-pnl/src/main.rs +++ b/service-mango-pnl/src/main.rs @@ -198,7 +198,7 @@ async fn main() -> anyhow::Result<()> { solana_logger::setup_with_default("info"); info!("startup"); - let metrics_tx = metrics::start(config.metrics); + let metrics_tx = metrics::start(config.metrics, "pnl".into()); let chain_data = Arc::new(RwLock::new(ChainData::new())); let pnl_data = Arc::new(RwLock::new(PnlData::new()));