From 4b1f84f3c477eb7c3272eff0446d5099c701c8d9 Mon Sep 17 00:00:00 2001 From: Joshua Gutow Date: Thu, 10 Oct 2024 09:16:37 -0700 Subject: [PATCH] op-node: Update transactions_sequenced_total metric --- op-node/metrics/metrics.go | 17 +++++++++-------- op-node/rollup/engine/build_seal.go | 12 ++++++++++-- op-node/rollup/engine/events.go | 2 +- op-service/testutils/metrics.go | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/op-node/metrics/metrics.go b/op-node/metrics/metrics.go index 6307ec9c85a2..4140a6a9bde5 100644 --- a/op-node/metrics/metrics.go +++ b/op-node/metrics/metrics.go @@ -49,7 +49,7 @@ type Metricer interface { RecordL2Ref(name string, ref eth.L2BlockRef) RecordUnsafePayloadsBuffer(length uint64, memSize uint64, next eth.BlockID) RecordDerivedBatches(batchType string) - CountSequencedTxs(count int) + CountSequencedTxsInBlock(txns int, deposits int) RecordL1ReorgDepth(d uint64) RecordSequencerInconsistentL1Origin(from eth.BlockID, to eth.BlockID) RecordSequencerReset() @@ -135,7 +135,7 @@ type Metrics struct { L1ReorgDepth prometheus.Histogram - TransactionsSequencedTotal prometheus.Counter + TransactionsSequencedTotal *prometheus.CounterVec AltDAMetrics altda.Metricer @@ -268,12 +268,11 @@ func NewMetrics(procName string) *Metrics { Help: "Histogram of L1 Reorg Depths", }), - TransactionsSequencedTotal: factory.NewGauge(prometheus.GaugeOpts{ + TransactionsSequencedTotal: factory.NewCounterVec(prometheus.CounterOpts{ Namespace: ns, Name: "transactions_sequenced_total", Help: "Count of total transactions sequenced", - }), - + }, []string{"type"}), PeerCount: factory.NewGauge(prometheus.GaugeOpts{ Namespace: ns, Subsystem: "p2p", @@ -531,8 +530,10 @@ func (m *Metrics) RecordDerivedBatches(batchType string) { m.DerivedBatches.Record(batchType) } -func (m *Metrics) CountSequencedTxs(count int) { - m.TransactionsSequencedTotal.Add(float64(count)) +func (m *Metrics) CountSequencedTxsInBlock(txns int, deposits int) { + m.TransactionsSequencedTotal.WithLabelValues("l1_info_deposit").Add(1) + m.TransactionsSequencedTotal.WithLabelValues("deposits").Add(float64(deposits - 1)) + m.TransactionsSequencedTotal.WithLabelValues("txns").Add(float64(txns - deposits)) } func (m *Metrics) RecordL1ReorgDepth(d uint64) { @@ -743,7 +744,7 @@ func (n *noopMetricer) RecordUnsafePayloadsBuffer(length uint64, memSize uint64, func (n *noopMetricer) RecordDerivedBatches(batchType string) { } -func (n *noopMetricer) CountSequencedTxs(count int) { +func (n *noopMetricer) CountSequencedTxsInBlock(txns int, deposits int) { } func (n *noopMetricer) RecordL1ReorgDepth(d uint64) { diff --git a/op-node/rollup/engine/build_seal.go b/op-node/rollup/engine/build_seal.go index a5c72c74fdb7..e6e5a3d48e60 100644 --- a/op-node/rollup/engine/build_seal.go +++ b/op-node/rollup/engine/build_seal.go @@ -7,6 +7,7 @@ import ( "github.com/ethereum-optimism/optimism/op-node/rollup/derive" "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum/go-ethereum/core/types" ) // PayloadSealInvalidEvent identifies a permanent in-consensus problem with the payload sealing. @@ -106,10 +107,17 @@ func (eq *EngDeriver) onBuildSeal(ev BuildSealEvent) { eq.metrics.RecordSequencerBuildingDiffTime(buildTime - time.Duration(eq.cfg.BlockTime)*time.Second) txnCount := len(envelope.ExecutionPayload.Transactions) - eq.metrics.CountSequencedTxs(txnCount) + depositCount := 1 + for i, txn := range envelope.ExecutionPayload.Transactions { + if txn[0] != types.DepositTxType { + depositCount = i + break + } + } + eq.metrics.CountSequencedTxsInBlock(txnCount, depositCount) eq.log.Debug("Processed new L2 block", "l2_unsafe", ref, "l1_origin", ref.L1Origin, - "txs", txnCount, "time", ref.Time, "seal_time", sealTime, "build_time", buildTime) + "txs", txnCount, "deposits", depositCount, "time", ref.Time, "seal_time", sealTime, "build_time", buildTime) eq.emitter.Emit(BuildSealedEvent{ IsLastInSpan: ev.IsLastInSpan, diff --git a/op-node/rollup/engine/events.go b/op-node/rollup/engine/events.go index b05410a6dcef..2eb695227aab 100644 --- a/op-node/rollup/engine/events.go +++ b/op-node/rollup/engine/events.go @@ -15,7 +15,7 @@ import ( ) type Metrics interface { - CountSequencedTxs(count int) + CountSequencedTxsInBlock(txns int, deposits int) RecordSequencerBuildingDiffTime(duration time.Duration) RecordSequencerSealingTime(duration time.Duration) diff --git a/op-service/testutils/metrics.go b/op-service/testutils/metrics.go index 421d32f2109c..25edee14a068 100644 --- a/op-service/testutils/metrics.go +++ b/op-service/testutils/metrics.go @@ -17,7 +17,7 @@ type TestDerivationMetrics struct { FnRecordChannelTimedOut func() } -func (t *TestDerivationMetrics) CountSequencedTxs(count int) { +func (t *TestDerivationMetrics) CountSequencedTxsInBlock(txns int, deposits int) { } func (t *TestDerivationMetrics) RecordSequencerBuildingDiffTime(duration time.Duration) {