Add route update metrics tracking to PrefixHandler

- Add RecordIPv4Update and RecordIPv6Update to metrics package
- Add SetMetricsTracker method to PrefixHandler
- Track IPv4/IPv6 route updates when processing announcements
- Add GetMetricsTracker method to Streamer to expose metrics
This commit is contained in:
2025-07-28 02:55:27 +02:00
parent bc640b0b37
commit cb1f4d9052
4 changed files with 54 additions and 2 deletions

View File

@@ -21,6 +21,10 @@ type Tracker struct {
byteCounter metrics.Counter
messageRate metrics.Meter
byteRate metrics.Meter
// Route update metrics
ipv4UpdateRate metrics.Meter
ipv6UpdateRate metrics.Meter
}
// New creates a new metrics tracker
@@ -33,6 +37,8 @@ func New() *Tracker {
byteCounter: metrics.NewCounter(),
messageRate: metrics.NewMeter(),
byteRate: metrics.NewMeter(),
ipv4UpdateRate: metrics.NewMeter(),
ipv6UpdateRate: metrics.NewMeter(),
}
}
@@ -89,6 +95,24 @@ func (t *Tracker) GetStreamMetrics() StreamMetrics {
}
}
// RecordIPv4Update records an IPv4 route update
func (t *Tracker) RecordIPv4Update() {
t.ipv4UpdateRate.Mark(1)
}
// RecordIPv6Update records an IPv6 route update
func (t *Tracker) RecordIPv6Update() {
t.ipv6UpdateRate.Mark(1)
}
// GetRouteMetrics returns current route update metrics
func (t *Tracker) GetRouteMetrics() RouteMetrics {
return RouteMetrics{
IPv4UpdatesPerSec: t.ipv4UpdateRate.Rate1(),
IPv6UpdatesPerSec: t.ipv6UpdateRate.Rate1(),
}
}
// StreamMetrics contains streaming statistics
type StreamMetrics struct {
TotalMessages uint64
@@ -98,3 +122,9 @@ type StreamMetrics struct {
MessagesPerSec float64
BitsPerSec float64
}
// RouteMetrics contains route update statistics
type RouteMetrics struct {
IPv4UpdatesPerSec float64
IPv6UpdatesPerSec float64
}