diff --git a/Makefile b/Makefile index cac55e80..455412b7 100644 --- a/Makefile +++ b/Makefile @@ -29,10 +29,15 @@ leanSpec: leanSpec/fixtures: leanSpec cd leanSpec && uv run fill --fork devnet --scheme=prod -o fixtures -# lean-quickstart: -# git clone https://github.com/blockblaz/lean-quickstart.git --depth 1 --single-branch +lean-quickstart: + git clone https://github.com/blockblaz/lean-quickstart.git --depth 1 --single-branch + +# TODO: start metrics too run-devnet: docker-build lean-quickstart ## 🚀 Run a local devnet using lean-quickstart - cargo build \ - && cd lean-quickstart \ - && NETWORK_DIR=local-devnet ./spin-node.sh --node zeam_0,ethlambda_0 --generateGenesis --metrics + # Go to lean-quickstart/local-devnet/genesis/validator-config.yaml to modify + # the validator configuration for the local devnet. + # NOTE: to run the local image of ethlambda, make sure to set the image tag + # in lean-quickstart/client-cmds/ethlambda-cmd.sh to "ghcr.io/lambdaclass/ethlambda:local" + cd lean-quickstart \ + && NETWORK_DIR=local-devnet ./spin-node.sh --node all --generateGenesis --metrics diff --git a/README.md b/README.md index 6b24a9fd..22fce010 100644 --- a/README.md +++ b/README.md @@ -17,15 +17,8 @@ Run `make help` or take a look at our [`Makefile`](./Makefile) for other useful To run a local devnet with multiple clients using [lean-quickstart](https://github.com/blockblaz/lean-quickstart): ```sh -# Clone lean-quickstart (if not already present) -git clone https://github.com/blockblaz/lean-quickstart.git - -# Build the ethlambda Docker image -make docker-build - -# Run a 3-client devnet (zeam, ream, ethlambda) -cd lean-quickstart -NETWORK_DIR=local-devnet ./spin-node.sh --node zeam_0,ream_0,ethlambda_0 --generateGenesis --metrics +# This will clone lean-quickstart, build the docker image, and start a local devnet +make run-devnet ``` This generates fresh genesis files and starts all three clients with metrics enabled. diff --git a/crates/blockchain/src/lib.rs b/crates/blockchain/src/lib.rs index 10f4e7ed..f120e18f 100644 --- a/crates/blockchain/src/lib.rs +++ b/crates/blockchain/src/lib.rs @@ -265,7 +265,7 @@ impl BlockChainServer { metrics::update_head_slot(slot); metrics::update_latest_justified_slot(self.store.latest_justified().slot); metrics::update_latest_finalized_slot(self.store.latest_finalized().slot); - metrics::update_validators_count(self.store.head_state().validators.len() as u64); + metrics::update_validators_count(self.key_manager.validator_ids().len() as u64); Ok(()) } diff --git a/metrics/README.md b/metrics/README.md index f54ce23b..eba93e67 100644 --- a/metrics/README.md +++ b/metrics/README.md @@ -48,3 +48,10 @@ To remove all data volumes: ```bash docker compose -f docker-compose-metrics.yaml down -v ``` + +## Troubleshooting + +### Docker Desktop on MacOS + +lean-quickstart uses the host network mode for Docker containers, which is a problem on MacOS. +To work around this, enable the ["Enable host networking" option](https://docs.docker.com/enterprise/security/hardened-desktop/settings-management/settings-reference/#enable-host-networking) in Docker Desktop settings under Resources > Network. diff --git a/metrics/grafana/dashboards/client-interop-dashboard.json b/metrics/grafana/dashboards/client-interop-dashboard.json index 0e1a82e2..1d94aef1 100644 --- a/metrics/grafana/dashboards/client-interop-dashboard.json +++ b/metrics/grafana/dashboards/client-interop-dashboard.json @@ -2418,7 +2418,7 @@ "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 1, - "regex": ".*ream.*|.*zeam.*|.*qlean.*|.*lantern.*", + "regex": ".*ream.*|.*zeam.*|.*qlean.*|.*lantern.*|.*ethlambda.*", "type": "query" } ] diff --git a/metrics/prometheus/prometheus.yml b/metrics/prometheus/prometheus.yml index 178000d0..ef6ef127 100644 --- a/metrics/prometheus/prometheus.yml +++ b/metrics/prometheus/prometheus.yml @@ -5,27 +5,27 @@ global: monitor: "ethlambda-metrics" scrape_configs: - - job_name: "ethlambda" + - job_name: "ethlambda_0" static_configs: - - targets: ["host.docker.internal:8008"] + - targets: ["host.docker.internal:8087"] labels: - client: "ethlambda" + client: "ethlambda_0" instance: "local" # Add additional scrape targets for other Lean Ethereum clients - # - job_name: 'ream' + # - job_name: "ream_0" # static_configs: - # - targets: ['host.docker.internal:8009'] + # - targets: ["host.docker.internal:8082"] # labels: - # client: 'ream' - # instance: 'local' + # client: "ream_0" + # instance: "local" - # - job_name: 'zeam' + # - job_name: "zeam_0" # static_configs: - # - targets: ['host.docker.internal:8010'] + # - targets: ["host.docker.internal:8081"] # labels: - # client: 'zeam' - # instance: 'local' + # client: "zeam_0" + # instance: "local" # Prometheus self-monitoring - job_name: "prometheus"