Skip to content

Commit

Permalink
chore(metrics): Allow telemetry to be registered to the baseapp and o…
Browse files Browse the repository at this point in the history
…n sdk.Context (#102)

* bet

* default to no-op metrics
  • Loading branch information
calbera committed Jun 20, 2024
1 parent 058a314 commit ebb24ef
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 5 deletions.
3 changes: 3 additions & 0 deletions baseapp/baseapp.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/berachain/offchain-sdk/job"
"github.com/berachain/offchain-sdk/log"
"github.com/berachain/offchain-sdk/server"
"github.com/berachain/offchain-sdk/telemetry"

ethdb "github.com/ethereum/go-ethereum/ethdb"
)
Expand Down Expand Up @@ -34,6 +35,7 @@ func New(
jobs []job.Basic,
db ethdb.KeyValueStore,
svr *server.Server,
metrics telemetry.Metrics,
) *BaseApp {
return &BaseApp{
name: name,
Expand All @@ -44,6 +46,7 @@ func New(
connPool: ethClient,
logger: logger,
db: db,
metrics: metrics,
},
),
svr: svr,
Expand Down
11 changes: 11 additions & 0 deletions baseapp/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/berachain/offchain-sdk/job"
"github.com/berachain/offchain-sdk/log"
"github.com/berachain/offchain-sdk/server"
"github.com/berachain/offchain-sdk/telemetry"
"github.com/prometheus/client_golang/prometheus/promhttp"

ethdb "github.com/ethereum/go-ethereum/ethdb"
Expand All @@ -19,13 +20,15 @@ type AppBuilder struct {
db ethdb.KeyValueStore
ethClient eth.Client
svr *server.Server
metrics telemetry.Metrics
}

// NewAppBuilder creates a new app builder.
func NewAppBuilder(appName string) *AppBuilder {
return &AppBuilder{
appName: appName,
jobs: []job.Basic{},
metrics: telemetry.NewNoopMetrics(),
}
}

Expand All @@ -44,6 +47,13 @@ func (ab *AppBuilder) RegisterDB(db ethdb.KeyValueStore) {
ab.db = db
}

// RegisterMetrics registers the metrics.
func (ab *AppBuilder) RegisterMetrics(cfg *telemetry.Config) error {
var err error
ab.metrics, err = telemetry.NewMetrics(cfg)
return err
}

// RegisterHTTPServer registers the http server.
func (ab *AppBuilder) RegisterHTTPServer(svr *server.Server) {
ab.svr = svr
Expand Down Expand Up @@ -95,5 +105,6 @@ func (ab *AppBuilder) BuildApp(
ab.jobs,
ab.db,
ab.svr,
ab.metrics,
)
}
3 changes: 3 additions & 0 deletions baseapp/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/berachain/offchain-sdk/client/eth"
"github.com/berachain/offchain-sdk/log"
"github.com/berachain/offchain-sdk/telemetry"
sdk "github.com/berachain/offchain-sdk/types"

ethdb "github.com/ethereum/go-ethereum/ethdb"
Expand All @@ -15,6 +16,7 @@ type contextFactory struct {
connPool eth.Client
logger log.Logger
db ethdb.KeyValueStore
metrics telemetry.Metrics
}

// NewContextFactory creates a new context from a given context.Context.
Expand All @@ -24,5 +26,6 @@ func (cf *contextFactory) NewSDKContext(ctx context.Context) *sdk.Context {
cf.connPool,
cf.logger,
cf.db,
cf.metrics,
)
}
2 changes: 1 addition & 1 deletion core/transactor/factory/batcher/batcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ func setUp(t *testing.T) *sdk.Context {
}
return sdk.NewContext(
ctx, eth.NewExtendedEthClient(chain, 5*time.Second),
log.NewLogger(os.Stdout, "test-runner"), nil,
log.NewLogger(os.Stdout, "test-runner"), nil, nil,
)
}
5 changes: 5 additions & 0 deletions telemetry/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ func NewMetrics(cfg *Config) (Metrics, error) {
return m, nil
}

// NewNoopMetrics returns a new Metrics instance with no-op implementations.
func NewNoopMetrics() Metrics {
return &metrics{}
}

type metrics struct {
datadog Metrics
prometheus Metrics
Expand Down
19 changes: 15 additions & 4 deletions types/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/berachain/offchain-sdk/client/eth"
"github.com/berachain/offchain-sdk/log"
"github.com/berachain/offchain-sdk/telemetry"

"github.com/ethereum/go-ethereum/ethdb"
)
Expand All @@ -15,9 +16,10 @@ type CancellableContext interface {

type Context struct {
context.Context
chain eth.Client
logger log.Logger
db ethdb.KeyValueStore
chain eth.Client
logger log.Logger
db ethdb.KeyValueStore
metrics telemetry.Metrics
}

// UnwrapContext unwraps the sdk context.
Expand All @@ -30,13 +32,18 @@ func UnwrapContext(ctx context.Context) *Context {
}

func NewContext(
ctx context.Context, ethClient eth.Client, logger log.Logger, db ethdb.KeyValueStore,
ctx context.Context,
ethClient eth.Client,
logger log.Logger,
db ethdb.KeyValueStore,
metrics telemetry.Metrics,
) *Context {
return &Context{
Context: ctx,
chain: ethClient,
logger: logger,
db: db,
metrics: metrics,
}
}

Expand All @@ -51,3 +58,7 @@ func (c *Context) Logger() log.Logger {
func (c *Context) DB() ethdb.KeyValueStore {
return c.db
}

func (c *Context) Metrics() telemetry.Metrics {
return c.metrics
}

0 comments on commit ebb24ef

Please sign in to comment.