Changeset 708 in code for trunk


Ignore:
Timestamp:
Nov 17, 2021, 2:58:19 PM (4 years ago)
Author:
contact
Message:

Add basic active users and downstreams metrics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r707 r708  
    1616
    1717        "github.com/prometheus/client_golang/prometheus"
     18        "github.com/prometheus/client_golang/prometheus/promauto"
    1819        "gopkg.in/irc.v3"
    1920        "nhooyr.io/websocket"
     
    112113
    113114func (s *Server) Start() error {
     115        s.registerMetrics()
     116
    114117        users, err := s.db.ListUsers(context.TODO())
    115118        if err != nil {
     
    124127
    125128        return nil
     129}
     130
     131func (s *Server) registerMetrics() {
     132        factory := promauto.With(s.MetricsRegistry)
     133
     134        factory.NewGaugeFunc(prometheus.GaugeOpts{
     135                Name: "soju_users_active",
     136                Help: "Current number of active users",
     137        }, func() float64 {
     138                s.lock.Lock()
     139                n := len(s.users)
     140                s.lock.Unlock()
     141                return float64(n)
     142        })
     143
     144        factory.NewGaugeFunc(prometheus.GaugeOpts{
     145                Name: "soju_downstreams_active",
     146                Help: "Current number of downstream connections",
     147        }, func() float64 {
     148                return float64(atomic.LoadInt64(&s.connCount))
     149        })
    126150}
    127151
Note: See TracChangeset for help on using the changeset viewer.