Skip to content

Commit

Permalink
metrics: add expected height metric
Browse files Browse the repository at this point in the history
  • Loading branch information
travisperson committed Sep 7, 2020
1 parent c573310 commit f7b52d1
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
26 changes: 26 additions & 0 deletions chain/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ type Syncer struct {
verifier ffiwrapper.Verifier

windowSize int

tickerCtxCancel context.CancelFunc
}

// NewSyncer creates a new Syncer object.
Expand Down Expand Up @@ -166,11 +168,35 @@ func NewSyncer(sm *stmgr.StateManager, bsync *blocksync.BlockSync, connmgr connm
}

func (syncer *Syncer) Start() {
tickerCtx, tickerCtxCancel := context.WithCancel(context.Background())
syncer.syncmgr.Start()

syncer.tickerCtxCancel = tickerCtxCancel

go syncer.runMetricsTricker(tickerCtx)
}

func (syncer *Syncer) runMetricsTricker(tickerCtx context.Context) {
genesisTime := time.Unix(int64(syncer.Genesis.MinTimestamp()), 0)
ticker := build.Clock.Ticker(time.Duration(build.BlockDelaySecs) * time.Second)
defer ticker.Stop()

for {
select {
case <-ticker.C:
sinceGenesis := build.Clock.Now().Sub(genesisTime)
expectedHeight := int64(sinceGenesis.Seconds()) / int64(build.BlockDelaySecs)

stats.Record(tickerCtx, metrics.ChainNodeHeightExpected.M(int64(expectedHeight)))
case <-tickerCtx.Done():
return
}
}
}

func (syncer *Syncer) Stop() {
syncer.syncmgr.Stop()
syncer.tickerCtxCancel()
}

// InformNewHead informs the syncer about a new potential tipset
Expand Down
6 changes: 6 additions & 0 deletions metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ var (
var (
LotusInfo = stats.Int64("info", "Arbitrary counter to tag lotus info to", stats.UnitDimensionless)
ChainNodeHeight = stats.Int64("chain/node_height", "Current Height of the node", stats.UnitDimensionless)
ChainNodeHeightExpected = stats.Int64("chain/node_height_expected", "Expected Height of the node", stats.UnitDimensionless)
ChainNodeWorkerHeight = stats.Int64("chain/node_worker_height", "Current Height of workers on the node", stats.UnitDimensionless)
MessagePublished = stats.Int64("message/published", "Counter for total locally published messages", stats.UnitDimensionless)
MessageReceived = stats.Int64("message/received", "Counter for total received messages", stats.UnitDimensionless)
Expand Down Expand Up @@ -62,6 +63,10 @@ var (
Measure: ChainNodeHeight,
Aggregation: view.LastValue(),
}
ChainNodeHeightExpectedView = &view.View{
Measure: ChainNodeHeightExpected,
Aggregation: view.LastValue(),
}
ChainNodeWorkerHeightView = &view.View{
Measure: ChainNodeWorkerHeight,
Aggregation: view.LastValue(),
Expand Down Expand Up @@ -138,6 +143,7 @@ var (
var DefaultViews = append([]*view.View{
InfoView,
ChainNodeHeightView,
ChainNodeHeightExpectedView,
ChainNodeWorkerHeightView,
BlockReceivedView,
BlockValidationFailureView,
Expand Down

0 comments on commit f7b52d1

Please sign in to comment.