Skip to content

feat: add attestation production time metric#30

Merged
KatyaRyazantseva merged 1 commit intoleanEthereum:mainfrom
KatyaRyazantseva:attestation-production-time
Apr 19, 2026
Merged

feat: add attestation production time metric#30
KatyaRyazantseva merged 1 commit intoleanEthereum:mainfrom
KatyaRyazantseva:attestation-production-time

Conversation

@KatyaRyazantseva
Copy link
Copy Markdown
Collaborator

Adds lean_attestations_production_time_seconds histogram to Validator Metrics.

@KatyaRyazantseva KatyaRyazantseva added this to the pq-devnet-4 milestone Apr 19, 2026
@KatyaRyazantseva KatyaRyazantseva merged commit 2acf3a7 into leanEthereum:main Apr 19, 2026
MegaRedHand pushed a commit to lambdaclass/ethlambda that referenced this pull request Apr 21, 2026
… PR #30 (#312)

## Motivation

Implements the `lean_attestations_production_time_seconds` histogram
defined in

[leanEthereum/leanMetrics#30](leanEthereum/leanMetrics#30),
which measures the end-to-end time a node spends producing attestations
for all its validators in a given slot.

## Description

### New Metric

| Metric | Type | Buckets | Sample collection event |
|--------|------|---------|-------------------------|
| `lean_attestations_production_time_seconds` | Histogram | 0.01, 0.025,
0.05, 0.1, 0.25, 0.5, 0.75, 1 | On attestation production |

### Implementation

- **`crates/blockchain/src/metrics.rs`**: registers the histogram under
the
`Validator Metrics` family and exposes `time_attestations_production()`,
which returns a `TimingGuard` that observes the duration on drop. Added
  to the `init()` eager-registration list so the metric appears on
  `/metrics` from process start.
- **`crates/blockchain/src/lib.rs`**: instruments
`produce_attestations()`
with `let _timing = metrics::time_attestations_production();` at the top
  of the function, capturing the full flow:
  1. Attestation data construction (`store::produce_attestation_data`)
  2. Per-validator signing
  3. Self-delivery via `on_gossip_attestation`
  4. Gossip publish

### Documentation

- **`docs/metrics.md`**: adds a `Buckets` column to the Validator
Metrics
  table (consistent with the other tables in the doc) and lists the new
  metric alongside `lean_validators_count` and `lean_is_aggregator`.

## How to Test

1. `make fmt` - passes
2. `make lint` - passes (clippy clean)
3. `make test` - passes
4. Run a local devnet and verify the metric appears on the `/metrics`
   endpoint (port 5054):
   ```
curl -s localhost:5054/metrics | grep
lean_attestations_production_time_seconds
   ```
   You should see the histogram buckets populate as the node produces
   attestations each slot.

## Related

- leanMetrics spec: leanEthereum/leanMetrics#30
- Previous metrics PR: #289 (Devnet-4 metrics from leanMetrics PR #29)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant