@aztec/telemetry-client 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dest/attributes.d.ts +22 -2
  2. package/dest/attributes.d.ts.map +1 -1
  3. package/dest/attributes.js +11 -1
  4. package/dest/config.d.ts +3 -1
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +17 -9
  7. package/dest/index.d.ts +2 -1
  8. package/dest/index.d.ts.map +1 -1
  9. package/dest/index.js +1 -0
  10. package/dest/json_rpc_server_metrics.d.ts +27 -0
  11. package/dest/json_rpc_server_metrics.d.ts.map +1 -0
  12. package/dest/json_rpc_server_metrics.js +154 -0
  13. package/dest/lmdb_metrics.d.ts +2 -2
  14. package/dest/lmdb_metrics.d.ts.map +1 -1
  15. package/dest/metrics.d.ts +84 -5
  16. package/dest/metrics.d.ts.map +1 -1
  17. package/dest/metrics.js +450 -19
  18. package/dest/monitored_batch_span_processor.d.ts +29 -0
  19. package/dest/monitored_batch_span_processor.d.ts.map +1 -0
  20. package/dest/monitored_batch_span_processor.js +75 -0
  21. package/dest/otel.d.ts +6 -1
  22. package/dest/otel.d.ts.map +1 -1
  23. package/dest/otel.js +99 -4
  24. package/dest/otel_propagation.d.ts +4 -1
  25. package/dest/otel_propagation.d.ts.map +1 -1
  26. package/dest/otel_propagation.js +64 -6
  27. package/dest/start.d.ts +1 -1
  28. package/dest/start.d.ts.map +1 -1
  29. package/dest/start.js +1 -1
  30. package/dest/telemetry.d.ts +5 -3
  31. package/dest/telemetry.d.ts.map +1 -1
  32. package/dest/vendor/attributes.d.ts +2 -1
  33. package/dest/vendor/attributes.d.ts.map +1 -1
  34. package/dest/vendor/attributes.js +1 -0
  35. package/dest/wrappers/fetch.d.ts +3 -3
  36. package/dest/wrappers/fetch.d.ts.map +1 -1
  37. package/dest/wrappers/fetch.js +3 -2
  38. package/dest/wrappers/index.d.ts +1 -2
  39. package/dest/wrappers/index.d.ts.map +1 -1
  40. package/dest/wrappers/index.js +0 -1
  41. package/dest/wrappers/json_rpc_server.d.ts +1 -1
  42. package/dest/wrappers/json_rpc_server.d.ts.map +1 -1
  43. package/dest/wrappers/json_rpc_server.js +6 -1
  44. package/package.json +3 -3
  45. package/src/attributes.ts +29 -1
  46. package/src/config.ts +24 -9
  47. package/src/index.ts +1 -0
  48. package/src/json_rpc_server_metrics.ts +151 -0
  49. package/src/metrics.ts +473 -19
  50. package/src/monitored_batch_span_processor.ts +100 -0
  51. package/src/otel.ts +69 -3
  52. package/src/otel_propagation.ts +63 -5
  53. package/src/start.ts +6 -1
  54. package/src/telemetry.ts +6 -2
  55. package/src/vendor/attributes.ts +1 -0
  56. package/src/wrappers/fetch.ts +9 -3
  57. package/src/wrappers/index.ts +0 -1
  58. package/src/wrappers/json_rpc_server.ts +13 -2
  59. package/dest/wrappers/l2_block_stream.d.ts +0 -16
  60. package/dest/wrappers/l2_block_stream.d.ts.map +0 -1
  61. package/dest/wrappers/l2_block_stream.js +0 -400
  62. package/src/wrappers/l2_block_stream.ts +0 -41
package/src/metrics.ts CHANGED
@@ -33,6 +33,46 @@ export interface MetricDefinition {
33
33
  readonly valueType?: ValueType;
34
34
  }
35
35
 
