Skip to content

Commit

Permalink
rcmgr: enable metrics by default (#2389) (#2409)
Browse files Browse the repository at this point in the history
Co-authored-by: Sukun <sukunrt@gmail.com>
  • Loading branch information
MarcoPolo and sukunrt committed Jul 6, 2023
1 parent 87c2561 commit 24c50ea
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 40 deletions.
25 changes: 3 additions & 22 deletions dashboards/resource-manager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,9 @@ import follow the Grafana docs [here](https://grafana.com/docs/grafana/latest/da

## Setup

To make sure you're emitting the metrics you'll have to create the Resource
Manager with a StatsTraceReporter. By default metrics will be sent to
prometheus.DefaultRegisterer. To use a different Registerer use the libp2p
option libp2p.PrometheusRegisterer. For example:

``` go
import (
// ...
rcmgr "github.com/libp2p/go-libp2p/p2p/host/resource-manager"

"github.com/prometheus/client_golang/prometheus"
)

func SetupResourceManager() (network.ResourceManager, error) {
str, err := rcmgr.NewStatsTraceReporter()
if err != nil {
return nil, err
}

return rcmgr.NewResourceManager(limiter, rcmgr.WithTraceReporter(str))
}
```
Metrics are enabled by default. By default, metrics will be sent to
`prometheus.DefaultRegisterer`. To use a different Registerer use the libp2p
option `libp2p.PrometheusRegisterer`.

## Updating Dashboard json

Expand Down
11 changes: 3 additions & 8 deletions p2p/host/resource-manager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,10 @@ limits := cfg.Build(scaledDefaultLimits)
// The resource manager expects a limiter, se we create one from our limits.
limiter := rcmgr.NewFixedLimiter(limits)

// (Optional if you want metrics)
rcmgr.MustRegisterWith(prometheus.DefaultRegisterer)
str, err := rcmgr.NewStatsTraceReporter()
if err != nil {
panic(err)
}

// Metrics are enabled by default. If you want to disable metrics, use the
// WithMetricsDisabled option
// Initialize the resource manager
rm, err := rcmgr.NewResourceManager(limiter, rcmgr.WithTraceReporter(str))
rm, err := rcmgr.NewResourceManager(limiter, rcmgr.WithMetricsDisabled())
if err != nil {
panic(err)
}
Expand Down
27 changes: 25 additions & 2 deletions p2p/host/resource-manager/rcmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ var log = logging.Logger("rcmgr")
type resourceManager struct {
limits Limiter

trace *trace
metrics *metrics
trace *trace
metrics *metrics
disableMetrics bool

allowlist *Allowlist

Expand Down Expand Up @@ -141,6 +142,28 @@ func NewResourceManager(limits Limiter, opts ...Option) (network.ResourceManager
}
}

if !r.disableMetrics {
var sr TraceReporter
sr, err := NewStatsTraceReporter()
if err != nil {
log.Errorf("failed to initialise StatsTraceReporter %s", err)
} else {
if r.trace == nil {
r.trace = &trace{}
}
found := false
for _, rep := range r.trace.reporters {
if rep == sr {
found = true
break
}
}
if !found {
r.trace.reporters = append(r.trace.reporters, sr)
}
}
}

if err := r.trace.Start(limits); err != nil {
return nil, err
}
Expand Down
7 changes: 7 additions & 0 deletions p2p/host/resource-manager/stats.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,13 @@ func MustRegisterWith(reg prometheus.Registerer) {
)
}

func WithMetricsDisabled() Option {
return func(r *resourceManager) error {
r.disableMetrics = true
return nil
}
}

// StatsTraceReporter reports stats on the resource manager using its traces.
type StatsTraceReporter struct{}

Expand Down
11 changes: 3 additions & 8 deletions p2p/test/resource-manager/rcmgr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -317,14 +317,10 @@ func TestReadmeExample(t *testing.T) {
// The resource manager expects a limiter, se we create one from our limits.
limiter := rcmgr.NewFixedLimiter(limits)

// (Optional if you want metrics) Construct the OpenCensus metrics reporter.
str, err := rcmgr.NewStatsTraceReporter()
if err != nil {
panic(err)
}

// Metrics are enabled by default. If you want to disable metrics, use the
// WithMetricsDisabled option
// Initialize the resource manager
rm, err := rcmgr.NewResourceManager(limiter, rcmgr.WithTraceReporter(str))
rm, err := rcmgr.NewResourceManager(limiter, rcmgr.WithMetricsDisabled())
if err != nil {
panic(err)
}
Expand All @@ -334,6 +330,5 @@ func TestReadmeExample(t *testing.T) {
if err != nil {
panic(err)
}

host.Close()
}

0 comments on commit 24c50ea

Please sign in to comment.