mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-02 17:15:43 +00:00
feat(stats): add by-instance traffic metrics (#2011)
This commit is contained in:
@@ -13,6 +13,7 @@ use crate::{
|
||||
peers::peer_map::PeerMap,
|
||||
peers::peer_session::{PeerSession, PeerSessionAction, PeerSessionStore, SessionKey},
|
||||
peers::route_trait::NextHopPolicy,
|
||||
peers::traffic_metrics::AggregateTrafficMetrics,
|
||||
proto::peer_rpc::{PeerConnSessionActionPb, RelayNoiseMsg1Pb, RelayNoiseMsg2Pb},
|
||||
tunnel::packet_def::{PacketType, ZCPacket},
|
||||
};
|
||||
@@ -53,6 +54,7 @@ pub struct RelayPeerMap {
|
||||
pub(crate) pending_packets: DashMap<PeerId, Vec<(ZCPacket, NextHopPolicy)>>,
|
||||
|
||||
is_secure_mode_enabled: bool,
|
||||
control_metrics: AggregateTrafficMetrics,
|
||||
}
|
||||
|
||||
impl RelayPeerMap {
|
||||
@@ -69,6 +71,10 @@ impl RelayPeerMap {
|
||||
.map(|cfg| cfg.enabled)
|
||||
.unwrap_or(false);
|
||||
Arc::new(Self {
|
||||
control_metrics: AggregateTrafficMetrics::control(
|
||||
global_ctx.stats_manager().clone(),
|
||||
global_ctx.get_network_name(),
|
||||
),
|
||||
peer_map,
|
||||
foreign_network_client,
|
||||
global_ctx,
|
||||
@@ -131,7 +137,10 @@ impl RelayPeerMap {
|
||||
) -> Result<(), Error> {
|
||||
let mut pkt = ZCPacket::new_with_payload(&payload);
|
||||
pkt.fill_peer_manager_hdr(self.my_peer_id, dst_peer_id, packet_type as u8);
|
||||
self.send_via_next_hop(pkt, dst_peer_id, policy).await
|
||||
let pkt_len = pkt.buf_len() as u64;
|
||||
self.send_via_next_hop(pkt, dst_peer_id, policy).await?;
|
||||
self.control_metrics.record_tx(pkt_len);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn send_via_next_hop(
|
||||
@@ -467,6 +476,7 @@ impl RelayPeerMap {
|
||||
.peer_manager_header()
|
||||
.ok_or_else(|| Error::RouteError(Some("packet without header".to_string())))?;
|
||||
let src_peer_id = hdr.from_peer_id.get();
|
||||
self.control_metrics.record_rx(packet.buf_len() as u64);
|
||||
match hdr.packet_type {
|
||||
x if x == PacketType::RelayHandshake as u8 => {
|
||||
tracing::debug!("handle_relay_msg1 from {:?}", src_peer_id);
|
||||
|
||||
Reference in New Issue
Block a user