36
+ export const JSON_RPC_SERVER_REQUEST_COUNT: MetricDefinition = {
37
+ name: 'aztec.json_rpc.server.request_count',
38
+ description: 'Number of completed JSON-RPC server requests',
39
+ valueType: ValueType.INT,
40
+ };
41
+ export const JSON_RPC_SERVER_REQUEST_DURATION: MetricDefinition = {
42
+ name: 'aztec.json_rpc.server.request_duration',
43
+ description: 'JSON-RPC server request handler duration',
44
+ unit: 'ms',
45
+ valueType: ValueType.DOUBLE,
46
+ };
47
+ export const JSON_RPC_SERVER_REQUEST_VALIDATION_DURATION: MetricDefinition = {
48
+ name: 'aztec.json_rpc.server.request_validation_duration',
49
+ description: 'JSON-RPC server request parameter validation duration',
50
+ unit: 'ms',
51
+ valueType: ValueType.DOUBLE,
52
+ };
53
+ export const JSON_RPC_SERVER_REJECTED_REQUEST_COUNT: MetricDefinition = {
54
+ name: 'aztec.json_rpc.server.rejected_request_count',
55
+ description: 'Number of JSON-RPC requests rejected before handler dispatch',
56
+ valueType: ValueType.INT,
57
+ };
58
+ export const JSON_RPC_SERVER_BATCH_COUNT: MetricDefinition = {
59
+ name: 'aztec.json_rpc.server.batch_count',
60
+ description: 'Number of JSON-RPC batches received',
61
+ valueType: ValueType.INT,
62
+ };
63
+ export const JSON_RPC_SERVER_BATCH_DURATION: MetricDefinition = {
64
+ name: 'aztec.json_rpc.server.batch_duration',
65
+ description: 'JSON-RPC batch processing duration',
66
+ unit: 'ms',
67
+ valueType: ValueType.DOUBLE,
68
+ };
69
+ export const JSON_RPC_SERVER_BATCH_SIZE: MetricDefinition = {
70
+ name: 'aztec.json_rpc.server.batch_size',
71
+ description: 'Number of requests in a JSON-RPC batch',
72
+ unit: 'requests',
73
+ valueType: ValueType.INT,
74
+ };
75
+
36
76
  export const BLOB_SINK_STORE_REQUESTS: MetricDefinition = {
37
77
  name: 'aztec.blob_sink.store_request_count',
38
78
  description: 'Number of blob store requests',
@@ -162,10 +202,77 @@ export const MEMPOOL_TX_ADDED_COUNT: MetricDefinition = {
162
202
  };
163
203
  export const MEMPOOL_TX_MINED_DELAY: MetricDefinition = {
164
204
  name: 'aztec.mempool.tx_mined_delay',
165
- description: 'Delay between transaction added and evicted from the mempool',
205
+ description: 'Delay (ms) from a transaction being received into the pool to being mined',
206
+ unit: 'ms',
207
+ valueType: ValueType.INT,
208
+ };
209
+
210
+ export const MEMPOOL_TX_POOL_V2_EVICTED_COUNT: MetricDefinition = {
211
+ name: 'aztec.mempool.tx_pool_v2.evicted_count',
212
+ description: 'The number of transactions evicted from the tx pool',
213
+ valueType: ValueType.INT,
214
+ };
215
+ export const MEMPOOL_TX_POOL_V2_IGNORED_COUNT: MetricDefinition = {
216
+ name: 'aztec.mempool.tx_pool_v2.ignored_count',
217
+ description: 'The number of transactions ignored in addPendingTxs',
218
+ valueType: ValueType.INT,
219
+ };
220
+ export const MEMPOOL_TX_POOL_V2_REJECTED_COUNT: MetricDefinition = {
221
+ name: 'aztec.mempool.tx_pool_v2.rejected_count',
222
+ description: 'The number of transactions rejected in addPendingTxs',
223
+ valueType: ValueType.INT,
224
+ };
225
+ export const MEMPOOL_TX_POOL_V2_SOFT_DELETED_HITS: MetricDefinition = {
226
+ name: 'aztec.mempool.tx_pool_v2.soft_deleted_hits',
227
+ description: 'The number of transactions found in the soft-deleted pool',
228
+ valueType: ValueType.INT,
229
+ };
230
+ export const MEMPOOL_TX_POOL_V2_MISSING_ON_PROTECT: MetricDefinition = {
231
+ name: 'aztec.mempool.tx_pool_v2.missing_on_protect',
232
+ description: 'The number of truly missing transactions in protectTxs',
233
+ valueType: ValueType.INT,
234
+ };
235
+ export const MEMPOOL_TX_POOL_V2_MISSING_PREVIOUSLY_EVICTED: MetricDefinition = {
236
+ name: 'aztec.mempool.tx_pool_v2.missing_previously_evicted',
237
+ description: 'The number of truly missing transactions in protectTxs that were previously evicted',
238
+ valueType: ValueType.INT,
239
+ };
240
+ export const MEMPOOL_TX_POOL_V2_METADATA_MEMORY: MetricDefinition = {
241
+ name: 'aztec.mempool.tx_pool_v2.metadata_memory',
242
+ description: 'Estimated total memory consumed by in-memory transaction metadata',
243
+ unit: 'By',
244
+ valueType: ValueType.INT,
245
+ };
246
+
247
+ export const MEMPOOL_TX_POOL_V2_QUEUE_WAIT: MetricDefinition = {
248
+ name: 'aztec.mempool.tx_pool_v2.queue_wait',
249
+ description: 'Time an operation waits in the tx pool serial queue before executing, keyed by mempool.operation',
166
250
  unit: 'ms',
167
251
  valueType: ValueType.INT,
168
252
  };
253
+ export const MEMPOOL_TX_POOL_V2_QUEUE_EXECUTION: MetricDefinition = {
254
+ name: 'aztec.mempool.tx_pool_v2.queue_execution',
255
+ description: 'Time an operation spends executing in the tx pool serial queue, keyed by mempool.operation',
256
+ unit: 'ms',
257
+ valueType: ValueType.INT,
258
+ };
259
+ export const MEMPOOL_TX_POOL_V2_QUEUE_LENGTH: MetricDefinition = {
260
+ name: 'aztec.mempool.tx_pool_v2.queue_length',
261
+ description: 'Number of operations waiting in the tx pool serial queue',
262
+ valueType: ValueType.INT,
263
+ };
264
+
265
+ export const MEMPOOL_TX_POOL_V2_DUPLICATE_ADD: MetricDefinition = {
266
+ name: 'aztec.mempool.tx_pool_v2.duplicate_add',
267
+ description: 'Transactions received via addPendingTxs that were already in the pool',
268
+ valueType: ValueType.INT,
269
+ };
270
+
271
+ export const MEMPOOL_TX_POOL_V2_ALREADY_PROTECTED_ADD: MetricDefinition = {
272
+ name: 'aztec.mempool.tx_pool_v2.already_protected_add',
273
+ description: 'Transactions received via addPendingTxs that were already pre-protected',
274
+ valueType: ValueType.INT,
275
+ };
169
276
 
170
277
  export const DB_NUM_ITEMS: MetricDefinition = {
171
278
  name: 'aztec.db.num_items',
@@ -224,6 +331,11 @@ export const ARCHIVER_BLOCK_HEIGHT: MetricDefinition = {
224
331
  description: 'The height of the latest block processed by the archiver',
225
332
  valueType: ValueType.INT,
226
333
  };
334
+ export const ARCHIVER_CHECKPOINT_HEIGHT: MetricDefinition = {
335
+ name: 'aztec.archiver.checkpoint_height',
336
+ description: 'The height of the latest checkpoint processed by the archiver',
337
+ valueType: ValueType.INT,
338
+ };
227
339
  export const ARCHIVER_ROLLUP_PROOF_DELAY: MetricDefinition = {
228
340
  name: 'aztec.archiver.rollup_proof_delay',
229
341
  description: 'Time after a block is submitted until its proof is published',
@@ -254,6 +366,12 @@ export const ARCHIVER_SYNC_PER_BLOCK: MetricDefinition = {
254
366
  unit: 'ms',
255
367
  valueType: ValueType.INT,
256
368
  };
369
+ export const ARCHIVER_SYNC_PER_CHECKPOINT: MetricDefinition = {
370
+ name: 'aztec.archiver.checkpoint.sync_per_item_duration',
371
+ description: 'Duration to sync a checkpoint',
372
+ unit: 'ms',
373
+ valueType: ValueType.INT,
374
+ };
257
375
  export const ARCHIVER_SYNC_BLOCK_COUNT: MetricDefinition = {
258
376
  name: 'aztec.archiver.block.sync_count',
259
377
  description: 'Number of blocks synced from L1',
@@ -280,7 +398,8 @@ export const ARCHIVER_PRUNE_DURATION: MetricDefinition = {
280
398
  };
281
399
  export const ARCHIVER_PRUNE_COUNT: MetricDefinition = {
282
400
  name: 'aztec.archiver.prune_count',
283
- description: 'Number of prunes detected',
401
+ description:
402
+ 'Number of prunes detected, dimensioned by prune_type: unproven (epoch prune of checkpoints that will not be proven), uncheckpointed (proposed blocks whose slot ended without a checkpoint), l1_conflict (proposed blocks conflicting with an L1 checkpoint), orphan (proposed blocks whose matching proposed checkpoint never arrived before the deadline), and l1_mismatch (the local checkpointed tip diverged from L1 — an L1 reorg or a pruned/missed-proof checkpoint — rewinding already-checkpointed blocks).',
284
403
  valueType: ValueType.INT,
285
404
  };
286
405
 
@@ -296,6 +415,19 @@ export const ARCHIVER_BLOCK_PROPOSAL_TX_TARGET_COUNT: MetricDefinition = {
296
415
  valueType: ValueType.INT,
297
416
  };
298
417
 
418
+ export const ARCHIVER_CHECKPOINT_L1_INCLUSION_DELAY: MetricDefinition = {
419
+ name: 'aztec.archiver.checkpoint_l1_inclusion_delay',
420
+ description: 'Seconds into the L2 slot when the checkpoint L1 tx was included',
421
+ unit: 's',
422
+ valueType: ValueType.INT,
423
+ };
424
+
425
+ export const ARCHIVER_CHECKPOINT_PROMOTED_COUNT: MetricDefinition = {
426
+ name: 'aztec.archiver.checkpoint_promoted_count',
427
+ description: 'Number of checkpoints promoted from proposed (blob fetch skipped)',
428
+ valueType: ValueType.INT,
429
+ };
430
+
299
431
  export const NODE_RECEIVE_TX_DURATION: MetricDefinition = {
300
432
  name: 'aztec.node.receive_tx.duration',
301
433
  description: 'The duration of the receiveTx method',
@@ -327,6 +459,12 @@ export const SEQUENCER_STATE_TRANSITION_BUFFER_DURATION: MetricDefinition = {
327
459
  unit: 'ms',
328
460
  valueType: ValueType.INT,
329
461
  };
462
+ export const SEQUENCER_STATE_DURATION: MetricDefinition = {
463
+ name: 'aztec.sequencer.state_duration',
464
+ description: 'Wall-clock time spent in each sequencer state, labelled by the state being left',
465
+ unit: 'ms',
466
+ valueType: ValueType.INT,
467
+ };
330
468
  export const SEQUENCER_BLOCK_BUILD_DURATION: MetricDefinition = {
331
469
  name: 'aztec.sequencer.block.build_duration',
332
470
  description: 'Duration to build a block',
@@ -344,9 +482,15 @@ export const SEQUENCER_BLOCK_COUNT: MetricDefinition = {
344
482
  description: 'Number of blocks built by this sequencer',
345
483
  valueType: ValueType.INT,
346
484
  };
347
- export const SEQUENCER_CURRENT_BLOCK_REWARDS: MetricDefinition = {
348
- name: 'aztec.sequencer.current_block_rewards',
349
- description: 'The rewards earned',
485
+ export const SEQUENCER_BLOCK_INTER_BLOCK_TIME: MetricDefinition = {
486
+ name: 'aztec.sequencer.block.inter_block_time',
487
+ description: 'Wall-clock time elapsed between consecutive blocks being built by this sequencer',
488
+ unit: 'ms',
489
+ valueType: ValueType.INT,
490
+ };
491
+ export const SEQUENCER_CURRENT_SLOT_REWARDS: MetricDefinition = {
492
+ name: 'aztec.sequencer.current_slot_rewards',
493
+ description: 'The rewards earned per filled slot',
350
494
  valueType: ValueType.DOUBLE,
351
495
  };
352
496
  export const SEQUENCER_SLOT_COUNT: MetricDefinition = {
@@ -369,12 +513,12 @@ export const SEQUENCER_CHECKPOINT_ATTESTATION_DELAY: MetricDefinition = {
369
513
 
370
514
  export const SEQUENCER_COLLECTED_ATTESTATIONS_COUNT: MetricDefinition = {
371
515
  name: 'aztec.sequencer.attestations.collected_count',
372
- description: 'The number of attestations collected for a block proposal',
516
+ description: 'The number of attestations collected for a checkpoint proposal',
373
517
  valueType: ValueType.INT,
374
518
  };
375
519
  export const SEQUENCER_REQUIRED_ATTESTATIONS_COUNT: MetricDefinition = {
376
520
  name: 'aztec.sequencer.attestations.required_count',
377
- description: 'The minimum number of attestations required to publish a block',
521
+ description: 'The minimum number of attestations required to publish a checkpoint',
378
522
  valueType: ValueType.INT,
379
523
  };
380
524
  export const SEQUENCER_COLLECT_ATTESTATIONS_DURATION: MetricDefinition = {
@@ -395,14 +539,61 @@ export const SEQUENCER_BLOCK_PROPOSAL_FAILED_COUNT: MetricDefinition = {
395
539
  description: 'The number of times block proposal failed (including validation builds)',
396
540
  valueType: ValueType.INT,
397
541
  };
398
- export const SEQUENCER_BLOCK_PROPOSAL_SUCCESS_COUNT: MetricDefinition = {
399
- name: 'aztec.sequencer.block.proposal_success_count',
400
- description: 'The number of times block proposal succeeded (including validation builds)',
542
+ export const SEQUENCER_CHECKPOINT_PROPOSAL_SUCCESS_COUNT: MetricDefinition = {
543
+ name: 'aztec.sequencer.checkpoint.proposal_success_count',
544
+ description: 'The number of times checkpoint proposal succeeded',
545
+ valueType: ValueType.INT,
546
+ };
547
+ export const SEQUENCER_CHECKPOINT_PRECHECK_FAILED_COUNT: MetricDefinition = {
548
+ name: 'aztec.sequencer.checkpoint.precheck_failed_count',
549
+ description: 'The number of times checkpoint pre-build checks failed',
550
+ valueType: ValueType.INT,
551
+ };
552
+ export const SEQUENCER_CHECKPOINT_PROPOSAL_FAILED_COUNT: MetricDefinition = {
553
+ name: 'aztec.sequencer.checkpoint.proposal_failed_count',
554
+ description: 'The number of times checkpoint proposal failed',
555
+ valueType: ValueType.INT,
556
+ };
557
+ export const SEQUENCER_CHECKPOINT_BUILD_DURATION: MetricDefinition = {
558
+ name: 'aztec.sequencer.checkpoint.build_duration',
559
+ description: 'Total duration to build all blocks in a checkpoint',
560
+ unit: 'ms',
561
+ valueType: ValueType.INT,
562
+ };
563
+ export const SEQUENCER_CHECKPOINT_START_TO_FIRST_BLOCK_DURATION: MetricDefinition = {
564
+ name: 'aztec.sequencer.checkpoint.start_to_first_block_duration',
565
+ description: 'Time from starting checkpoint work to the first block finishing build',
566
+ unit: 'ms',
567
+ valueType: ValueType.INT,
568
+ };
569
+ export const SEQUENCER_CHECKPOINT_LAST_BLOCK_TO_BROADCAST_DURATION: MetricDefinition = {
570
+ name: 'aztec.sequencer.checkpoint.last_block_to_broadcast_duration',
571
+ description: 'Time from the final block finishing build to the checkpoint proposal being broadcast',
572
+ unit: 'ms',
573
+ valueType: ValueType.INT,
574
+ };
575
+ export const SEQUENCER_PIPELINED_CHECKPOINT_BUILD_START_OFFSET_FROM_SLOT_BOUNDARY: MetricDefinition = {
576
+ name: 'aztec.sequencer.pipelined_checkpoint.build_start_offset_from_slot_boundary',
577
+ description:
578
+ 'Absolute offset from the wall-clock slot boundary when a pipelined checkpoint build starts. Use aztec.slot_boundary_side to distinguish before vs after the boundary.',
579
+ unit: 'ms',
580
+ valueType: ValueType.INT,
581
+ };
582
+ export const SEQUENCER_CHECKPOINT_BLOCK_COUNT: MetricDefinition = {
583
+ name: 'aztec.sequencer.checkpoint.block_count',
584
+ description: 'Number of blocks built in a checkpoint',
401
585
  valueType: ValueType.INT,
402
586
  };
403
- export const SEQUENCER_BLOCK_PROPOSAL_PRECHECK_FAILED_COUNT: MetricDefinition = {
404
- name: 'aztec.sequencer.block.proposal_precheck_failed_count',
405
- description: 'The number of times block proposal pre-build checks failed',
587
+ export const SEQUENCER_CHECKPOINT_TX_COUNT: MetricDefinition = {
588
+ name: 'aztec.sequencer.checkpoint.tx_count',
589
+ description: 'Total number of transactions across all blocks in a checkpoint',
590
+ unit: 'tx',
591
+ valueType: ValueType.INT,
592
+ };
593
+ export const SEQUENCER_CHECKPOINT_TOTAL_MANA: MetricDefinition = {
594
+ name: 'aztec.sequencer.checkpoint.total_mana',
595
+ description: 'Total L2 mana used across all blocks in a checkpoint',
596
+ unit: 'mana',
406
597
  valueType: ValueType.INT,
407
598
  };
408
599
  export const SEQUENCER_SLASHING_ATTEMPTS_COUNT: MetricDefinition = {
@@ -410,11 +601,66 @@ export const SEQUENCER_SLASHING_ATTEMPTS_COUNT: MetricDefinition = {
410
601
  description: 'The number of slashing action attempts',
411
602
  valueType: ValueType.INT,
412
603
  };
604
+ export const SLASHER_ROUND_EXECUTED_COUNT: MetricDefinition = {
605
+ name: 'aztec.slasher.round.executed_count',
606
+ description: 'The number of slashing rounds executed',
607
+ valueType: ValueType.INT,
608
+ };
609
+ export const SLASHER_OWN_VALIDATOR_TARGETED_COUNT: MetricDefinition = {
610
+ name: 'aztec.slasher.own_validator.targeted_count',
611
+ description:
612
+ "The number of times one of the node's own validators was named as a slash target by an onchain vote, counted " +
613
+ 'once per vote per validator. Votes cast while the node is offline or starting up are not counted, and L1 ' +
614
+ 'reorgs can cause small drift within a round.',
615
+ valueType: ValueType.INT,
616
+ };
617
+ export const SLASHER_OWN_VALIDATOR_CURRENT_ROUND_VOTES_MAX: MetricDefinition = {
618
+ name: 'aztec.slasher.own_validator.current_round_votes_max',
619
+ description:
620
+ "Highest number of votes cast against any committee position held by the node's own validators in the current " +
621
+ 'slashing round, to compare against aztec.slasher.quorum_size (the contract tallies quorum per position). ' +
622
+ 'Resets to zero when a new round starts. Votes cast while the node is offline or starting up are not counted, ' +
623
+ 'and L1 reorgs can cause small drift within a round.',
624
+ valueType: ValueType.INT,
625
+ };
626
+ export const SLASHER_QUORUM_SIZE: MetricDefinition = {
627
+ name: 'aztec.slasher.quorum_size',
628
+ description: 'The number of votes a validator must receive in a round to be slashed',
629
+ valueType: ValueType.INT,
630
+ };
631
+ export const SLASHER_OWN_VALIDATOR_SLASHED_COUNT: MetricDefinition = {
632
+ name: 'aztec.slasher.own_validator.slashed_count',
633
+ description: "The number of times one of the node's own validators was slashed, from executed Slashed events",
634
+ valueType: ValueType.INT,
635
+ };
636
+ export const SLASHER_OWN_VALIDATOR_SLASHED_AMOUNT: MetricDefinition = {
637
+ name: 'aztec.slasher.own_validator.slashed_amount',
638
+ description:
639
+ "Cumulative amount slashed from the node's own validators in whole staking-asset tokens, from executed " +
640
+ 'Slashed events',
641
+ unit: 'tokens',
642
+ valueType: ValueType.DOUBLE,
643
+ };
413
644
  export const SEQUENCER_CHECKPOINT_SUCCESS_COUNT: MetricDefinition = {
414
645
  name: 'aztec.sequencer.checkpoint.success_count',
415
646
  description: 'The number of times checkpoint publishing succeeded',
416
647
  valueType: ValueType.INT,
417
648
  };
649
+ export const SEQUENCER_PIPELINE_DEPTH: MetricDefinition = {
650
+ name: 'aztec.sequencer.pipeline.depth',
651
+ description: 'Current pipeline depth when builder pipelining is enabled',
652
+ valueType: ValueType.INT,
653
+ };
654
+ export const SEQUENCER_PIPELINE_DISCARDS_COUNT: MetricDefinition = {
655
+ name: 'aztec.sequencer.pipeline.discards_count',
656
+ description: 'The number of times a pipeline was discarded',
657
+ valueType: ValueType.INT,
658
+ };
659
+ export const SEQUENCER_PIPELINE_PARENT_CHECKPOINT_MISMATCH_COUNT: MetricDefinition = {
660
+ name: 'aztec.sequencer.pipeline.parent_checkpoint_mismatch_count',
661
+ description: 'The number of times a pipelined checkpoint was discarded because the parent did not match expectations',
662
+ valueType: ValueType.INT,
663
+ };
418
664
 
419
665
  // Fisherman fee analysis metrics
420
666
  export const FISHERMAN_FEE_ANALYSIS_WOULD_BE_INCLUDED: MetricDefinition = {
@@ -474,6 +720,29 @@ export const FISHERMAN_FEE_ANALYSIS_MINED_BLOB_TX_TOTAL_COST: MetricDefinition =
474
720
  unit: 'eth',
475
721
  valueType: ValueType.DOUBLE,
476
722
  };
723
+ export const FISHERMAN_FEE_ANALYSIS_PENDING_BLOB_COUNT: MetricDefinition = {
724
+ name: 'aztec.fisherman.fee_analysis.pending_blob_count',
725
+ description: 'Total number of blobs in pending blob transactions',
726
+ unit: 'blobs',
727
+ valueType: ValueType.INT,
728
+ };
729
+ export const FISHERMAN_FEE_ANALYSIS_INCLUDED_BLOB_COUNT: MetricDefinition = {
730
+ name: 'aztec.fisherman.fee_analysis.included_blob_count',
731
+ description: 'Total number of blobs included in the mined block',
732
+ unit: 'blobs',
733
+ valueType: ValueType.INT,
734
+ };
735
+ export const FISHERMAN_FEE_ANALYSIS_BLOCK_BLOBS_FULL: MetricDefinition = {
736
+ name: 'aztec.fisherman.fee_analysis.block_blobs_full',
737
+ description: 'Whether the mined block reached 100% blob capacity',
738
+ valueType: ValueType.INT,
739
+ };
740
+ export const FISHERMAN_FEE_ANALYSIS_MAX_BLOB_CAPACITY: MetricDefinition = {
741
+ name: 'aztec.fisherman.fee_analysis.max_blob_capacity',
742
+ description: 'Maximum blob capacity for the analyzed block based on L1 upgrade schedule',
743
+ unit: 'blobs',
744
+ valueType: ValueType.INT,
745
+ };
477
746
 
478
747
  export const VALIDATOR_INVALID_ATTESTATION_RECEIVED_COUNT: MetricDefinition = {
479
748
  name: 'aztec.validator.invalid_attestation_received_count',
@@ -559,6 +828,24 @@ export const L1_PUBLISHER_TX_TOTAL_FEE: MetricDefinition = {
559
828
  unit: 'eth',
560
829
  valueType: ValueType.DOUBLE,
561
830
  };
831
+ export const PROVER_NODE_ESTIMATED_SUBMISSION_GAS: MetricDefinition = {
832
+ name: 'aztec.prover_node.estimated_submission.gas',
833
+ description: 'Estimated gas for a proof submission tx (proof publishing disabled, not actually sent)',
834
+ unit: 'gas',
835
+ valueType: ValueType.INT,
836
+ };
837
+ export const PROVER_NODE_ESTIMATED_SUBMISSION_GAS_PRICE: MetricDefinition = {
838
+ name: 'aztec.prover_node.estimated_submission.gas_price',
839
+ description: 'Estimated effective gas price for a proof submission tx (proof publishing disabled, not actually sent)',
840
+ unit: 'gwei',
841
+ valueType: ValueType.DOUBLE,
842
+ };
843
+ export const PROVER_NODE_ESTIMATED_SUBMISSION_TOTAL_FEE: MetricDefinition = {
844
+ name: 'aztec.prover_node.estimated_submission.total_fee',
845
+ description: 'Estimated total L1 fee for a proof submission tx (proof publishing disabled, not actually sent)',
846
+ unit: 'eth',
847
+ valueType: ValueType.DOUBLE,
848
+ };
562
849
 
563
850
  export const L1_BLOCK_HEIGHT: MetricDefinition = {
564
851
  name: 'aztec.l1.block_height',
@@ -652,6 +939,12 @@ export const PEER_MANAGER_PEER_COUNT: MetricDefinition = {
652
939
  unit: 'peers',
653
940
  valueType: ValueType.INT,
654
941
  };
942
+ export const PEER_MANAGER_HEALTHY_PEER_COUNT: MetricDefinition = {
943
+ name: 'aztec.peer_manager.healthy_peer_count',
944
+ description: 'Number of healthy (non-protected, non-banned) peers',
945
+ unit: 'peers',
946
+ valueType: ValueType.INT,
947
+ };
655
948
  export const PEER_MANAGER_LOW_SCORE_DISCONNECTS: MetricDefinition = {
656
949
  name: 'aztec.peer_manager.low_score_disconnects',
657
950
  description: 'Number of peers disconnected due to low score',
@@ -781,6 +1074,19 @@ export const P2P_GOSSIP_AGG_MESSAGE_VALIDATION_DURATION_AVG: MetricDefinition =
781
1074
  valueType: ValueType.INT,
782
1075
  };
783
1076
 
1077
+ export const P2P_GOSSIP_SLOW_VALIDATION_COUNT: MetricDefinition = {
1078
+ name: 'aztec.p2p.gossip.slow_validation_count',
1079
+ description: 'Number of gossip validations that exceeded 75% of the mcache eviction window',
1080
+ valueType: ValueType.INT,
1081
+ };
1082
+
1083
+ export const P2P_GOSSIP_TX_VALIDATION_STAGE_DURATION: MetricDefinition = {
1084
+ name: 'aztec.p2p.gossip.tx_validation_stage_duration',
1085
+ description: 'Duration of each stage of gossiped tx validation, keyed by the tx_validation_stage attribute',
1086
+ unit: 'ms',
1087
+ valueType: ValueType.INT,
1088
+ };
1089
+
784
1090
  export const PUBLIC_PROCESSOR_TX_DURATION: MetricDefinition = {
785
1091
  name: 'aztec.public_processor.tx_duration',
786
1092
  description: 'Duration to process a public transaction',
@@ -844,6 +1150,17 @@ export const PUBLIC_PROCESSOR_TREE_INSERTION: MetricDefinition = {
844
1150
  unit: 'ms',
845
1151
  valueType: ValueType.INT,
846
1152
  };
1153
+ export const PUBLIC_PROCESSOR_SILENTLY_SKIPPED_COUNT: MetricDefinition = {
1154
+ name: 'aztec.public_processor.silently_skipped_count',
1155
+ description: 'Public txs fully processed then skipped (e.g. blob-field limit); not counted as processed or failed',
1156
+ valueType: ValueType.INT,
1157
+ };
1158
+ export const PUBLIC_PROCESSOR_SILENTLY_SKIPPED_DURATION: MetricDefinition = {
1159
+ name: 'aztec.public_processor.silently_skipped_duration',
1160
+ description: 'Wall-clock time spent processing txs that were then silently skipped',
1161
+ unit: 'ms',
1162
+ valueType: ValueType.INT,
1163
+ };
847
1164
 
848
1165
  export const PUBLIC_EXECUTOR_PREFIX = 'aztec.public_executor.';
849
1166
  export const PUBLIC_EXECUTOR_SIMULATION_COUNT: MetricDefinition = {
@@ -936,6 +1253,11 @@ export const PROVING_QUEUE_REJECTED_JOBS: MetricDefinition = {
936
1253
  description: 'Number of rejected proving jobs',
937
1254
  valueType: ValueType.INT,
938
1255
  };
1256
+ export const PROVING_QUEUE_ABORTED_JOBS: MetricDefinition = {
1257
+ name: 'aztec.proving_queue.aborted_jobs_count',
1258
+ description: 'Number of aborted proving jobs',
1259
+ valueType: ValueType.INT,
1260
+ };
939
1261
  export const PROVING_QUEUE_RETRIED_JOBS: MetricDefinition = {
940
1262
  name: 'aztec.proving_queue.retried_jobs_count',
941
1263
  description: 'Number of retried proving jobs',
@@ -983,12 +1305,6 @@ export const PROVING_AGENT_IDLE: MetricDefinition = {
983
1305
  valueType: ValueType.DOUBLE,
984
1306
  };
985
1307
 
986
- export const PROVER_NODE_EXECUTION_DURATION: MetricDefinition = {
987
- name: 'aztec.prover_node.execution.duration',
988
- description: 'Duration of execution of an epoch by the prover',
989
- unit: 'ms',
990
- valueType: ValueType.INT,
991
- };
992
1308
  export const PROVER_NODE_JOB_DURATION: MetricDefinition = {
993
1309
  name: 'aztec.prover_node.job_duration',
994
1310
  description: 'Duration of proving job',
@@ -1010,6 +1326,51 @@ export const PROVER_NODE_JOB_TRANSACTIONS: MetricDefinition = {
1010
1326
  description: 'Number of transactions in a proven epoch',
1011
1327
  valueType: ValueType.INT,
1012
1328
  };
1329
+ export const PROVER_NODE_BLOB_PROCESSING_LAST_DURATION: MetricDefinition = {
1330
+ name: 'aztec.prover_node.blob_processing.last_duration',
1331
+ description: 'Duration of blob processing step in epoch proving job',
1332
+ unit: 'ms',
1333
+ valueType: ValueType.INT,
1334
+ };
1335
+ export const PROVER_NODE_BLOCK_PROCESSING_DURATION: MetricDefinition = {
1336
+ name: 'aztec.prover_node.block_processing.duration',
1337
+ description: 'Duration of processing a single block in epoch proving job',
1338
+ unit: 'ms',
1339
+ valueType: ValueType.INT,
1340
+ };
1341
+ export const PROVER_NODE_CHECKPOINT_PROCESSING_DURATION: MetricDefinition = {
1342
+ name: 'aztec.prover_node.checkpoint_processing.duration',
1343
+ description: 'Duration of processing a single checkpoint in epoch proving job',
1344
+ unit: 'ms',
1345
+ valueType: ValueType.INT,
1346
+ };
1347
+ export const PROVER_NODE_CHECKPOINT_BLOCKS: MetricDefinition = {
1348
+ name: 'aztec.prover_node.checkpoint_blocks',
1349
+ description: 'Number of blocks in a proven checkpoint',
1350
+ valueType: ValueType.INT,
1351
+ };
1352
+ export const PROVER_NODE_CHECKPOINT_TRANSACTIONS: MetricDefinition = {
1353
+ name: 'aztec.prover_node.checkpoint_transactions',
1354
+ description: 'Number of transactions in a proven checkpoint',
1355
+ valueType: ValueType.INT,
1356
+ };
1357
+ export const PROVER_NODE_CHECKPOINT_PROVING_DURATION: MetricDefinition = {
1358
+ name: 'aztec.prover_node.checkpoint_proving.duration',
1359
+ description:
1360
+ 'Duration from the start of checkpoint processing to its block proofs being ready (excludes tx gathering)',
1361
+ unit: 'ms',
1362
+ valueType: ValueType.INT,
1363
+ };
1364
+ export const PROVER_NODE_ACTIVE_CHECKPOINTS: MetricDefinition = {
1365
+ name: 'aztec.prover_node.active_checkpoints',
1366
+ description: 'Current number of canonical CheckpointProvers in the store (i.e. checkpoints currently being proven)',
1367
+ valueType: ValueType.INT,
1368
+ };
1369
+ export const PROVER_NODE_ACTIVE_EPOCH_SESSIONS: MetricDefinition = {
1370
+ name: 'aztec.prover_node.active_epoch_sessions',
1371
+ description: 'Current number of live EpochSessions, broken down by kind (full|partial)',
1372
+ valueType: ValueType.INT,
1373
+ };
1013
1374
  export const PROVER_NODE_REWARDS_TOTAL: MetricDefinition = {
1014
1375
  name: 'aztec.prover_node.rewards_total',
1015
1376
  description: 'The rewards earned (total)',
@@ -1123,6 +1484,19 @@ export const VALIDATOR_RE_EXECUTION_TX_COUNT: MetricDefinition = {
1123
1484
  unit: 'tx',
1124
1485
  valueType: ValueType.INT,
1125
1486
  };
1487
+ export const VALIDATOR_CHECKPOINT_PROPOSAL_TO_PIPELINED_STATE_DURATION: MetricDefinition = {
1488
+ name: 'aztec.validator.checkpoint_proposal_to_pipelined_state_duration',
1489
+ description: 'Time from receiving a checkpoint proposal to setting proposed checkpoint state for pipelining',
1490
+ unit: 'ms',
1491
+ valueType: ValueType.INT,
1492
+ };
1493
+ export const VALIDATOR_CHECKPOINT_PROPOSAL_RECEIVE_OFFSET_FROM_NEXT_SLOT_BOUNDARY: MetricDefinition = {
1494
+ name: 'aztec.validator.checkpoint.proposal_receive_offset_from_next_slot_boundary',
1495
+ description:
1496
+ 'Absolute offset from the next slot boundary when a foreign checkpoint proposal is received. Use aztec.slot_boundary_side to distinguish before vs after the boundary.',
1497
+ unit: 'ms',
1498
+ valueType: ValueType.INT,
1499
+ };
1126
1500
 
1127
1501
  export const VALIDATOR_FAILED_REEXECUTION_COUNT: MetricDefinition = {
1128
1502
  name: 'aztec.validator.failed_reexecution_count',
@@ -1144,6 +1518,16 @@ export const VALIDATOR_ATTESTATION_FAILED_NODE_ISSUE_COUNT: MetricDefinition = {
1144
1518
  description: 'The number of failed attestations due to node issues (timeout, missing data, etc.)',
1145
1519
  valueType: ValueType.INT,
1146
1520
  };
1521
+ export const VALIDATOR_CURRENT_EPOCH: MetricDefinition = {
1522
+ name: 'aztec.validator.current_epoch',
1523
+ description: 'The current epoch number, reflecting total epochs elapsed since genesis',
1524
+ valueType: ValueType.INT,
1525
+ };
1526
+ export const VALIDATOR_ATTESTED_EPOCH_COUNT: MetricDefinition = {
1527
+ name: 'aztec.validator.attested_epoch_count',
1528
+ description: 'The number of epochs in which this node successfully submitted at least one attestation',
1529
+ valueType: ValueType.INT,
1530
+ };
1147
1531
 
1148
1532
  export const NODEJS_EVENT_LOOP_DELAY_MIN: MetricDefinition = {
1149
1533
  name: 'nodejs.eventloop.delay.min',
@@ -1297,6 +1681,28 @@ export const TX_FILE_STORE_QUEUE_SIZE: MetricDefinition = {
1297
1681
  description: 'Number of txs pending upload',
1298
1682
  valueType: ValueType.INT,
1299
1683
  };
1684
+ export const TX_FILE_STORE_DOWNLOADS_SUCCESS: MetricDefinition = {
1685
+ name: 'aztec.p2p.tx_file_store.downloads_success',
1686
+ description: 'Number of successful tx downloads from file storage',
1687
+ valueType: ValueType.INT,
1688
+ };
1689
+ export const TX_FILE_STORE_DOWNLOADS_FAILED: MetricDefinition = {
1690
+ name: 'aztec.p2p.tx_file_store.downloads_failed',
1691
+ description: 'Number of failed tx downloads from file storage',
1692
+ valueType: ValueType.INT,
1693
+ };
1694
+ export const TX_FILE_STORE_DOWNLOAD_DURATION: MetricDefinition = {
1695
+ name: 'aztec.p2p.tx_file_store.download_duration',
1696
+ description: 'Duration to download a tx from file storage',
1697
+ unit: 'ms',
1698
+ valueType: ValueType.INT,
1699
+ };
1700
+ export const TX_FILE_STORE_DOWNLOAD_SIZE: MetricDefinition = {
1701
+ name: 'aztec.p2p.tx_file_store.download_size',
1702
+ description: 'Size of a downloaded tx from file storage',
1703
+ unit: 'By',
1704
+ valueType: ValueType.INT,
1705
+ };
1300
1706
 
1301
1707
  export const IVC_VERIFIER_TIME: MetricDefinition = {
1302
1708
  name: 'aztec.ivc_verifier.time',
@@ -1346,3 +1752,51 @@ export const IVC_VERIFIER_AGG_DURATION_AVG: MetricDefinition = {
1346
1752
  unit: 'ms',
1347
1753
  valueType: ValueType.DOUBLE,
1348
1754
  };
1755
+
1756
+ // HA Signer metrics
1757
+ export const HA_SIGNER_SIGNING_DURATION: MetricDefinition = {
1758
+ name: 'aztec.ha_signer.signing_duration',
1759
+ description: 'End-to-end duration for signing with HA protection (lock + sign + record)',
1760
+ unit: 'ms',
1761
+ valueType: ValueType.INT,
1762
+ };
1763
+ export const HA_SIGNER_SIGNING_SUCCESS_COUNT: MetricDefinition = {
1764
+ name: 'aztec.ha_signer.signing_success_count',
1765
+ description: 'Count of successful signing operations',
1766
+ valueType: ValueType.INT,
1767
+ };
1768
+ export const HA_SIGNER_DUTY_ALREADY_SIGNED_COUNT: MetricDefinition = {
1769
+ name: 'aztec.ha_signer.duty_already_signed_count',
1770
+ description: 'Count of DutyAlreadySignedError (expected in HA; another node signed first)',
1771
+ valueType: ValueType.INT,
1772
+ };
1773
+ export const HA_SIGNER_SLASHING_PROTECTION_COUNT: MetricDefinition = {
1774
+ name: 'aztec.ha_signer.slashing_protection_count',
1775
+ description: 'Count of SlashingProtectionError (attempted to sign different data)',
1776
+ valueType: ValueType.INT,
1777
+ };
1778
+ export const HA_SIGNER_SIGNING_ERROR_COUNT: MetricDefinition = {
1779
+ name: 'aztec.ha_signer.signing_error_count',
1780
+ description: 'Count of signing function failures (lock deleted for retry)',
1781
+ valueType: ValueType.INT,
1782
+ };
1783
+ export const HA_SIGNER_LOCK_ACQUIRED_COUNT: MetricDefinition = {
1784
+ name: 'aztec.ha_signer.lock_acquired_count',
1785
+ description: 'Count of lock acquisitions (new lock acquired vs existing record found)',
1786
+ valueType: ValueType.INT,
1787
+ };
1788
+ export const HA_SIGNER_CLEANUP_STUCK_DUTIES_COUNT: MetricDefinition = {
1789
+ name: 'aztec.ha_signer.cleanup_stuck_duties_count',
1790
+ description: 'Number of stuck duties cleaned up per cleanup run',
1791
+ valueType: ValueType.INT,
1792
+ };
1793
+ export const HA_SIGNER_CLEANUP_OLD_DUTIES_COUNT: MetricDefinition = {
1794
+ name: 'aztec.ha_signer.cleanup_old_duties_count',
1795
+ description: 'Number of old duties cleaned up',
1796
+ valueType: ValueType.INT,
1797
+ };
1798
+ export const HA_SIGNER_CLEANUP_OUTDATED_ROLLUP_DUTIES_COUNT: MetricDefinition = {
1799
+ name: 'aztec.ha_signer.cleanup_outdated_rollup_duties_count',
1800
+ description: 'Number of duties cleaned due to rollup upgrade',
1801
+ valueType: ValueType.INT,
1802
+ };