From df6b161f55a4a25919c436c1a15bbbfec3d0e720 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 15 Nov 2021 20:36:14 +0100 Subject: [PATCH] Add basic active users and downstreams metrics --- server.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/server.go b/server.go index aaddb19..bcb7743 100644 --- a/server.go +++ b/server.go @@ -15,6 +15,7 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" "gopkg.in/irc.v3" "nhooyr.io/websocket" @@ -111,6 +112,8 @@ func (s *Server) SetConfig(cfg *Config) { } func (s *Server) Start() error { + s.registerMetrics() + users, err := s.db.ListUsers(context.TODO()) if err != nil { return err @@ -125,6 +128,27 @@ func (s *Server) Start() error { return nil } +func (s *Server) registerMetrics() { + factory := promauto.With(s.MetricsRegistry) + + factory.NewGaugeFunc(prometheus.GaugeOpts{ + Name: "soju_users_active", + Help: "Current number of active users", + }, func() float64 { + s.lock.Lock() + n := len(s.users) + s.lock.Unlock() + return float64(n) + }) + + factory.NewGaugeFunc(prometheus.GaugeOpts{ + Name: "soju_downstreams_active", + Help: "Current number of downstream connections", + }, func() float64 { + return float64(atomic.LoadInt64(&s.connCount)) + }) +} + func (s *Server) Shutdown() { s.lock.Lock() for ln := range s.listeners {