Skip to content

Add dashboard and topology option for Autobahn e2e - #4167

Merged
masih merged 11 commits into
mainfrom
yzang/add-dashboard
Sep 25, 2026
Merged

masih merged 11 commits into
mainfrom
yzang/add-dashboard

Conversation

@yzang2019

@yzang2019 yzang2019 commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Describe your changes and provide context

This PR added monitoring dashboard for the autobahn-e2e benchmark tool. It also added a flag to allow deploying to AWS in colocated mode or distributed mode.

Testing performed to validate your change

@cursor

cursor Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes AWS security-group exposure (Grafana :3000, optional wide CIDR) and a complex multi-instance bootstrap path; runtime metric hooks touch consensus execution code but are limited to observability.

Overview
Extends autobahn-e2e AWS deploy from a single EC2 host to a --topology choice: distributed (four validator instances plus a load/monitoring host) or colocated (one host with the existing four-container stack and monitoring).

Distributed path provisions instances in parallel, opens SSH/Grafana (with optional --grafana-cidr) and intra-SG TCP for validators, runs phased docker-aws-validator-* / docker-aws-load-* Make targets, merges init artifacts over SSH/SCP, generates genesis on validator 0, and wires Prometheus + sei-load.aws.json on the load host ( sei-load left manual ). Defaults shift to Ubuntu AMD64, larger r7i instances, and configurable gp3 IOPS/throughput. list, forward, and teardown are multi-host aware and surface Grafana URLs.

Adds an Autobahn E2E Grafana dashboard, local/monitoring compose updates, and Prometheus phase metrics (consensus / execution / storage) in the Autobahn execute loop and giga store path for the dashboard panels.

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

@github-actions

github-actions Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedSep 25, 2026, 8:56 AM

@codecov

codecov Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 77.15232% with 138 lines in your changes missing coverage. Please review.
✅ Project coverage is 65.72%. Comparing base (b9f0e8f) to head (ad35bf9).

Files with missing lines Patch % Lines
cmd/autobahn-e2e/aws.go 85.37% 37 Missing ⚠️
cmd/autobahn-e2e/list.go 23.68% 29 Missing ⚠️
cmd/autobahn-e2e/aws_remote.go 86.97% 25 Missing ⚠️
cmd/autobahn-e2e/state.go 63.82% 17 Missing ⚠️
cmd/autobahn-e2e/teardown.go 27.27% 16 Missing ⚠️
cmd/autobahn-e2e/deploy.go 41.17% 10 Missing ⚠️
cmd/autobahn-e2e/forward.go 77.77% 2 Missing ⚠️
giga/metrics/autobahn_loop.go 88.88% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #4167      +/-   ##
==========================================
- Coverage   67.58%   65.72%   -1.86%     
==========================================
  Files        2190     2085     -105     
  Lines      168242   158759    -9483     
==========================================
- Hits       113708   104351    -9357     
+ Misses      54524    54267     -257     
- Partials       10      141     +131     
Flag Coverage Δ
sei-chain-pr 80.77% <77.15%> (?)
sei-db 74.50% <ø> (ø)
sei-db-state-db ?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
cmd/autobahn-e2e/command.go 26.82% <100.00%> (+5.77%) ⬆️
giga/evmonly/giga_store.go 95.23% <100.00%> (+0.15%) ⬆️
sei-tendermint/internal/p2p/giga_router_common.go 82.06% <100.00%> (+3.27%) ⬆️
cmd/autobahn-e2e/forward.go 29.33% <77.77%> (+3.24%) ⬆️
giga/metrics/autobahn_loop.go 88.88% <88.88%> (ø)
cmd/autobahn-e2e/deploy.go 11.86% <41.17%> (+5.19%) ⬆️
cmd/autobahn-e2e/teardown.go 40.00% <27.27%> (-3.14%) ⬇️
cmd/autobahn-e2e/state.go 64.06% <63.82%> (-0.14%) ⬇️
cmd/autobahn-e2e/aws_remote.go 86.97% <86.97%> (ø)
cmd/autobahn-e2e/list.go 36.30% <23.68%> (-1.20%) ⬇️
... and 1 more

... and 369 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread docker/monitornode/dashboards/autobahn-e2e-dashboard.json Outdated
seidroid[bot]
seidroid Bot previously requested changes Sep 15, 2026

