Add status page enhancements with new metrics and footer
- Add GC statistics (run count, total/last pause, heap usage) - Add BGP peer count tracking from RIS Live OPEN/NOTIFICATION messages - Add route churn rate metric (announcements + withdrawals per second) - Add announcement and withdrawal counters - Add footer with attribution, license, and git revision - Embed git revision at build time via ldflags - Update HTML template to display all new metrics
This commit is contained in:
@@ -469,6 +469,25 @@ func (s *Server) handleStats() http.HandlerFunc {
|
||||
connectionDuration = time.Since(metrics.ConnectedSince).Truncate(time.Second).String()
|
||||
}
|
||||
|
||||
// Get announcement/withdrawal stats from metrics tracker
|
||||
metricsTracker := s.streamer.GetMetricsTracker()
|
||||
announcements := metricsTracker.GetAnnouncementCount()
|
||||
withdrawals := metricsTracker.GetWithdrawalCount()
|
||||
churnRate := metricsTracker.GetChurnRate()
|
||||
bgpPeerCount := metricsTracker.GetBGPPeerCount()
|
||||
|
||||
// Calculate last GC pause
|
||||
const (
|
||||
nanosecondsPerMillisecond = 1e6
|
||||
gcPauseHistorySize = 256 // Size of runtime.MemStats.PauseNs circular buffer
|
||||
)
|
||||
var lastPauseMs float64
|
||||
if memStats.NumGC > 0 {
|
||||
// PauseNs is a circular buffer, get the most recent pause
|
||||
lastPauseIdx := (memStats.NumGC + gcPauseHistorySize - 1) % gcPauseHistorySize
|
||||
lastPauseMs = float64(memStats.PauseNs[lastPauseIdx]) / nanosecondsPerMillisecond
|
||||
}
|
||||
|
||||
stats := StatsResponse{
|
||||
Uptime: uptime,
|
||||
TotalMessages: metrics.TotalMessages,
|
||||
@@ -483,6 +502,19 @@ func (s *Server) handleStats() http.HandlerFunc {
|
||||
GoVersion: runtime.Version(),
|
||||
Goroutines: runtime.NumGoroutine(),
|
||||
MemoryUsage: humanize.Bytes(memStats.Alloc),
|
||||
GC: GCStats{
|
||||
NumGC: memStats.NumGC,
|
||||
TotalPauseMs: memStats.PauseTotalNs / uint64(nanosecondsPerMillisecond),
|
||||
LastPauseMs: lastPauseMs,
|
||||
HeapAllocBytes: memStats.HeapAlloc,
|
||||
HeapSysBytes: memStats.HeapSys,
|
||||
},
|
||||
Stream: StreamStats{
|
||||
Announcements: announcements,
|
||||
Withdrawals: withdrawals,
|
||||
RouteChurnPerSec: churnRate,
|
||||
BGPPeerCount: bgpPeerCount,
|
||||
},
|
||||
ASNs: dbStats.ASNs,
|
||||
Prefixes: dbStats.Prefixes,
|
||||
IPv4Prefixes: dbStats.IPv4Prefixes,
|
||||
|
||||
Reference in New Issue
Block a user