Skip to content

Commit

Permalink
metrics: add bgp_peer_state metric
Browse files Browse the repository at this point in the history
  • Loading branch information
anitgandhi authored and fujita committed May 22, 2024
1 parent 45ccd39 commit e2e1f76
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions internal/pkg/metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ type bgpCollector struct {
}

var (
peerLabels = []string{"peer"}
rfLabels = []string{"peer", "route_family"}
peerLabels = []string{"peer"}
peerStateLabels = []string{"peer", "session_state", "admin_state"}
rfLabels = []string{"peer", "route_family"}

bgpReceivedUpdateTotalDesc = prometheus.NewDesc("bgp_received_update_total", "Number of received BGP UPDATE messages from peer", peerLabels, nil)
bgpReceivedNotificationTotalDesc = prometheus.NewDesc("bgp_received_notification_total", "Number of received BGP NOTIFICATION messages from peer", peerLabels, nil)
Expand All @@ -38,6 +39,8 @@ var (
bgpSentDiscardedTotalDesc = prometheus.NewDesc("bgp_sent_discarded_total", "Number of discarded BGP messages from peer", peerLabels, nil)
bgpSentMessageTotalDesc = prometheus.NewDesc("bgp_sent_message_total", "Number of sent BGP messages from peer", peerLabels, nil)

bgpPeerStateDesc = prometheus.NewDesc("bgp_peer_state", "State of the BGP session with peer", peerStateLabels, nil)

bgpRoutesReceivedDesc = prometheus.NewDesc(
"bgp_routes_received",
"Number of routes received from peer",
Expand Down Expand Up @@ -75,15 +78,19 @@ func (c *bgpCollector) Describe(out chan<- *prometheus.Desc) {
out <- bgpSentDiscardedTotalDesc
out <- bgpSentMessageTotalDesc

out <- bgpPeerStateDesc

out <- bgpRoutesReceivedDesc
out <- bgpRoutesAcceptedDesc
}

func (c *bgpCollector) Collect(out chan<- prometheus.Metric) {
req := &api.ListPeerRequest{EnableAdvertised: false}
err := c.server.ListPeer(context.Background(), req, func(p *api.Peer) {
peerAddr := p.GetConf().GetNeighborAddress()
msg := p.GetState().GetMessages()
peerState := p.GetState()
peerAddr := peerState.GetNeighborAddress()
msg := peerState.GetMessages()

send := func(desc *prometheus.Desc, cnt uint64) {
out <- prometheus.MustNewConstMetric(desc, prometheus.CounterValue, float64(cnt), peerAddr)
}
Expand All @@ -108,6 +115,15 @@ func (c *bgpCollector) Collect(out chan<- prometheus.Metric) {
send(bgpSentDiscardedTotalDesc, msg.Sent.Discarded)
send(bgpSentMessageTotalDesc, msg.Sent.Total)

out <- prometheus.MustNewConstMetric(
bgpPeerStateDesc,
prometheus.GaugeValue,
1.0,
peerAddr,
peerState.GetSessionState().String(),
peerState.GetAdminState().String(),
)

for _, afiSafi := range p.GetAfiSafis() {
if !afiSafi.GetConfig().GetEnabled() {
continue
Expand Down

0 comments on commit e2e1f76

Please sign in to comment.