@aztec/telemetry-client 0.0.1-commit.ee80a48 → 0.0.1-commit.f103f88

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.
package/dest/metrics.js CHANGED
@@ -132,6 +132,52 @@ export const MEMPOOL_TX_MINED_DELAY = {
132
132
  unit: 'ms',
133
133
  valueType: ValueType.INT
134
134
  };
135
+ export const MEMPOOL_TX_POOL_V2_EVICTED_COUNT = {
136
+ name: 'aztec.mempool.tx_pool_v2.evicted_count',
137
+ description: 'The number of transactions evicted from the tx pool',
138
+ valueType: ValueType.INT
139
+ };
140
+ export const MEMPOOL_TX_POOL_V2_IGNORED_COUNT = {
141
+ name: 'aztec.mempool.tx_pool_v2.ignored_count',
142
+ description: 'The number of transactions ignored in addPendingTxs',
143
+ valueType: ValueType.INT
144
+ };
145
+ export const MEMPOOL_TX_POOL_V2_REJECTED_COUNT = {
146
+ name: 'aztec.mempool.tx_pool_v2.rejected_count',
147
+ description: 'The number of transactions rejected in addPendingTxs',
148
+ valueType: ValueType.INT
149
+ };
150
+ export const MEMPOOL_TX_POOL_V2_SOFT_DELETED_HITS = {
151
+ name: 'aztec.mempool.tx_pool_v2.soft_deleted_hits',
152
+ description: 'The number of transactions found in the soft-deleted pool',
153
+ valueType: ValueType.INT
154
+ };
155
+ export const MEMPOOL_TX_POOL_V2_MISSING_ON_PROTECT = {
156
+ name: 'aztec.mempool.tx_pool_v2.missing_on_protect',
157
+ description: 'The number of truly missing transactions in protectTxs',
158
+ valueType: ValueType.INT
159
+ };
160
+ export const MEMPOOL_TX_POOL_V2_MISSING_PREVIOUSLY_EVICTED = {
161
+ name: 'aztec.mempool.tx_pool_v2.missing_previously_evicted',
162
+ description: 'The number of truly missing transactions in protectTxs that were previously evicted',
163
+ valueType: ValueType.INT
164
+ };
165
+ export const MEMPOOL_TX_POOL_V2_METADATA_MEMORY = {
166
+ name: 'aztec.mempool.tx_pool_v2.metadata_memory',
167
+ description: 'Estimated total memory consumed by in-memory transaction metadata',
168
+ unit: 'By',
169
+ valueType: ValueType.INT
170
+ };
171
+ export const MEMPOOL_TX_POOL_V2_DUPLICATE_ADD = {
172
+ name: 'aztec.mempool.tx_pool_v2.duplicate_add',
173
+ description: 'Transactions received via addPendingTxs that were already in the pool',
174
+ valueType: ValueType.INT
175
+ };
176
+ export const MEMPOOL_TX_POOL_V2_ALREADY_PROTECTED_ADD = {
177
+ name: 'aztec.mempool.tx_pool_v2.already_protected_add',
178
+ description: 'Transactions received via addPendingTxs that were already pre-protected',
179
+ valueType: ValueType.INT
180
+ };
135
181
  export const DB_NUM_ITEMS = {
136
182
  name: 'aztec.db.num_items',
137
183
  description: 'LMDB Num Items',
@@ -187,6 +233,11 @@ export const ARCHIVER_BLOCK_HEIGHT = {
187
233
  description: 'The height of the latest block processed by the archiver',
188
234
  valueType: ValueType.INT
189
235
  };
236
+ export const ARCHIVER_CHECKPOINT_HEIGHT = {
237
+ name: 'aztec.archiver.checkpoint_height',
238
+ description: 'The height of the latest checkpoint processed by the archiver',
239
+ valueType: ValueType.INT
240
+ };
190
241
  export const ARCHIVER_ROLLUP_PROOF_DELAY = {
191
242
  name: 'aztec.archiver.rollup_proof_delay',
192
243
  description: 'Time after a block is submitted until its proof is published',
@@ -216,6 +267,12 @@ export const ARCHIVER_SYNC_PER_BLOCK = {
216
267
  unit: 'ms',
217
268
  valueType: ValueType.INT
218
269
  };
270
+ export const ARCHIVER_SYNC_PER_CHECKPOINT = {
271
+ name: 'aztec.archiver.checkpoint.sync_per_item_duration',
272
+ description: 'Duration to sync a checkpoint',
273
+ unit: 'ms',
274
+ valueType: ValueType.INT
275
+ };
219
276
  export const ARCHIVER_SYNC_BLOCK_COUNT = {
220
277
  name: 'aztec.archiver.block.sync_count',
221
278
  description: 'Number of blocks synced from L1',
@@ -253,6 +310,12 @@ export const ARCHIVER_BLOCK_PROPOSAL_TX_TARGET_COUNT = {
253
310
  description: 'Number of block proposals by tx target',
254
311
  valueType: ValueType.INT
255
312
  };
313
+ export const ARCHIVER_CHECKPOINT_L1_INCLUSION_DELAY = {
314
+ name: 'aztec.archiver.checkpoint_l1_inclusion_delay',
315
+ description: 'Seconds into the L2 slot when the checkpoint L1 tx was included',
316
+ unit: 's',
317
+ valueType: ValueType.INT
318
+ };
256
319
  export const NODE_RECEIVE_TX_DURATION = {
257
320
  name: 'aztec.node.receive_tx.duration',
258
321
  description: 'The duration of the receiveTx method',
@@ -298,9 +361,15 @@ export const SEQUENCER_BLOCK_COUNT = {
298
361
  description: 'Number of blocks built by this sequencer',
299
362
  valueType: ValueType.INT
300
363
  };
301
- export const SEQUENCER_CURRENT_BLOCK_REWARDS = {
302
- name: 'aztec.sequencer.current_block_rewards',
303
- description: 'The rewards earned',
364
+ export const SEQUENCER_BLOCK_INTER_BLOCK_TIME = {
365
+ name: 'aztec.sequencer.block.inter_block_time',
366
+ description: 'Wall-clock time elapsed between consecutive blocks being built by this sequencer',
367
+ unit: 'ms',
368
+ valueType: ValueType.INT
369
+ };
370
+ export const SEQUENCER_CURRENT_SLOT_REWARDS = {
371
+ name: 'aztec.sequencer.current_slot_rewards',
372
+ description: 'The rewards earned per filled slot',
304
373
  valueType: ValueType.DOUBLE
305
374
  };
306
375
  export const SEQUENCER_SLOT_COUNT = {
@@ -321,12 +390,12 @@ export const SEQUENCER_CHECKPOINT_ATTESTATION_DELAY = {
321
390
  };
322
391
  export const SEQUENCER_COLLECTED_ATTESTATIONS_COUNT = {
323
392
  name: 'aztec.sequencer.attestations.collected_count',
324
- description: 'The number of attestations collected for a block proposal',
393
+ description: 'The number of attestations collected for a checkpoint proposal',
325
394
  valueType: ValueType.INT
326
395
  };
327
396
  export const SEQUENCER_REQUIRED_ATTESTATIONS_COUNT = {
328
397
  name: 'aztec.sequencer.attestations.required_count',
329
- description: 'The minimum number of attestations required to publish a block',
398
+ description: 'The minimum number of attestations required to publish a checkpoint',
330
399
  valueType: ValueType.INT
331
400
  };
332
401
  export const SEQUENCER_COLLECT_ATTESTATIONS_DURATION = {
@@ -346,14 +415,60 @@ export const SEQUENCER_BLOCK_PROPOSAL_FAILED_COUNT = {
346
415
  description: 'The number of times block proposal failed (including validation builds)',
347
416
  valueType: ValueType.INT
348
417
  };
349
- export const SEQUENCER_BLOCK_PROPOSAL_SUCCESS_COUNT = {
350
- name: 'aztec.sequencer.block.proposal_success_count',
351
- description: 'The number of times block proposal succeeded (including validation builds)',
418
+ export const SEQUENCER_CHECKPOINT_PROPOSAL_SUCCESS_COUNT = {
419
+ name: 'aztec.sequencer.checkpoint.proposal_success_count',
420
+ description: 'The number of times checkpoint proposal succeeded',
352
421
  valueType: ValueType.INT
353
422
  };
354
- export const SEQUENCER_BLOCK_PROPOSAL_PRECHECK_FAILED_COUNT = {
355
- name: 'aztec.sequencer.block.proposal_precheck_failed_count',
356
- description: 'The number of times block proposal pre-build checks failed',
423
+ export const SEQUENCER_CHECKPOINT_PRECHECK_FAILED_COUNT = {
424
+ name: 'aztec.sequencer.checkpoint.precheck_failed_count',
425
+ description: 'The number of times checkpoint pre-build checks failed',
426
+ valueType: ValueType.INT
427
+ };
428
+ export const SEQUENCER_CHECKPOINT_PROPOSAL_FAILED_COUNT = {
429
+ name: 'aztec.sequencer.checkpoint.proposal_failed_count',
430
+ description: 'The number of times checkpoint proposal failed',
431
+ valueType: ValueType.INT
432
+ };
433
+ export const SEQUENCER_CHECKPOINT_BUILD_DURATION = {
434
+ name: 'aztec.sequencer.checkpoint.build_duration',
435
+ description: 'Total duration to build all blocks in a checkpoint',
436
+ unit: 'ms',
437
+ valueType: ValueType.INT
438
+ };
439
+ export const SEQUENCER_CHECKPOINT_START_TO_FIRST_BLOCK_DURATION = {
440
+ name: 'aztec.sequencer.checkpoint.start_to_first_block_duration',
441
+ description: 'Time from starting checkpoint work to the first block finishing build',
442
+ unit: 'ms',
443
+ valueType: ValueType.INT
444
+ };
445
+ export const SEQUENCER_CHECKPOINT_LAST_BLOCK_TO_BROADCAST_DURATION = {
446
+ name: 'aztec.sequencer.checkpoint.last_block_to_broadcast_duration',
447
+ description: 'Time from the final block finishing build to the checkpoint proposal being broadcast',
448
+ unit: 'ms',
449
+ valueType: ValueType.INT
450
+ };
451
+ export const SEQUENCER_PIPELINED_CHECKPOINT_BUILD_START_OFFSET_FROM_SLOT_BOUNDARY = {
452
+ name: 'aztec.sequencer.pipelined_checkpoint.build_start_offset_from_slot_boundary',
453
+ description: '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.',
454
+ unit: 'ms',
455
+ valueType: ValueType.INT
456
+ };
457
+ export const SEQUENCER_CHECKPOINT_BLOCK_COUNT = {
458
+ name: 'aztec.sequencer.checkpoint.block_count',
459
+ description: 'Number of blocks built in a checkpoint',
460
+ valueType: ValueType.INT
461
+ };
462
+ export const SEQUENCER_CHECKPOINT_TX_COUNT = {
463
+ name: 'aztec.sequencer.checkpoint.tx_count',
464
+ description: 'Total number of transactions across all blocks in a checkpoint',
465
+ unit: 'tx',
466
+ valueType: ValueType.INT
467
+ };
468
+ export const SEQUENCER_CHECKPOINT_TOTAL_MANA = {
469
+ name: 'aztec.sequencer.checkpoint.total_mana',
470
+ description: 'Total L2 mana used across all blocks in a checkpoint',
471
+ unit: 'mana',
357
472
  valueType: ValueType.INT
358
473
  };
359
474
  export const SEQUENCER_SLASHING_ATTEMPTS_COUNT = {
@@ -366,6 +481,16 @@ export const SEQUENCER_CHECKPOINT_SUCCESS_COUNT = {
366
481
  description: 'The number of times checkpoint publishing succeeded',
367
482
  valueType: ValueType.INT
368
483
  };
484
+ export const SEQUENCER_PIPELINE_DEPTH = {
485
+ name: 'aztec.sequencer.pipeline.depth',
486
+ description: 'Current pipeline depth when builder pipelining is enabled',
487
+ valueType: ValueType.INT
488
+ };
489
+ export const SEQUENCER_PIPELINE_DISCARDS_COUNT = {
490
+ name: 'aztec.sequencer.pipeline.discards_count',
491
+ description: 'The number of times a pipeline was discarded',
492
+ valueType: ValueType.INT
493
+ };
369
494
  // Fisherman fee analysis metrics
370
495
  export const FISHERMAN_FEE_ANALYSIS_WOULD_BE_INCLUDED = {
371
496
  name: 'aztec.fisherman.fee_analysis.would_be_included',
@@ -424,6 +549,29 @@ export const FISHERMAN_FEE_ANALYSIS_MINED_BLOB_TX_TOTAL_COST = {
424
549
  unit: 'eth',
425
550
  valueType: ValueType.DOUBLE
426
551
  };
552
+ export const FISHERMAN_FEE_ANALYSIS_PENDING_BLOB_COUNT = {
553
+ name: 'aztec.fisherman.fee_analysis.pending_blob_count',
554
+ description: 'Total number of blobs in pending blob transactions',
555
+ unit: 'blobs',
556
+ valueType: ValueType.INT
557
+ };
558
+ export const FISHERMAN_FEE_ANALYSIS_INCLUDED_BLOB_COUNT = {
559
+ name: 'aztec.fisherman.fee_analysis.included_blob_count',
560
+ description: 'Total number of blobs included in the mined block',
561
+ unit: 'blobs',
562
+ valueType: ValueType.INT
563
+ };
564
+ export const FISHERMAN_FEE_ANALYSIS_BLOCK_BLOBS_FULL = {
565
+ name: 'aztec.fisherman.fee_analysis.block_blobs_full',
566
+ description: 'Whether the mined block reached 100% blob capacity',
567
+ valueType: ValueType.INT
568
+ };
569
+ export const FISHERMAN_FEE_ANALYSIS_MAX_BLOB_CAPACITY = {
570
+ name: 'aztec.fisherman.fee_analysis.max_blob_capacity',
571
+ description: 'Maximum blob capacity for the analyzed block based on L1 upgrade schedule',
572
+ unit: 'blobs',
573
+ valueType: ValueType.INT
574
+ };
427
575
  export const VALIDATOR_INVALID_ATTESTATION_RECEIVED_COUNT = {
428
576
  name: 'aztec.validator.invalid_attestation_received_count',
429
577
  description: 'Number of invalid attestations received',
@@ -597,6 +745,12 @@ export const PEER_MANAGER_PEER_COUNT = {
597
745
  unit: 'peers',
598
746
  valueType: ValueType.INT
599
747
  };
748
+ export const PEER_MANAGER_HEALTHY_PEER_COUNT = {
749
+ name: 'aztec.peer_manager.healthy_peer_count',
750
+ description: 'Number of healthy (non-protected, non-banned) peers',
751
+ unit: 'peers',
752
+ valueType: ValueType.INT
753
+ };
600
754
  export const PEER_MANAGER_LOW_SCORE_DISCONNECTS = {
601
755
  name: 'aztec.peer_manager.low_score_disconnects',
602
756
  description: 'Number of peers disconnected due to low score',
@@ -873,6 +1027,11 @@ export const PROVING_QUEUE_REJECTED_JOBS = {
873
1027
  description: 'Number of rejected proving jobs',
874
1028
  valueType: ValueType.INT
875
1029
  };
1030
+ export const PROVING_QUEUE_ABORTED_JOBS = {
1031
+ name: 'aztec.proving_queue.aborted_jobs_count',
1032
+ description: 'Number of aborted proving jobs',
1033
+ valueType: ValueType.INT
1034
+ };
876
1035
  export const PROVING_QUEUE_RETRIED_JOBS = {
877
1036
  name: 'aztec.proving_queue.retried_jobs_count',
878
1037
  description: 'Number of retried proving jobs',
@@ -945,6 +1104,36 @@ export const PROVER_NODE_JOB_TRANSACTIONS = {
945
1104
  description: 'Number of transactions in a proven epoch',
946
1105
  valueType: ValueType.INT
947
1106
  };
1107
+ export const PROVER_NODE_BLOB_PROCESSING_LAST_DURATION = {
1108
+ name: 'aztec.prover_node.blob_processing.last_duration',
1109
+ description: 'Duration of blob processing step in epoch proving job',
1110
+ unit: 'ms',
1111
+ valueType: ValueType.INT
1112
+ };
1113
+ export const PROVER_NODE_CHONK_VERIFIER_LAST_DURATION = {
1114
+ name: 'aztec.prover_node.chonk_verifier.last_duration',
1115
+ description: 'Duration of chonk verifier enqueuing in epoch proving job',
1116
+ unit: 'ms',
1117
+ valueType: ValueType.INT
1118
+ };
1119
+ export const PROVER_NODE_BLOCK_PROCESSING_DURATION = {
1120
+ name: 'aztec.prover_node.block_processing.duration',
1121
+ description: 'Duration of processing a single block in epoch proving job',
1122
+ unit: 'ms',
1123
+ valueType: ValueType.INT
1124
+ };
1125
+ export const PROVER_NODE_CHECKPOINT_PROCESSING_DURATION = {
1126
+ name: 'aztec.prover_node.checkpoint_processing.duration',
1127
+ description: 'Duration of processing a single checkpoint in epoch proving job',
1128
+ unit: 'ms',
1129
+ valueType: ValueType.INT
1130
+ };
1131
+ export const PROVER_NODE_ALL_CHECKPOINTS_PROCESSING_LAST_DURATION = {
1132
+ name: 'aztec.prover_node.all_checkpoints_processing.last_duration',
1133
+ description: 'Duration of processing all checkpoints in epoch proving job',
1134
+ unit: 'ms',
1135
+ valueType: ValueType.INT
1136
+ };
948
1137
  export const PROVER_NODE_REWARDS_TOTAL = {
949
1138
  name: 'aztec.prover_node.rewards_total',
950
1139
  description: 'The rewards earned (total)',
@@ -1055,6 +1244,18 @@ export const VALIDATOR_RE_EXECUTION_TX_COUNT = {
1055
1244
  unit: 'tx',
1056
1245
  valueType: ValueType.INT
1057
1246
  };
1247
+ export const VALIDATOR_CHECKPOINT_PROPOSAL_TO_PIPELINED_STATE_DURATION = {
1248
+ name: 'aztec.validator.checkpoint_proposal_to_pipelined_state_duration',
1249
+ description: 'Time from receiving a checkpoint proposal to setting proposed checkpoint state for pipelining',
1250
+ unit: 'ms',
1251
+ valueType: ValueType.INT
1252
+ };
1253
+ export const VALIDATOR_CHECKPOINT_PROPOSAL_RECEIVE_OFFSET_FROM_NEXT_SLOT_BOUNDARY = {
1254
+ name: 'aztec.validator.checkpoint.proposal_receive_offset_from_next_slot_boundary',
1255
+ description: '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.',
1256
+ unit: 'ms',
1257
+ valueType: ValueType.INT
1258
+ };
1058
1259
  export const VALIDATOR_FAILED_REEXECUTION_COUNT = {
1059
1260
  name: 'aztec.validator.failed_reexecution_count',
1060
1261
  description: 'The number of failed re-executions',
@@ -1075,6 +1276,16 @@ export const VALIDATOR_ATTESTATION_FAILED_NODE_ISSUE_COUNT = {
1075
1276
  description: 'The number of failed attestations due to node issues (timeout, missing data, etc.)',
1076
1277
  valueType: ValueType.INT
1077
1278
  };
1279
+ export const VALIDATOR_CURRENT_EPOCH = {
1280
+ name: 'aztec.validator.current_epoch',
1281
+ description: 'The current epoch number, reflecting total epochs elapsed since genesis',
1282
+ valueType: ValueType.INT
1283
+ };
1284
+ export const VALIDATOR_ATTESTED_EPOCH_COUNT = {
1285
+ name: 'aztec.validator.attested_epoch_count',
1286
+ description: 'The number of epochs in which this node successfully submitted at least one attestation',
1287
+ valueType: ValueType.INT
1288
+ };
1078
1289
  export const NODEJS_EVENT_LOOP_DELAY_MIN = {
1079
1290
  name: 'nodejs.eventloop.delay.min',
1080
1291
  description: 'Minimum delay of the event loop',
@@ -1196,6 +1407,54 @@ export const TX_COLLECTOR_DURATION_PER_TX = {
1196
1407
  unit: 'ms',
1197
1408
  valueType: ValueType.INT
1198
1409
  };
1410
+ export const TX_FILE_STORE_UPLOADS_SUCCESS = {
1411
+ name: 'aztec.p2p.tx_file_store.uploads_success',
1412
+ description: 'Number of successful tx uploads to file storage',
1413
+ valueType: ValueType.INT
1414
+ };
1415
+ export const TX_FILE_STORE_UPLOADS_FAILED = {
1416
+ name: 'aztec.p2p.tx_file_store.uploads_failed',
1417
+ description: 'Number of failed tx uploads to file storage',
1418
+ valueType: ValueType.INT
1419
+ };
1420
+ export const TX_FILE_STORE_UPLOADS_SKIPPED = {
1421
+ name: 'aztec.p2p.tx_file_store.uploads_skipped',
1422
+ description: 'Number of tx uploads skipped (duplicates)',
1423
+ valueType: ValueType.INT
1424
+ };
1425
+ export const TX_FILE_STORE_UPLOAD_DURATION = {
1426
+ name: 'aztec.p2p.tx_file_store.upload_duration',
1427
+ description: 'Duration to upload a tx to file storage',
1428
+ unit: 'ms',
1429
+ valueType: ValueType.INT
1430
+ };
1431
+ export const TX_FILE_STORE_QUEUE_SIZE = {
1432
+ name: 'aztec.p2p.tx_file_store.queue_size',
1433
+ description: 'Number of txs pending upload',
1434
+ valueType: ValueType.INT
1435
+ };
1436
+ export const TX_FILE_STORE_DOWNLOADS_SUCCESS = {
1437
+ name: 'aztec.p2p.tx_file_store.downloads_success',
1438
+ description: 'Number of successful tx downloads from file storage',
1439
+ valueType: ValueType.INT
1440
+ };
1441
+ export const TX_FILE_STORE_DOWNLOADS_FAILED = {
1442
+ name: 'aztec.p2p.tx_file_store.downloads_failed',
1443
+ description: 'Number of failed tx downloads from file storage',
1444
+ valueType: ValueType.INT
1445
+ };
1446
+ export const TX_FILE_STORE_DOWNLOAD_DURATION = {
1447
+ name: 'aztec.p2p.tx_file_store.download_duration',
1448
+ description: 'Duration to download a tx from file storage',
1449
+ unit: 'ms',
1450
+ valueType: ValueType.INT
1451
+ };
1452
+ export const TX_FILE_STORE_DOWNLOAD_SIZE = {
1453
+ name: 'aztec.p2p.tx_file_store.download_size',
1454
+ description: 'Size of a downloaded tx from file storage',
1455
+ unit: 'By',
1456
+ valueType: ValueType.INT
1457
+ };
1199
1458
  export const IVC_VERIFIER_TIME = {
1200
1459
  name: 'aztec.ivc_verifier.time',
1201
1460
  description: 'Duration to verify chonk proofs',
@@ -1243,3 +1502,50 @@ export const IVC_VERIFIER_AGG_DURATION_AVG = {
1243
1502
  unit: 'ms',
1244
1503
  valueType: ValueType.DOUBLE
1245
1504
  };
1505
+ // HA Signer metrics
1506
+ export const HA_SIGNER_SIGNING_DURATION = {
1507
+ name: 'aztec.ha_signer.signing_duration',
1508
+ description: 'End-to-end duration for signing with HA protection (lock + sign + record)',
1509
+ unit: 'ms',
1510
+ valueType: ValueType.INT
1511
+ };
1512
+ export const HA_SIGNER_SIGNING_SUCCESS_COUNT = {
1513
+ name: 'aztec.ha_signer.signing_success_count',
1514
+ description: 'Count of successful signing operations',
1515
+ valueType: ValueType.INT
1516
+ };
1517
+ export const HA_SIGNER_DUTY_ALREADY_SIGNED_COUNT = {
1518
+ name: 'aztec.ha_signer.duty_already_signed_count',
1519
+ description: 'Count of DutyAlreadySignedError (expected in HA; another node signed first)',
1520
+ valueType: ValueType.INT
1521
+ };
1522
+ export const HA_SIGNER_SLASHING_PROTECTION_COUNT = {
1523
+ name: 'aztec.ha_signer.slashing_protection_count',
1524
+ description: 'Count of SlashingProtectionError (attempted to sign different data)',
1525
+ valueType: ValueType.INT
1526
+ };
1527
+ export const HA_SIGNER_SIGNING_ERROR_COUNT = {
1528
+ name: 'aztec.ha_signer.signing_error_count',
1529
+ description: 'Count of signing function failures (lock deleted for retry)',
1530
+ valueType: ValueType.INT
1531
+ };
1532
+ export const HA_SIGNER_LOCK_ACQUIRED_COUNT = {
1533
+ name: 'aztec.ha_signer.lock_acquired_count',
1534
+ description: 'Count of lock acquisitions (new lock acquired vs existing record found)',
1535
+ valueType: ValueType.INT
1536
+ };
1537
+ export const HA_SIGNER_CLEANUP_STUCK_DUTIES_COUNT = {
1538
+ name: 'aztec.ha_signer.cleanup_stuck_duties_count',
1539
+ description: 'Number of stuck duties cleaned up per cleanup run',
1540
+ valueType: ValueType.INT
1541
+ };
1542
+ export const HA_SIGNER_CLEANUP_OLD_DUTIES_COUNT = {
1543
+ name: 'aztec.ha_signer.cleanup_old_duties_count',
1544
+ description: 'Number of old duties cleaned up',
1545
+ valueType: ValueType.INT
1546
+ };
1547
+ export const HA_SIGNER_CLEANUP_OUTDATED_ROLLUP_DUTIES_COUNT = {
1548
+ name: 'aztec.ha_signer.cleanup_outdated_rollup_duties_count',
1549
+ description: 'Number of duties cleaned due to rollup upgrade',
1550
+ valueType: ValueType.INT
1551
+ };
@@ -2,15 +2,15 @@ import { defaultFetch } from '@aztec/foundation/json-rpc/client';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  /**
4
4
  * Makes a fetch function that retries based on the given attempts and propagates trace information.
5
- * @param retries - Sequence of intervals (in seconds) to retry.
5
+ * @param retries - Sequence of intervals (in seconds) to retry, or a factory function returning an iterator for custom/indefinite backoff.
6
6
  * @param noRetry - Whether to stop retries on server errors.
7
7
  * @param log - Optional logger for logging attempts.
8
8
  * @returns A fetch function.
9
9
  */
10
- export declare function makeTracedFetch(retries: number[], defaultNoRetry: boolean, fetch?: typeof defaultFetch, log?: Logger): (host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean | undefined) => Promise<{
10
+ export declare function makeTracedFetch(retries: number[] | (() => Generator<number>), defaultNoRetry: boolean, fetch?: typeof defaultFetch, log?: Logger): (host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean | undefined) => Promise<{
11
11
  response: any;
12
12
  headers: {
13
13
  get: (header: string) => string | null | undefined;
14
14
  };
15
15
  }>;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93cmFwcGVycy9mZXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRcEQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxLQUFLLHNCQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTTs7Ozs7R0E0QjdHIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93cmFwcGVycy9mZXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRcEQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGVBQWUsQ0FDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDN0MsY0FBYyxFQUFFLE9BQU8sRUFDdkIsS0FBSyxzQkFBZSxFQUNwQixHQUFHLENBQUMsRUFBRSxNQUFNOzs7OztHQThCYiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/wrappers/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,sBAAe,EAAE,GAAG,CAAC,EAAE,MAAM;;;;;GA4B7G"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/wrappers/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAC7C,cAAc,EAAE,OAAO,EACvB,KAAK,sBAAe,EACpB,GAAG,CAAC,EAAE,MAAM;;;;;GA8Bb"}
@@ -5,7 +5,7 @@ import { getTelemetryClient } from '../start.js';
5
5
  import { ATTR_JSONRPC_METHOD, ATTR_JSONRPC_REQUEST_ID } from '../vendor/attributes.js';
6
6
  /**
7
7
  * Makes a fetch function that retries based on the given attempts and propagates trace information.
8
- * @param retries - Sequence of intervals (in seconds) to retry.
8
+ * @param retries - Sequence of intervals (in seconds) to retry, or a factory function returning an iterator for custom/indefinite backoff.
9
9
  * @param noRetry - Whether to stop retries on server errors.
10
10
  * @param log - Optional logger for logging attempts.
11
11
  * @returns A fetch function.
@@ -26,7 +26,8 @@ import { ATTR_JSONRPC_METHOD, ATTR_JSONRPC_REQUEST_ID } from '../vendor/attribut
26
26
  ...extraHeaders
27
27
  };
28
28
  propagation.inject(context.active(), headers);
29
- return await retry(()=>fetch(host, body, headers, noRetry ?? defaultNoRetry), `JsonRpcClient request to ${host}`, makeBackoff(retries), log, false);
29
+ const backoff = typeof retries === 'function' ? retries() : makeBackoff(retries);
30
+ return await retry(()=>fetch(host, body, headers, noRetry ?? defaultNoRetry), `JsonRpcClient request to ${host}`, backoff, log, false);
30
31
  } catch (err) {
31
32
  span.setStatus({
32
33
  code: SpanStatusCode.ERROR,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/telemetry-client",
3
- "version": "0.0.1-commit.ee80a48",
3
+ "version": "0.0.1-commit.f103f88",
4
4
  "inherits": [
5
5
  "../package.common.json"
6
6
  ],
@@ -27,8 +27,8 @@
27
27
  "!*.test.*"
28
28
  ],
29
29
  "dependencies": {
30
- "@aztec/foundation": "0.0.1-commit.ee80a48",
31
- "@aztec/stdlib": "0.0.1-commit.ee80a48",
30
+ "@aztec/foundation": "0.0.1-commit.f103f88",
31
+ "@aztec/stdlib": "0.0.1-commit.f103f88",
32
32
  "@opentelemetry/api": "^1.9.0",
33
33
  "@opentelemetry/api-logs": "^0.55.0",
34
34
  "@opentelemetry/core": "^1.28.0",
package/src/attributes.ts CHANGED
@@ -45,6 +45,8 @@ export const BLOCK_NUMBER = 'aztec.block.number';
45
45
  export const BLOCK_HASH = 'aztec.block.hash';
46
46
  /** The slot number */
47
47
  export const SLOT_NUMBER = 'aztec.slot.number';
48
+ /** Whether an event happened before or after a slot boundary. */
49
+ export const SLOT_BOUNDARY_SIDE = 'aztec.slot_boundary_side';
48
50
  /** The checkpoint number */
49
51
  export const CHECKPOINT_NUMBER = 'aztec.checkpoint.number';
50
52
  /** The parent's block number */
@@ -128,6 +130,9 @@ export const NODEJS_EVENT_LOOP_STATE = 'nodejs.eventloop.state';
128
130
 
129
131
  export const TOPIC_NAME = 'aztec.gossip.topic_name';
130
132
 
133
+ /** The reason a transaction was evicted from the tx pool */
134
+ export const TX_POOL_EVICTION_REASON = 'aztec.mempool.eviction_reason';
135
+
131
136
  export const TX_COLLECTION_METHOD = 'aztec.tx_collection.method';
132
137
 
133
138
  /** Scope of L1 transaction (sequencer, prover, or other) */
@@ -139,8 +144,20 @@ export const IS_COMMITTEE_MEMBER = 'aztec.is_committee_member';
139
144
  /** Fisherman fee analysis strategy identifier */
140
145
  export const FISHERMAN_FEE_STRATEGY_ID = 'aztec.fisherman.strategy_id';
141
146
 
147
+ /** Whether the analyzed block reached 100% blob capacity */
148
+ export const BLOCK_FULL = 'aztec.block_full';
149
+
142
150
  /** The L1 transaction target for block proposal */
143
151
  export const L1_BLOCK_PROPOSAL_TX_TARGET = 'aztec.l1.block_proposal_tx_target';
144
152
 
145
153
  /** Whether tracing methods were used to extract block proposal data */
146
154
  export const L1_BLOCK_PROPOSAL_USED_TRACE = 'aztec.l1.block_proposal_used_trace';
155
+
156
+ /** HA signer duty type (e.g., BLOCK_PROPOSAL, CHECKPOINT_ATTESTATION) */
157
+ export const HA_DUTY_TYPE = 'aztec.ha_signer.duty_type';
158
+
159
+ /** HA signer node identifier */
160
+ export const HA_NODE_ID = 'aztec.ha_signer.node_id';
161
+
162
+ /** The address of an attester (validator) participating in consensus */
163
+ export const ATTESTER_ADDRESS = 'aztec.attester.address';
package/src/config.ts CHANGED
@@ -18,17 +18,17 @@ export const telemetryClientConfigMappings: ConfigMappingsType<TelemetryClientCo
18
18
  metricsCollectorUrl: {
19
19
  env: 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
20
20
  description: 'The URL of the telemetry collector for metrics',
21
- parseEnv: (val: string) => val && new URL(val),
21
+ parseEnv: (val: string) => new URL(val),
22
22
  },
23
23
  tracesCollectorUrl: {
24
24
  env: 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT',
25
25
  description: 'The URL of the telemetry collector for traces',
26
- parseEnv: (val: string) => val && new URL(val),
26
+ parseEnv: (val: string) => new URL(val),
27
27
  },
28
28
  logsCollectorUrl: {
29
29
  env: 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT',
30
30
  description: 'The URL of the telemetry collector for logs',
31
- parseEnv: (val: string) => val && new URL(val),
31
+ parseEnv: (val: string) => new URL(val),
32
32
  },
33
33
  otelCollectIntervalMs: {
34
34
  env: 'OTEL_COLLECT_INTERVAL_MS',
@@ -70,7 +70,7 @@ export const telemetryClientConfigMappings: ConfigMappingsType<TelemetryClientCo
70
70
  publicMetricsCollectorUrl: {
71
71
  env: 'PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT',
72
72
  description: 'A URL to publish a subset of metrics for public consumption',
73
- parseEnv: (val: string) => val && new URL(val),
73
+ parseEnv: (val: string) => new URL(val),
74
74
  },
75
75
  publicMetricsCollectFrom: {
76
76
  env: 'PUBLIC_OTEL_COLLECT_FROM',