From 0317a4fbe238c0f5a096b86cdb4eae05db4aa912 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Thu, 12 Jan 2023 13:53:32 +0300 Subject: [PATCH] net pool metrics --- app/ocache/metrics.go | 3 +++ app/ocache/ocache.go | 4 +++- net/pool/pool.go | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/ocache/metrics.go b/app/ocache/metrics.go index 77bbfee3..b5fe9aa4 100644 --- a/app/ocache/metrics.go +++ b/app/ocache/metrics.go @@ -6,6 +6,9 @@ func WithPrometheus(reg *prometheus.Registry, namespace, subsystem string) Optio if subsystem == "" { subsystem = "cache" } + if reg == nil { + return nil + } return func(cache *oCache) { cache.metrics = &metrics{ hit: prometheus.NewCounter(prometheus.CounterOpts{ diff --git a/app/ocache/ocache.go b/app/ocache/ocache.go index 8abf14ce..31852286 100644 --- a/app/ocache/ocache.go +++ b/app/ocache/ocache.go @@ -61,7 +61,9 @@ func New(loadFunc LoadFunc, opts ...Option) OCache { log: log.Sugar(), } for _, o := range opts { - o(c) + if o != nil { + o(c) + } } if c.ttl != 0 && c.gc != 0 { go c.ticker() diff --git a/net/pool/pool.go b/net/pool/pool.go index 5ca10c4e..0b202106 100644 --- a/net/pool/pool.go +++ b/net/pool/pool.go @@ -6,8 +6,10 @@ import ( "github.com/anytypeio/any-sync/app" "github.com/anytypeio/any-sync/app/logger" "github.com/anytypeio/any-sync/app/ocache" + "github.com/anytypeio/any-sync/metric" "github.com/anytypeio/any-sync/net/dialer" "github.com/anytypeio/any-sync/net/peer" + "github.com/prometheus/client_golang/prometheus" "math/rand" "time" ) @@ -47,6 +49,10 @@ type pool struct { func (p *pool) Init(a *app.App) (err error) { p.dialer = a.MustComponent(dialer.CName).(dialer.Dialer) + var reg *prometheus.Registry + if m := a.Component(metric.CName); m != nil { + reg = m.(metric.Metric).Registry() + } p.cache = ocache.New( func(ctx context.Context, id string) (value ocache.Object, err error) { return p.dialer.Dial(ctx, id) @@ -54,6 +60,7 @@ func (p *pool) Init(a *app.App) (err error) { ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), ocache.WithTTL(time.Minute*5), + ocache.WithPrometheus(reg, "netpool", "cache"), ) return nil }