Skip to content

Commit

Permalink
adding metrics
Browse files Browse the repository at this point in the history
  • Loading branch information
distractedm1nd committed Sep 21, 2023
1 parent 408b76d commit 6659c3d
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 8 deletions.
8 changes: 0 additions & 8 deletions docker/telemetry/otel-collector/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,10 @@ exporters:
endpoint: "otel-collector:8889"
send_timestamps: true
metric_expiration: 1800m
jaeger:
endpoint: "jaeger:14250"
tls:
insecure: true

service:
extensions: [health_check]
pipelines:
metrics:
receivers: [otlp]
exporters: [prometheus]
traces:
receivers: [otlp]
processors: []
exporters: [jaeger]
7 changes: 7 additions & 0 deletions nodebuilder/pruner/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,10 @@ func DefaultConfig() Config {
RecencyWindow: time.Hour * 24 * 30,
}
}

// WithStoragePrunerMetrics is a utility function to turn on storage pruner metrics and that is
// expected to be "invoked" by the fx lifecycle.
func WithStoragePrunerMetrics(sp *StoragePruner) error {
return sp.WithMetrics()
}

75 changes: 75 additions & 0 deletions nodebuilder/pruner/metrics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package pruner

import (
"context"

"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/metric"
)

var (
meter = otel.Meter("storage_pruner")
)

type metrics struct {
registeredCounter metric.Int64Counter
prunedCounter metric.Int64Counter

epochAmount metric.Int64ObservableGauge
}

func (sp *StoragePruner) WithMetrics() error {
registeredCounter, err := meter.Int64Counter("pruner_registered_counter",
metric.WithDescription("pruner registered datahash counter"))
if err != nil {
return err
}

prunedCounter, err := meter.Int64Counter("pruner_pruned_counter",
metric.WithDescription("pruner pruned datahash counter"))
if err != nil {
return err
}

epochAmount, err := meter.Int64ObservableGauge("pruner_epoch_amount",
metric.WithDescription("pruner epoch amount"))
if err != nil {
return err
}

callback := func(ctx context.Context, observer metric.Observer) error {
observer.ObserveInt64(epochAmount, int64(len(sp.activeEpochs)))
return nil
}

if _, err := meter.RegisterCallback(callback, epochAmount); err != nil {
return err
}

sp.metrics = &metrics{
registeredCounter: registeredCounter,
prunedCounter: prunedCounter,
epochAmount: epochAmount,
}
return nil
}

func (m *metrics) observeRegister(ctx context.Context) {
if m == nil {
return
}
if ctx.Err() != nil {
ctx = context.Background()
}
m.registeredCounter.Add(context.Background(), 1)
}

func (m *metrics) observePrune(ctx context.Context) {
if m == nil {
return
}
if ctx.Err() != nil {
ctx = context.Background()
}
m.prunedCounter.Add(context.Background(), 1)
}
4 changes: 4 additions & 0 deletions nodebuilder/pruner/pruner.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ type StoragePruner struct {
ds datastore.Batching
store *eds.Store

metrics *metrics

done chan struct{}
}

Expand Down Expand Up @@ -123,6 +125,7 @@ func (sp *StoragePruner) Register(ctx context.Context, h *header.ExtendedHeader)
}

datahashes = append(datahashes, h.DAH.Hash())
sp.metrics.observeRegister(ctx)
return sp.saveDatahashesToEpoch(ctx, epoch, datahashes)
}

Expand Down Expand Up @@ -183,6 +186,7 @@ func (sp *StoragePruner) pruneEpoch(ctx context.Context, epoch uint64) error {
if err != nil {
return err
}
sp.metrics.observePrune(ctx)
}

delete(sp.activeEpochs, epoch)
Expand Down
3 changes: 3 additions & 0 deletions nodebuilder/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
modheader "github.com/celestiaorg/celestia-node/nodebuilder/header"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
"github.com/celestiaorg/celestia-node/nodebuilder/p2p"
"github.com/celestiaorg/celestia-node/nodebuilder/pruner"
"github.com/celestiaorg/celestia-node/nodebuilder/share"
"github.com/celestiaorg/celestia-node/state"
)
Expand Down Expand Up @@ -101,6 +102,7 @@ func WithMetrics(metricOpts []otlpmetrichttp.Option, nodeType node.Type) fx.Opti
baseComponents,
fx.Invoke(share.WithStoreMetrics),
fx.Invoke(share.WithShrexServerMetrics),
fx.Invoke(pruner.WithStoragePrunerMetrics),
samplingMetrics,
)
case node.Light:
Expand All @@ -113,6 +115,7 @@ func WithMetrics(metricOpts []otlpmetrichttp.Option, nodeType node.Type) fx.Opti
baseComponents,
fx.Invoke(share.WithStoreMetrics),
fx.Invoke(share.WithShrexServerMetrics),
fx.Invoke(pruner.WithStoragePrunerMetrics),
)
default:
panic("invalid node type")
Expand Down

0 comments on commit 6659c3d

Please sign in to comment.