diff --git a/crates/net/network/src/metrics.rs b/crates/net/network/src/metrics.rs index 77a61484c2..b73d86e242 100644 --- a/crates/net/network/src/metrics.rs +++ b/crates/net/network/src/metrics.rs @@ -32,3 +32,11 @@ pub struct NetworkMetrics { /// Number of invalid/malformed messages received from peers pub(crate) invalid_messages_received: Counter, } + +/// Metrics for the TransactionManager +#[derive(Metrics)] +#[metrics(scope = "network")] +pub struct TransactionsManagerMetrics { + /// Total number of propagated transactions + pub(crate) propagated_transactions: Counter, +} diff --git a/crates/net/network/src/transactions.rs b/crates/net/network/src/transactions.rs index 1008a92502..582a3cf58e 100644 --- a/crates/net/network/src/transactions.rs +++ b/crates/net/network/src/transactions.rs @@ -4,6 +4,7 @@ use crate::{ cache::LruCache, manager::NetworkEvent, message::{PeerRequest, PeerRequestSender}, + metrics::TransactionsManagerMetrics, network::NetworkHandleMessage, peers::ReputationChangeKind, NetworkHandle, @@ -101,6 +102,8 @@ pub struct TransactionsManager { pending_transactions: ReceiverStream, /// Incoming events from the [`NetworkManager`](crate::NetworkManager). transaction_events: UnboundedReceiverStream, + /// TransactionsManager metrics + metrics: TransactionsManagerMetrics, } impl TransactionsManager { @@ -130,6 +133,7 @@ impl TransactionsManager { command_rx: UnboundedReceiverStream::new(command_rx), pending_transactions: ReceiverStream::new(pending), transaction_events: UnboundedReceiverStream::new(from_network), + metrics: Default::default(), } } } @@ -235,6 +239,9 @@ where } } + // Update propagated transactions metrics + self.metrics.propagated_transactions.increment(propagated.0.len() as u64); + propagated } diff --git a/docs/design/metrics.md b/docs/design/metrics.md index 8c22b1ac86..a0b9f6ad3d 100644 --- a/docs/design/metrics.md +++ b/docs/design/metrics.md @@ -89,6 +89,7 @@ This list may be non-exhaustive. - `network.total_incoming_connections`: Total number of incoming connections handled - `network.total_outgoing_connections`: Total number of outgoing connections established - `network.invalid_messages_received`: Number of invalid/malformed messages received from peers +- `network.propagated_transactions`: Total number of propagated transactions [metrics]: https://docs.rs/metrics [metrics.Key]: https://docs.rs/metrics/latest/metrics/struct.Key.html