feat(stats): add typed network stats response fields for bandwidth, domain activity, and protocol distribution

This commit is contained in:
2026-04-13 12:07:13 +00:00
parent f2d0a9ec1b
commit fa926eb10b
5 changed files with 17 additions and 8 deletions

View File

@@ -1,5 +1,11 @@
# Changelog
## 2026-04-13 - 13.15.0 - feat(stats)
add typed network stats response fields for bandwidth, domain activity, and protocol distribution
- extends the network stats request interface with top IP bandwidth, domain activity, and frontend/backend protocol distribution data
- updates app state to use a typed getNetworkStats request instead of casting the response to any
## 2026-04-13 - 13.14.0 - feat(network)
add bandwidth-ranked IP and domain activity metrics to network monitoring

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@serve.zone/dcrouter',
version: '13.14.0',
version: '13.15.0',
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
}

View File

@@ -180,5 +180,9 @@ export interface IReq_GetNetworkStats extends plugins.typedrequestInterfaces.imp
requestsPerSecond: number;
requestsTotal: number;
backends?: statsInterfaces.IBackendInfo[];
topIPsByBandwidth: Array<{ ip: string; count: number; bwIn: number; bwOut: number }>;
domainActivity: statsInterfaces.IDomainActivity[];
frontendProtocols?: statsInterfaces.IProtocolDistribution | null;
backendProtocols?: statsInterfaces.IProtocolDistribution | null;
};
}

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@serve.zone/dcrouter',
version: '13.14.0',
version: '13.15.0',
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
}

View File

@@ -522,14 +522,13 @@ export const fetchNetworkStatsAction = networkStatePart.createAction(async (stat
});
// Get network stats for throughput and IP data
const networkStatsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest(
'/typedrequest',
'getNetworkStats'
);
const networkStatsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_GetNetworkStats
>('/typedrequest', 'getNetworkStats');
const networkStatsResponse = await networkStatsRequest.fire({
identity: context.identity,
}) as any;
});
// Use the connections data for the connection list
// and network stats for throughput and IP analytics