Commit 98c19947 authored by Madhur Shrimal's avatar Madhur Shrimal

op-proposer: add l2 block height metrics

parent 5bb850b4
......@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"github.com/prometheus/client_golang/prometheus"
"math/big"
_ "net/http/pprof"
"os"
......@@ -78,17 +79,16 @@ func Main(version string, cliCtx *cli.Context) error {
}()
}
registry := opmetrics.NewRegistry()
metricsCfg := cfg.MetricsConfig
if metricsCfg.Enabled {
l.Info("starting metrics server", "addr", metricsCfg.ListenAddr, "port", metricsCfg.ListenPort)
go func() {
if err := opmetrics.ListenAndServe(ctx, registry, metricsCfg.ListenAddr, metricsCfg.ListenPort); err != nil {
if err := opmetrics.ListenAndServe(ctx, l2OutputSubmitter.metricsRegistry, metricsCfg.ListenAddr, metricsCfg.ListenPort); err != nil {
l.Error("error starting metrics server", err)
}
}()
addr := l2OutputSubmitter.from
opmetrics.LaunchBalanceMetrics(ctx, l, registry, "", l2OutputSubmitter.l1Client, addr)
opmetrics.LaunchBalanceMetrics(ctx, l, l2OutputSubmitter.metricsRegistry, "", l2OutputSubmitter.l1Client, addr)
}
rpcCfg := cfg.RPCConfig
......@@ -113,10 +113,11 @@ func Main(version string, cliCtx *cli.Context) error {
// L2OutputSubmitter is responsible for proposing outputs
type L2OutputSubmitter struct {
txMgr txmgr.TxManager
wg sync.WaitGroup
done chan struct{}
log log.Logger
txMgr txmgr.TxManager
wg sync.WaitGroup
done chan struct{}
log log.Logger
metricsRegistry *prometheus.Registry
ctx context.Context
cancel context.CancelFunc
......@@ -223,11 +224,12 @@ func NewL2OutputSubmitter(cfg Config, l log.Logger) (*L2OutputSubmitter, error)
rawL2ooContract := bind.NewBoundContract(cfg.L2OutputOracleAddr, parsed, cfg.L1Client, cfg.L1Client, cfg.L1Client)
return &L2OutputSubmitter{
txMgr: txmgr.NewSimpleTxManager("proposer", l, cfg.TxManagerConfig, cfg.L1Client),
done: make(chan struct{}),
log: l,
ctx: ctx,
cancel: cancel,
txMgr: txmgr.NewSimpleTxManager("proposer", l, cfg.TxManagerConfig, cfg.L1Client),
done: make(chan struct{}),
log: l,
metricsRegistry: opmetrics.NewRegistry(),
ctx: ctx,
cancel: cancel,
l1Client: cfg.L1Client,
rollupClient: cfg.RollupClient,
......@@ -375,6 +377,9 @@ func (l *L2OutputSubmitter) SendTransaction(ctx context.Context, tx *types.Trans
return err
}
// Emit the proposed block Number
opmetrics.EmitBlockNumber(l.metricsRegistry, "", receipt.BlockNumber)
// The transaction was successfully submitted
l.log.Info("proposer tx successfully published", "tx_hash", receipt.TxHash)
return nil
......
package metrics
import (
"github.com/prometheus/client_golang/prometheus/promauto"
"math/big"
"github.com/prometheus/client_golang/prometheus"
)
func EmitBlockNumber(r *prometheus.Registry, ns string, blockNumber *big.Int) {
promauto.With(r).NewGauge(prometheus.GaugeOpts{
Namespace: ns,
Name: "latest_block_number",
Help: "Latest L2 proposed block number",
}).Set(float64(blockNumber.Uint64()))
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment