@@ -49,54 +49,22 @@ type Metrics struct {
4949 BlockSizeBytes metrics.Gauge // Size of the latest block
5050 TotalTxs metrics.Gauge // Total number of transactions
5151 CommittedHeight metrics.Gauge `metrics_name:"latest_block_height"` // The latest block height
52-
53- // Channel metrics
54- ChannelBufferUsage map [string ]metrics.Gauge
55- DroppedSignals metrics.Counter
56-
57- // Error metrics
58- ErrorsByType map [string ]metrics.Counter
59- RecoverableErrors metrics.Counter
60- NonRecoverableErrors metrics.Counter
52+ TxsPerBlock metrics.Histogram
6153
6254 // Performance metrics
6355 OperationDuration map [string ]metrics.Histogram
64- GoroutineCount metrics.Gauge
6556
6657 // DA metrics
67- DASubmissionAttempts metrics.Counter
68- DASubmissionSuccesses metrics.Counter
69- DASubmissionFailures metrics.Counter
70- DARetrievalAttempts metrics.Counter
71- DARetrievalSuccesses metrics.Counter
72- DARetrievalFailures metrics.Counter
73- DAInclusionHeight metrics.Gauge
74- PendingHeadersCount metrics.Gauge
75- PendingDataCount metrics.Gauge
76-
77- // Sync metrics
78- SyncLag metrics.Gauge
79- HeadersSynced metrics.Counter
80- DataSynced metrics.Counter
81- BlocksApplied metrics.Counter
82- InvalidHeadersCount metrics.Counter
83-
84- // Block production metrics
85- BlockProductionTime metrics.Histogram
86- EmptyBlocksProduced metrics.Counter
87- LazyBlocksProduced metrics.Counter
88- NormalBlocksProduced metrics.Counter
89- TxsPerBlock metrics.Histogram
90-
91- // State transition metrics
92- StateTransitions map [string ]metrics.Counter
93- InvalidTransitions metrics.Counter
94-
95- // DA Submitter metrics
9658 DASubmitterFailures map [DASubmitterFailureReason ]metrics.Counter // Counter with reason label
9759 DASubmitterLastFailure map [DASubmitterFailureReason ]metrics.Gauge // Timestamp gauge with reason label
9860 DASubmitterPendingBlobs metrics.Gauge // Total number of blobs awaiting submission (backlog)
9961 DASubmitterResends metrics.Counter // Number of resend attempts
62+ DARetrievalAttempts metrics.Counter
63+ DARetrievalSuccesses metrics.Counter
64+ DARetrievalFailures metrics.Counter
65+ DAInclusionHeight metrics.Gauge
66+ PendingHeadersCount metrics.Gauge
67+ PendingDataCount metrics.Gauge
10068}
10169
10270// PrometheusMetrics returns Metrics built using Prometheus client library
@@ -107,10 +75,7 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {
10775 }
10876
10977 m := & Metrics {
110- ChannelBufferUsage : make (map [string ]metrics.Gauge ),
111- ErrorsByType : make (map [string ]metrics.Counter ),
11278 OperationDuration : make (map [string ]metrics.Histogram ),
113- StateTransitions : make (map [string ]metrics.Counter ),
11479 DASubmitterFailures : make (map [DASubmitterFailureReason ]metrics.Counter ),
11580 DASubmitterLastFailure : make (map [DASubmitterFailureReason ]metrics.Gauge ),
11681 }
@@ -151,63 +116,12 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {
151116 Help : "The latest block height." ,
152117 }, labels ).With (labelsAndValues ... )
153118
154- // Channel metrics
155- m .DroppedSignals = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
156- Namespace : namespace ,
157- Subsystem : MetricsSubsystem ,
158- Name : "dropped_signals_total" ,
159- Help : "Total number of dropped channel signals" ,
160- }, labels ).With (labelsAndValues ... )
161-
162- // Initialize channel buffer usage gauges
163- channelNames := []string {"height_in" , "header_store" , "data_store" , "retrieve" , "da_includer" , "tx_notify" }
164- for _ , name := range channelNames {
165- m .ChannelBufferUsage [name ] = prometheus .NewGaugeFrom (stdprometheus.GaugeOpts {
166- Namespace : namespace ,
167- Subsystem : MetricsSubsystem ,
168- Name : "channel_buffer_usage" ,
169- Help : "Current buffer usage of channels" ,
170- ConstLabels : map [string ]string {
171- "channel" : name ,
172- },
173- }, labels ).With (labelsAndValues ... )
174- }
175-
176- // Error metrics
177- m .RecoverableErrors = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
178- Namespace : namespace ,
179- Subsystem : MetricsSubsystem ,
180- Name : "recoverable_errors_total" ,
181- Help : "Total number of recoverable errors" ,
182- }, labels ).With (labelsAndValues ... )
183-
184- m .NonRecoverableErrors = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
185- Namespace : namespace ,
186- Subsystem : MetricsSubsystem ,
187- Name : "non_recoverable_errors_total" ,
188- Help : "Total number of non-recoverable errors" ,
189- }, labels ).With (labelsAndValues ... )
190-
191- // Initialize error type counters
192- errorTypes := []string {"block_production" , "da_submission" , "sync" , "validation" , "state_update" }
193- for _ , errType := range errorTypes {
194- m .ErrorsByType [errType ] = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
195- Namespace : namespace ,
196- Subsystem : MetricsSubsystem ,
197- Name : "errors_by_type_total" ,
198- Help : "Total number of errors by type" ,
199- ConstLabels : map [string ]string {
200- "error_type" : errType ,
201- },
202- }, labels ).With (labelsAndValues ... )
203- }
204-
205- // Performance metrics
206- m .GoroutineCount = prometheus .NewGaugeFrom (stdprometheus.GaugeOpts {
119+ m .TxsPerBlock = prometheus .NewHistogramFrom (stdprometheus.HistogramOpts {
207120 Namespace : namespace ,
208121 Subsystem : MetricsSubsystem ,
209- Name : "goroutines_count" ,
210- Help : "Current number of goroutines" ,
122+ Name : "txs_per_block" ,
123+ Help : "Number of transactions per block" ,
124+ Buckets : []float64 {0 , 1 , 5 , 10 , 25 , 50 , 100 , 250 , 500 , 1000 , 2500 , 5000 },
211125 }, labels ).With (labelsAndValues ... )
212126
213127 // Initialize operation duration histograms
@@ -226,27 +140,6 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {
226140 }
227141
228142 // DA metrics
229- m .DASubmissionAttempts = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
230- Namespace : namespace ,
231- Subsystem : MetricsSubsystem ,
232- Name : "da_submission_attempts_total" ,
233- Help : "Total number of DA submission attempts" ,
234- }, labels ).With (labelsAndValues ... )
235-
236- m .DASubmissionSuccesses = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
237- Namespace : namespace ,
238- Subsystem : MetricsSubsystem ,
239- Name : "da_submission_successes_total" ,
240- Help : "Total number of successful DA submissions" ,
241- }, labels ).With (labelsAndValues ... )
242-
243- m .DASubmissionFailures = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
244- Namespace : namespace ,
245- Subsystem : MetricsSubsystem ,
246- Name : "da_submission_failures_total" ,
247- Help : "Total number of failed DA submissions" ,
248- }, labels ).With (labelsAndValues ... )
249-
250143 m .DARetrievalAttempts = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
251144 Namespace : namespace ,
252145 Subsystem : MetricsSubsystem ,
@@ -289,102 +182,6 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {
289182 Help : "Number of data blocks pending DA submission" ,
290183 }, labels ).With (labelsAndValues ... )
291184
292- // Sync metrics
293- m .SyncLag = prometheus .NewGaugeFrom (stdprometheus.GaugeOpts {
294- Namespace : namespace ,
295- Subsystem : MetricsSubsystem ,
296- Name : "sync_lag_blocks" ,
297- Help : "Number of blocks behind the head" ,
298- }, labels ).With (labelsAndValues ... )
299-
300- m .HeadersSynced = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
301- Namespace : namespace ,
302- Subsystem : MetricsSubsystem ,
303- Name : "headers_synced_total" ,
304- Help : "Total number of headers synced" ,
305- }, labels ).With (labelsAndValues ... )
306-
307- m .DataSynced = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
308- Namespace : namespace ,
309- Subsystem : MetricsSubsystem ,
310- Name : "data_synced_total" ,
311- Help : "Total number of data blocks synced" ,
312- }, labels ).With (labelsAndValues ... )
313-
314- m .BlocksApplied = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
315- Namespace : namespace ,
316- Subsystem : MetricsSubsystem ,
317- Name : "blocks_applied_total" ,
318- Help : "Total number of blocks applied to state" ,
319- }, labels ).With (labelsAndValues ... )
320-
321- m .InvalidHeadersCount = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
322- Namespace : namespace ,
323- Subsystem : MetricsSubsystem ,
324- Name : "invalid_headers_total" ,
325- Help : "Total number of invalid headers rejected" ,
326- }, labels ).With (labelsAndValues ... )
327-
328- // Block production metrics
329- m .BlockProductionTime = prometheus .NewHistogramFrom (stdprometheus.HistogramOpts {
330- Namespace : namespace ,
331- Subsystem : MetricsSubsystem ,
332- Name : "block_production_duration_seconds" ,
333- Help : "Time taken to produce a block" ,
334- Buckets : []float64 {.001 , .005 , .01 , .025 , .05 , .1 , .25 , .5 , 1 },
335- }, labels ).With (labelsAndValues ... )
336-
337- m .EmptyBlocksProduced = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
338- Namespace : namespace ,
339- Subsystem : MetricsSubsystem ,
340- Name : "empty_blocks_produced_total" ,
341- Help : "Total number of empty blocks produced" ,
342- }, labels ).With (labelsAndValues ... )
343-
344- m .LazyBlocksProduced = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
345- Namespace : namespace ,
346- Subsystem : MetricsSubsystem ,
347- Name : "lazy_blocks_produced_total" ,
348- Help : "Total number of blocks produced in lazy mode" ,
349- }, labels ).With (labelsAndValues ... )
350-
351- m .NormalBlocksProduced = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
352- Namespace : namespace ,
353- Subsystem : MetricsSubsystem ,
354- Name : "normal_blocks_produced_total" ,
355- Help : "Total number of blocks produced in normal mode" ,
356- }, labels ).With (labelsAndValues ... )
357-
358- m .TxsPerBlock = prometheus .NewHistogramFrom (stdprometheus.HistogramOpts {
359- Namespace : namespace ,
360- Subsystem : MetricsSubsystem ,
361- Name : "txs_per_block" ,
362- Help : "Number of transactions per block" ,
363- Buckets : []float64 {0 , 1 , 5 , 10 , 25 , 50 , 100 , 250 , 500 , 1000 , 2500 , 5000 },
364- }, labels ).With (labelsAndValues ... )
365-
366- // State transition metrics
367- m .InvalidTransitions = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
368- Namespace : namespace ,
369- Subsystem : MetricsSubsystem ,
370- Name : "invalid_state_transitions_total" ,
371- Help : "Total number of invalid state transitions attempted" ,
372- }, labels ).With (labelsAndValues ... )
373-
374- // Initialize state transition counters
375- transitions := []string {"pending_to_submitted" , "submitted_to_included" , "included_to_finalized" }
376- for _ , transition := range transitions {
377- m .StateTransitions [transition ] = prometheus .NewCounterFrom (stdprometheus.CounterOpts {
378- Namespace : namespace ,
379- Subsystem : MetricsSubsystem ,
380- Name : "state_transitions_total" ,
381- Help : "Total number of state transitions" ,
382- ConstLabels : map [string ]string {
383- "transition" : transition ,
384- },
385- }, labels ).With (labelsAndValues ... )
386- }
387-
388185 // DA Submitter metrics
389186 m .DASubmitterPendingBlobs = prometheus .NewGaugeFrom (stdprometheus.GaugeOpts {
390187 Namespace : namespace ,
@@ -435,63 +232,28 @@ func NopMetrics() *Metrics {
435232 BlockSizeBytes : discard .NewGauge (),
436233 TotalTxs : discard .NewGauge (),
437234 CommittedHeight : discard .NewGauge (),
235+ TxsPerBlock : discard .NewHistogram (),
438236
439237 // Extended metrics
440- ChannelBufferUsage : make (map [string ]metrics.Gauge ),
441- ErrorsByType : make (map [string ]metrics.Counter ),
442238 OperationDuration : make (map [string ]metrics.Histogram ),
443- StateTransitions : make (map [string ]metrics.Counter ),
444- DroppedSignals : discard .NewCounter (),
445- RecoverableErrors : discard .NewCounter (),
446- NonRecoverableErrors : discard .NewCounter (),
447- GoroutineCount : discard .NewGauge (),
448- DASubmissionAttempts : discard .NewCounter (),
449- DASubmissionSuccesses : discard .NewCounter (),
450- DASubmissionFailures : discard .NewCounter (),
451239 DARetrievalAttempts : discard .NewCounter (),
452240 DARetrievalSuccesses : discard .NewCounter (),
453241 DARetrievalFailures : discard .NewCounter (),
454242 DAInclusionHeight : discard .NewGauge (),
455243 PendingHeadersCount : discard .NewGauge (),
456244 PendingDataCount : discard .NewGauge (),
457- SyncLag : discard .NewGauge (),
458- HeadersSynced : discard .NewCounter (),
459- DataSynced : discard .NewCounter (),
460- BlocksApplied : discard .NewCounter (),
461- InvalidHeadersCount : discard .NewCounter (),
462- BlockProductionTime : discard .NewHistogram (),
463- EmptyBlocksProduced : discard .NewCounter (),
464- LazyBlocksProduced : discard .NewCounter (),
465- NormalBlocksProduced : discard .NewCounter (),
466- TxsPerBlock : discard .NewHistogram (),
467- InvalidTransitions : discard .NewCounter (),
468245 DASubmitterFailures : make (map [DASubmitterFailureReason ]metrics.Counter ),
469246 DASubmitterLastFailure : make (map [DASubmitterFailureReason ]metrics.Gauge ),
470247 DASubmitterPendingBlobs : discard .NewGauge (),
471248 DASubmitterResends : discard .NewCounter (),
472249 }
473250
474251 // Initialize maps with no-op metrics
475- channelNames := []string {"height_in" , "header_store" , "data_store" , "retrieve" , "da_includer" , "tx_notify" }
476- for _ , name := range channelNames {
477- m .ChannelBufferUsage [name ] = discard .NewGauge ()
478- }
479-
480- errorTypes := []string {"block_production" , "da_submission" , "sync" , "validation" , "state_update" }
481- for _ , errType := range errorTypes {
482- m .ErrorsByType [errType ] = discard .NewCounter ()
483- }
484-
485252 operations := []string {"block_production" , "da_submission" , "block_retrieval" , "block_validation" , "state_update" }
486253 for _ , op := range operations {
487254 m .OperationDuration [op ] = discard .NewHistogram ()
488255 }
489256
490- transitions := []string {"pending_to_submitted" , "submitted_to_included" , "included_to_finalized" }
491- for _ , transition := range transitions {
492- m .StateTransitions [transition ] = discard .NewCounter ()
493- }
494-
495257 // Initialize DA submitter failure maps with no-op metrics
496258 for _ , reason := range AllDASubmitterFailureReasons () {
497259 m .DASubmitterFailures [reason ] = discard .NewCounter ()
0 commit comments