monitoring: add prometheus monitoring

add init metrics service which uses prometheus;
add configuration for metrics service;
add monitoring metrics for blockchain,rpc,server;
This commit is contained in:
Vsevolod Brekelov 2019-10-29 20:51:17 +03:00
parent 0ea7568caa
commit d374175170
22 changed files with 468 additions and 22 deletions

View file

@ -5,6 +5,7 @@ import (
"fmt"
"math/rand"
"net"
"strconv"
"sync"
"time"
@ -101,6 +102,7 @@ func (s *Server) Start(errChan chan error) {
go s.bQueue.run()
go s.transport.Accept()
setServerAndNodeVersions(s.UserAgent, strconv.FormatUint(uint64(s.id), 10))
s.run()
}
@ -157,6 +159,8 @@ func (s *Server) run() {
log.WithFields(log.Fields{
"addr": p.NetAddr(),
}).Info("new peer connected")
updatePeersConnectedMetric(s.PeerCount())
case drop := <-s.unregister:
if s.peers[drop.peer] {
delete(s.peers, drop.peer)
@ -168,6 +172,7 @@ func (s *Server) run() {
addr := drop.peer.NetAddr().String()
s.discovery.UnregisterConnectedAddr(addr)
s.discovery.BackFill(addr)
updatePeersConnectedMetric(s.PeerCount())
}
// else the peer is already gone, which can happen
// because we have two goroutines sending signals here