@seidroid seidroid Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Adds an Autobahn e2e Grafana dashboard, main-loop phase metrics, and larger x86 AWS defaults. The metric names, labels and datasource uid all line up with the existing monitornode conventions, but the AWS deploy now opens Grafana to the whole internet with hardcoded admin/admin, which also makes the cluster's "private" EVM JSON-RPC reachable through Grafana's datasource proxy.

Findings: 1 blocking | 2 non-blocking | 3 posted inline

Blockers

  • None at the file/PR level.
  • 1 blocking issue(s) flagged inline on specific lines.

Non-blocking

  • None at the file/PR level.
  • 2 suggestion(s)/nit(s) flagged inline on specific lines.

Comment thread cmd/autobahn-e2e/aws.go Outdated
Comment thread sei-tendermint/node/setup.go Outdated
Comment thread giga/evmonly/giga_store.go Outdated

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread cmd/autobahn-e2e/aws_remote.go

@cursor cursor Bot left a comment

Copy link
Copy Markdown

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 using default effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

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

Reviewed by Cursor Bugbot for commit ed51e2b. Configure here.

Comment thread cmd/autobahn-e2e/aws.go
Bind Grafana to the SSH CIDR by default, ship the merged peer list with genesis, and record main-loop phases on the existing sei_chain meter.

Co-authored-by: Cursor <cursoragent@cursor.com>
@yzang2019

Copy link
Copy Markdown
Contributor Author

@seidroid review

@yzang2019 yzang2019 mentioned this pull request Sep 15, 2026
1 of 5 tasks
@yzang2019 yzang2019 changed the title Add dashboard for Autobahn e2e Add dashboard and topology option for Autobahn e2e Sep 15, 2026

@seidroid seidroid Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The three findings from the previous review are genuinely fixed: Grafana ingress now defaults to the SSH CIDR with an opt-in --grafana-cidr, the second global MeterProvider is no longer installed during storage-manager setup, and phase transitions are serialized behind gigametrics.SetPhase. Two non-blocking items remain — SetupPrometheus is now dead code that would re-break the metric namespace if anyone called it, and one README bullet still describes the old wide-open Grafana rule.

Findings: 0 blocking | 2 non-blocking | 2 posted inline

Blockers

  • None at the file/PR level.

Non-blocking

  • None at the file/PR level.
  • 2 suggestion(s)/nit(s) flagged inline on specific lines.

)

