Browse Source

feat(metrics): Publish peer heartbeat events as metrics

Brian Waldon 12 years ago
parent
commit
97bc5b260d
1 changed files with 8 additions and 0 deletions
  1. 8 0
      server/peer_server.go

+ 8 - 0
server/peer_server.go

@@ -122,6 +122,8 @@ func NewPeerServer(name string, path string, url string, bindAddr string, tlsCon
 	s.raftServer.AddEventListener(raft.HeartbeatTimeoutEventType, s.raftEventLogger)
 	s.raftServer.AddEventListener(raft.HeartbeatTimeoutEventType, s.raftEventLogger)
 	s.raftServer.AddEventListener(raft.ElectionTimeoutThresholdEventType, s.raftEventLogger)
 	s.raftServer.AddEventListener(raft.ElectionTimeoutThresholdEventType, s.raftEventLogger)
 
 
+	s.raftServer.AddEventListener(raft.HeartbeatEventType, s.recordMetricEvent)
+
 	return s
 	return s
 }
 }
 
 
@@ -499,6 +501,12 @@ func (s *PeerServer) raftEventLogger(event raft.Event) {
 	}
 	}
 }
 }
 
 
+func (s *PeerServer) recordMetricEvent(event raft.Event) {
+	name := fmt.Sprintf("raft.event.%s", event.Type())
+	value := event.Value().(time.Duration)
+	(*s.metrics).Timer(name).Update(value)
+}
+
 func (s *PeerServer) monitorSnapshot() {
 func (s *PeerServer) monitorSnapshot() {
 	for {
 	for {
 		time.Sleep(s.snapConf.checkingInterval)
 		time.Sleep(s.snapConf.checkingInterval)