Router: Add synthetic stats for client and expl. build success rate

derived from event counts of existing stats
requires full stats setting
This commit is contained in:
zzz
2024-06-04 08:31:32 -04:00
parent aedcd02506
commit a2dd0a756d
@@ -44,6 +44,8 @@ public class CoalesceStatsEvent implements SimpleTimer.TimedEvent {
sm.createRateStat("router.integratedPeers", "Known integrated (floodfill) peers", "NetworkDatabase", new long[] { 60*1000 });
sm.createRateStat("router.knownPeers", "Known peers", "NetworkDatabase", new long[] { 60*1000 });
sm.createRequiredRateStat("router.tunnelBacklog", _x("Size of tunnel acceptor backlog"), "Tunnels", new long[] { 60*60*1000 });
sm.createRateStat("tunnel.buildClientSuccessRate", "Percent success", "Tunnels", new long[] { 60*1000 });
sm.createRateStat("tunnel.buildExploratorySuccessRate", "Percent success", "Tunnels", new long[] { 60*1000 });
_maxMemory = Runtime.getRuntime().maxMemory();
String legend = "(Bytes)";
if (_maxMemory < Long.MAX_VALUE)
@@ -104,6 +106,38 @@ public class CoalesceStatsEvent implements SimpleTimer.TimedEvent {
sm.addRateData("router.integratedPeers", integrated);
sm.addRateData("router.knownPeers", _ctx.netDb().getKnownRouters());
RateStat s1 = sm.getRate("tunnel.buildExploratorySuccess");
RateStat s2 = sm.getRate("tunnel.buildExploratoryExpire");
RateStat s3 = sm.getRate("tunnel.buildExploratoryReject");
if (s1 != null && s2 != null && s3 != null) {
Rate r1 = s1.getRate(10*60*1000);
Rate r2 = s2.getRate(10*60*1000);
Rate r3 = s3.getRate(10*60*1000);
if (r1 != null && r2 != null && r3 != null) {
long s = r1.getCurrentEventCount() + r1.getLastEventCount();
long t = s + r2.getCurrentEventCount() + r2.getLastEventCount() +
r3.getCurrentEventCount() + r3.getLastEventCount();
if (t > 0)
sm.addRateData("tunnel.buildExploratorySuccessRate", 100 * s / t, 60*1000);
}
}
s1 = sm.getRate("tunnel.buildClientSuccess");
s2 = sm.getRate("tunnel.buildClientExpire");
s3 = sm.getRate("tunnel.buildClientReject");
if (s1 != null && s2 != null && s3 != null) {
Rate r1 = s1.getRate(10*60*1000);
Rate r2 = s2.getRate(10*60*1000);
Rate r3 = s3.getRate(10*60*1000);
if (r1 != null && r2 != null && r3 != null) {
long s = r1.getCurrentEventCount() + r1.getLastEventCount();
long t = s + r2.getCurrentEventCount() + r2.getLastEventCount() +
r3.getCurrentEventCount() + r3.getLastEventCount();
if (t > 0)
sm.addRateData("tunnel.buildClientSuccessRate", 100 * s / t, 60*1000);
}
}
}
}