satellite/rangedloop: wire up metrics observer

Final touches on https://github.com/storj/storj/issues/5236.

Change-Id: I2259ec4e7825d20db9efb36beb42d6309dee55ba
This commit is contained in:
Andrew Harding 2022-12-09 14:34:32 -07:00 committed by Storj Robot
parent b9f0a38846
commit 1cb2eb4c3b
4 changed files with 38 additions and 13 deletions

View File

@ -663,18 +663,23 @@ func New(log *zap.Logger, full *identity.FullIdentity, db DB,
} }
{ // setup metrics service { // setup metrics service
peer.Metrics.Chore = metrics.NewChore( log := peer.Log.Named("metrics")
peer.Log.Named("metrics"), if config.Metrics.UseRangedLoop {
config.Metrics, log.Info("using ranged loop")
peer.Metainfo.SegmentLoop, } else {
) peer.Metrics.Chore = metrics.NewChore(
peer.Services.Add(lifecycle.Item{ log,
Name: "metrics", config.Metrics,
Run: peer.Metrics.Chore.Run, peer.Metainfo.SegmentLoop,
Close: peer.Metrics.Chore.Close, )
}) peer.Services.Add(lifecycle.Item{
peer.Debug.Server.Panel.Add( Name: "metrics",
debug.Cycle("Metrics", peer.Metrics.Chore.Loop)) Run: peer.Metrics.Chore.Run,
Close: peer.Metrics.Chore.Close,
})
peer.Debug.Server.Panel.Add(
debug.Cycle("Metrics", peer.Metrics.Chore.Loop))
}
} }
return peer, nil return peer, nil

View File

@ -23,6 +23,7 @@ var (
// Config contains configurable values for metrics collection. // Config contains configurable values for metrics collection.
type Config struct { type Config struct {
UseRangedLoop bool `help:"whether to use ranged loop instead of segment loop" default:"false"`
} }
// Chore implements the metrics chore. // Chore implements the metrics chore.

View File

@ -21,6 +21,7 @@ import (
"storj.io/storj/satellite/metabase" "storj.io/storj/satellite/metabase"
"storj.io/storj/satellite/metabase/rangedloop" "storj.io/storj/satellite/metabase/rangedloop"
"storj.io/storj/satellite/metabase/rangedloop/rangedlooptest" "storj.io/storj/satellite/metabase/rangedloop/rangedlooptest"
"storj.io/storj/satellite/metrics"
) )
// RangedLoop is the satellite ranged loop process. // RangedLoop is the satellite ranged loop process.
@ -39,6 +40,10 @@ type RangedLoop struct {
Server *debug.Server Server *debug.Server
} }
Metrics struct {
Observer rangedloop.Observer
}
RangedLoop struct { RangedLoop struct {
Service *rangedloop.Service Service *rangedloop.Service
} }
@ -74,10 +79,21 @@ func NewRangedLoop(log *zap.Logger, full *identity.FullIdentity, db DB, metabase
}) })
} }
{ // setup metrics observer
peer.Metrics.Observer = metrics.NewObserver()
}
{ // setup ranged loop { // setup ranged loop
var observers []rangedloop.Observer
// TODO: replace with real segment provider // TODO: replace with real segment provider
segments := &rangedlooptest.RangeSplitter{} segments := &rangedlooptest.RangeSplitter{}
peer.RangedLoop.Service = rangedloop.NewService(log.Named("rangedloop"), config.RangedLoop, segments, nil)
if config.Metrics.UseRangedLoop {
observers = append(observers, peer.Metrics.Observer)
}
peer.RangedLoop.Service = rangedloop.NewService(log.Named("rangedloop"), config.RangedLoop, segments, observers)
peer.Services.Add(lifecycle.Item{ peer.Services.Add(lifecycle.Item{
Name: "rangeloop", Name: "rangeloop",

View File

@ -679,6 +679,9 @@ identity.key-path: /root/.local/share/storj/identity/satellite/identity.key
# how frequently to send up telemetry. Ignored for certain applications. # how frequently to send up telemetry. Ignored for certain applications.
# metrics.interval: 1m0s # metrics.interval: 1m0s
# whether to use ranged loop instead of segment loop
# metrics.use-ranged-loop: false
# path to log for oom notices # path to log for oom notices
# monkit.hw.oomlog: /var/log/kern.log # monkit.hw.oomlog: /var/log/kern.log