// SetupPrometheus installs a Prometheus MeterProvider on the default registerer.
func SetupPrometheus() error {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[suggestion] SetupPrometheus has no production caller — the only references in the tree are TestSetupPrometheusIsIdempotent and TestSetPhaseIsSafeForConcurrentCallers in this package's own test file. It is dead code whose one effect is to call otel.SetMeterProvider with a provider that has no namespace and no chain_id, i.e. exactly the state the previous round removed from openEVMOnlyStorageManager.

That matters because the new dashboard queries sei_chain_autobahn_main_loop_phase_duration_seconds_total, a name that only exists while the app-level provider from utilmetrics.SetupOtelMetricsProvider (app/app.go:511) is the global one. A future caller wiring up SetupPrometheus would silently move every lazily-created instrument off that provider and blank the panels, with nothing here saying so. The idempotency test reads as coverage for a function that is actually unreachable.

Deleting it (along with the otelprometheus/sdkmetric/prometheus imports) leaves SetPhase as the package's only entry point. MainLoop() at line 52 is then only reachable from SetPhase and the test, so it can be unexported too — which also removes the last handle through which a caller could mutate the shared timer outside loopMu.

compile, and initialize in parallel. The load instance is brought up
afterward with Prometheus and Grafana; `sei-load` is left for you to
start. The security group admits SSH from the caller, Grafana (`:3000`)
from the internet, and all TCP between the five instances.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[suggestion] This bullet still describes the pre-fix behavior: Grafana is no longer opened to the internet. resolveGrafanaCIDR (cmd/autobahn-e2e/aws.go) defaults the :3000 rule to sshCIDR, and line 177 of this same file already says so correctly ("admits SSH and Grafana from the public IP detected at deployment time"). Suggest "admits SSH and Grafana (:3000) from the caller, and all TCP between the five instances", leaving the --grafana-cidr opt-in described where it already is.

@seidroid
seidroid Bot dismissed their stale review September 15, 2026 12:28

Superseded: latest AI review found no blocking issues.

yzang2019 added a commit that referenced this pull request Sep 15, 2026
## Describe your changes and provide context

Port of #4167 onto `giga-1`. Adds an Autobahn E2E Grafana dashboard,
main-loop phase metrics, and an AWS `--topology` flag.

**Dashboard.** Local and AWS clusters provision an **Autobahn E2E**
Grafana board that shows executed TPS, blocks/sec, produce-to-execute
finalize time, and the execute-goroutine split across consensus wait,
EVM execution, and storage. Those last panels read
`sei_chain_autobahn_main_loop_phase_duration_seconds_total`, recorded
from the Autobahn execute path.

**AWS topology.** `autobahn-e2e deploy --target aws` takes `--topology`:

- `distributed` (default): five EC2 hosts — one validator per instance,
plus a load/monitoring host. Validators clone, compile, and initialize
in parallel. Prometheus and Grafana come up on the load box; `sei-load`
is left for you to start.
- `colocated`: one EC2 host running the same four Docker validators used
locally, plus monitoring.

The local Docker 4-in-1 path is unchanged. EVM JSON-RPC stays private
and is reached through `forward`.

**Defaults and access.** AWS deploy uses Ubuntu 24.04 AMD64,
`r7i.12xlarge`, and a 40m readiness timeout. SSH and Grafana (`:3000`)
default to the caller's public IP. Use `--grafana-cidr` to widen Grafana
(for example `0.0.0.0/0`). Login remains `admin` / `admin` on these
temporary test hosts.

This branch also includes the #4167 review fixes: genesis ships the
merged `persistent_peers.txt`, sibling `run-instances` calls no longer
cancel each other, and phase instruments attach to the existing
`sei_chain` meter instead of installing a second MeterProvider.

## Testing performed to validate your change

- [x] `go test ./cmd/autobahn-e2e/ ./giga/metrics/`
- [ ] `./autobahn-e2e deploy --target aws --topology distributed` —
Grafana reachable from the SSH CIDR only; validators form a mesh
- [ ] `./autobahn-e2e deploy --target aws --topology colocated` — four
Docker validators on one instance
- [ ] Local `./autobahn-e2e deploy --target local` still starts the
4-in-1 Docker cluster
- [ ] Open Grafana **Autobahn E2E** and confirm the phase pie/stacked
line populate after traffic

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@wen-coding

Copy link
Copy Markdown
Contributor

Is this the same as the one we are using on giga-1?

@masih

masih commented Sep 25, 2026

Copy link
Copy Markdown
Collaborator

Is this the same as the one we are using on giga-1?

Yes.

Autobahn always runs the EVM-only executor since #4316, so the
AUTOBAHN_EVMONLY switch the AWS topology passed through is dropped.
@masih

masih commented Sep 25, 2026

Copy link
Copy Markdown
Collaborator

@yzang2019 resolved conflicts to land this; I hope you don't mind. Thanks

@masih
masih enabled auto-merge September 25, 2026 08:56
@masih
masih added this pull request to the merge queue Sep 25, 2026
Merged via the queue into main with commit e481ca0 Sep 25, 2026
61 checks passed
@masih
masih deleted the yzang/add-dashboard branch September 25, 2026 11:01
yzang2019 added a commit that referenced this pull request Sep 25, 2026
* main: (21 commits)
  Backport evmonly parse, app-hash and changeset perf fixes from giga-1 (#4345)
  Remove the oracle module behind a v6.8 upgrade (#4319)
  fix(seidb): report only the current migration boundary on the snapshot gauge (#4327)
  fix(flatkv): keep 10 old checkpoints instead of mirroring memIAVL's count (#4322)
  Backport Autobahn execute-loop and produced-tx metrics from giga-1 (#4330)
  Add giga.storage.receipts to toggle the Autobahn receipt store (#4333)
  optimize gather phase (#4326)
  Regenerate the Unreleased changelog as a plain PR list (#4336)
  Bump sei-protocol/go-ethereum to v1.15.7-sei-21 (#4332)
  Fail dynamic-gas precompile out-of-gas as an EVM out-of-gas call (#4318)
  Add dashboard and topology option for Autobahn e2e (#4167)
  Add Giga fetch/serve and BlockDB prune metrics (#4329)
  Add eth_getLogs to the EVM-only Giga RPC (#4308)
  Generate v6.8 precompiles (#4320)
  Add [giga] app.toml section and honor it on the Autobahn node (#4323)
  feat(evmonly): add eth_estimateGas via existing libraries (#4325)
  Use Pebble batch directly in SS (#4300)
  Fix pruning issue in SS causing huge disk spike (#4321)
  Make Autobahn always run the EVM-only executor, disable/remove some integration tests (#4316)
  reduce seal lock contention (#4314)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants