Skip to content

starknet_transaction_prover: Prometheus /metrics endpoint with build_info#14167

Open
avi-starkware wants to merge 1 commit into
avi/prover-v3/panic-shutdownfrom
avi/prover-v3/metrics
Open

starknet_transaction_prover: Prometheus /metrics endpoint with build_info#14167
avi-starkware wants to merge 1 commit into
avi/prover-v3/panic-shutdownfrom
avi/prover-v3/metrics

Conversation

@avi-starkware
Copy link
Copy Markdown
Collaborator

Adds MetricsLayer that short-circuits GET /metrics with a Prometheus
text-format scrape, and an install_exporter helper that registers the
global recorder and emits prover_build_info with version + git_sha
labels. Wired alongside HealthLayer so the scrape path bypasses the
JSON-RPC parser.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

@cursor
Copy link
Copy Markdown

cursor Bot commented May 24, 2026

PR Summary

Low Risk
Observability-only changes; exposes standard /metrics with bounded labels and does not alter proving or auth behavior.

Overview
Adds Prometheus observability to the Starknet transaction prover: a GET /metrics scrape path that bypasses JSON-RPC, plus startup registration of build identity and capacity signals.

At startup, install_exporter registers the global Prometheus recorder and sets prover_build_info (version + git_sha labels) before the server binds, so slow startups still expose build metadata. A new MetricsLayer short-circuits /metrics in the HTTP/HTTPS tower stack (alongside HealthLayer, inside request logging) and returns Prometheus text format.

When the proving concurrency semaphore rejects a request, prover_concurrency_rejected_total is incremented (the counter is pre-registered at 0 so it appears in scrapes before the first rejection). Dependencies metrics and metrics-exporter-prometheus were added, with a unit test covering the metrics response body.

Reviewed by Cursor Bugbot for commit 3e19b68. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown
Collaborator Author

avi-starkware commented May 24, 2026

@reviewable-StarkWare
Copy link
Copy Markdown

This change is Reviewable

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9c4a5a0. Configure here.


fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
self.inner.poll_ready(cx)
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

poll_ready delegates to inner but call may skip it

Medium Severity

MetricsService::poll_ready delegates to self.inner.poll_ready(cx), but call short-circuits for GET /metrics without ever invoking self.inner.call(). This consumes the inner service's readiness without a matching call, which can leak permits or slots in any inner service with stateful backpressure (e.g., Buffer, ConcurrencyLimit). The existing HealthService already handles this correctly by returning Poll::Ready(Ok(())) directly and not delegating to the inner service.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9c4a5a0. Configure here.

@avi-starkware avi-starkware force-pushed the avi/prover-v3/metrics branch from 9c4a5a0 to 5eb413f Compare May 24, 2026 16:48
@avi-starkware avi-starkware force-pushed the avi/prover-v3/panic-shutdown branch from 63d34df to c31ce65 Compare May 26, 2026 08:43
@avi-starkware avi-starkware force-pushed the avi/prover-v3/metrics branch 2 times, most recently from 186e4cf to 9959caa Compare May 26, 2026 12:16
@avi-starkware avi-starkware force-pushed the avi/prover-v3/panic-shutdown branch 2 times, most recently from 72a08b0 to 17dbfd9 Compare May 26, 2026 12:17
@avi-starkware avi-starkware force-pushed the avi/prover-v3/metrics branch from 9959caa to 1733122 Compare May 26, 2026 12:17
@avi-starkware avi-starkware force-pushed the avi/prover-v3/panic-shutdown branch from 17dbfd9 to 9845d29 Compare May 26, 2026 12:58
@avi-starkware avi-starkware force-pushed the avi/prover-v3/metrics branch from 1733122 to 4403df0 Compare May 26, 2026 12:58
…info

Adds `MetricsLayer` that short-circuits `GET /metrics` with a Prometheus
text-format scrape, and an `install_exporter` helper that registers the
global recorder and emits `prover_build_info` with version + git_sha
labels. Wired alongside `HealthLayer` so the scrape path bypasses the
JSON-RPC parser.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@avi-starkware avi-starkware force-pushed the avi/prover-v3/panic-shutdown branch from 9845d29 to 4d23115 Compare May 26, 2026 16:14
@avi-starkware avi-starkware force-pushed the avi/prover-v3/metrics branch from 4403df0 to 3e19b68 Compare May 26, 2026 16:14
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.

2 participants