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:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user