diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..f69ca15 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,37 @@ +name: Build and publish forkdiff github-pages +permissions: + contents: write +on: + push: + branches: + - main + - epociask--feat-fork-diff +jobs: + deploy: + concurrency: ci-${{ github.ref }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 1000 # make sure to fetch the old commit we diff against + + - name: Build forkdiff + uses: "docker://protolambda/forkdiff:0.1.0" + with: + args: -repo=/github/workspace -fork=/github/workspace/fork.yaml -out=/github/workspace/index.html + + - name: Build pages + run: | + mkdir -p tmp/pages + mv index.html tmp/pages/index.html + touch tmp/pages/.nojekyll + # if [ "$GITHUB_REPOSITORY" == "ethereum-optimism/op-geth" ]; then + # echo "op-geth.optimism.io" > tmp/pages/CNAME + # fi; + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: tmp/pages + clean: true \ No newline at end of file diff --git a/fork.yaml b/fork.yaml new file mode 100644 index 0000000..d90dbfa --- /dev/null +++ b/fork.yaml @@ -0,0 +1,77 @@ +title: "layr-labs/nitro-testnode" # Define the HTML page title +logo: "logo.png" +footer: | # define the footer with markdown + [Nitro Testnode](https://github.com/Layr-Labs/nitro-testnode) fork overview · created with [Forkdiff](https://github.com/protolambda/forkdiff) +base: + name: OffchainLabs/nitro-testnode + url: https://github.com/OffchainLabs/nitro-testnode + hash: f328006579cbefe22c6c57de3d6b86397fde4438 +fork: + name: Layr-Labs/nitro-testnode + url: https://github.com/Layr-Labs/nitro-testnode + hash: 99d425358eb9324f70b793ace9db807789e41a9f +def: + title: "Nitro Testnode Fork Diff" + description: | # description in markdown + The original nitro codebase can be found at [`github.com/OffchainLabs/nitro-testnode`](https://github.com/OffchainLabs/nitro). + And the fork at [`github.com/Layr-Labs/nitro-testnode`](https://github.com/Layr-Labs/nitro). + + sub: + + - title: "EigenDA Support" + description: | + Added support for EigenDA: + + - Updated config generation script to express EigenDA chain params + + - Updated rollup creator deployment script to target `layr-labs/nitro-contracts` + + - Updated core docker compose to wire EigenDA proxy dependency + + globs: + - "scripts/config.ts" + - "rollupcreator/Dockerfile" + - "docker-compose.yaml" + + - title: "Observability" + description: | + Added optional observability to the testnode environment: + + - Prometheus agent for collecting service metrics + + - Loki for log collecting + + - PProf on sequencer resources to capture key performance metrics + + - Grafana dashboard to capture key throughput and reliability metrics + + Observability can be enabled by passing `--monitor` to the root level `test-node.bash` script. + + globs: + - "loki/**" + - "grafana/**" + - "prometheus/**" + - "promtail/**" + - "test-node.bash" + + - title: "Throughput Testing" + description: | + Added a `flood.ts` script which generates tx traffic targeting a specific byte rate. + + E.g: + ``` + docker compose run scripts flood --serial true --rounds 1000 --targetThroughput 100_000 + ``` + + This will target 100,000 Kb/s. + + globs: + - "scripts/index.ts" + - "scripts/flood.ts" + + + + + +ignore: + - "grafana/dashboards/Throughput-testing.json" diff --git a/index.html b/index.html new file mode 100755 index 0000000..5b5742b --- /dev/null +++ b/index.html @@ -0,0 +1,5862 @@ + + + + + + + + + + layr-labs/nitro-testnode + + + + + + + + + + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ +

Nitro Testnode Fork Diff

+ + +
+
+ + diff: + + + ignored: + +
+
+
+
+ +
+395
+
-25
+ + +
+3905
+
-0
+ +
+
+
+ +
+

The original nitro codebase can be found at github.com/OffchainLabs/nitro-testnode. +And the fork at github.com/Layr-Labs/nitro-testnode.

+
+
+ + +
+
+ +
+ +
+

Added support for EigenDA:

+ +
    +
  • Updated config generation script to express EigenDA chain params

  • + +
  • Updated rollup creator deployment script to target layr-labs/nitro-contracts

  • + +
  • Updated core docker compose to wire EigenDA proxy dependency

  • +
+
+
+ +
+ + + + +
+ +
+ +
+74
+
-13
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/docker-compose.yaml Layr-Labs/nitro-testnode/docker-compose.yaml +index 81deb6d1b73dd67ea4cdf7f86a3304c78b6e1998..7de54cc7877c2ff58b8864aecdc0cb2f4dcaf190 100644 +--- OffchainLabs/nitro-testnode/docker-compose.yaml ++++ Layr-Labs/nitro-testnode/docker-compose.yaml +@@ -66,7 +66,7 @@ - --authrpc.vhosts=* + - --authrpc.port=8551 + - --authrpc.addr=0.0.0.0 + - --http.vhosts=* +- - --http.api=engine,personal,eth,net,web3 ++ - --http.api=engine,personal,eth,net,web3,debug + - --http.corsdomain=* + - --ws + - --ws.addr=0.0.0.0 +@@ -161,7 +161,7 @@ - "seqdata:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" + - "tokenbridge-data:/tokenbridge-data" +- command: --conf.file /config/sequencer_config.json --node.feed.output.enable --node.feed.output.port 9642 --http.api net,web3,eth,txpool,debug --node.seq-coordinator.my-url ws://sequencer:8548 --graphql.enable --graphql.vhosts * --graphql.corsdomain * ++ command: --conf.file /config/sequencer_config.json --node.feed.output.enable --node.feed.output.port 9642 --http.api net,web3,eth,txpool,debug --node.seq-coordinator.my-url ws://sequencer:8548 --graphql.enable --graphql.vhosts * --graphql.corsdomain --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth +  +@@ -175,7 +175,7 @@ - "127.0.0.1:8648:8548" + volumes: + - "seqdata_b:/home/user/.arbitrum/local/nitro" + - "config:/config" +- command: --conf.file /config/sequencer_config.json --node.seq-coordinator.my-url ws://sequencer_b:8548 ++ command: --conf.file /config/sequencer_config.json --node.seq-coordinator.my-url ws://sequencer_b:8548 --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth + - redis +@@ -190,7 +190,7 @@ - "127.0.0.1:8748:8548" + volumes: + - "seqdata_c:/home/user/.arbitrum/local/nitro" + - "config:/config" +- command: --conf.file /config/sequencer_config.json --node.seq-coordinator.my-url ws://sequencer_c:8548 ++ command: --conf.file /config/sequencer_config.json --node.seq-coordinator.my-url ws://sequencer_c:8548 --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth + - redis +@@ -205,7 +205,7 @@ - "127.0.0.1:8848:8548" + volumes: + - "seqdata_d:/home/user/.arbitrum/local/nitro" + - "config:/config" +- command: --conf.file /config/sequencer_config.json --node.seq-coordinator.my-url ws://sequencer_d:8548 ++ command: --conf.file /config/sequencer_config.json --node.seq-coordinator.my-url ws://sequencer_d:8548 --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth + - redis +@@ -221,7 +221,7 @@ volumes: + - "unsafestaker-data:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" +- command: --conf.file /config/unsafe_staker_config.json ++ command: --conf.file /config/unsafe_staker_config.json --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - sequencer + - redis +@@ -238,7 +238,7 @@ volumes: + - "poster-data:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" +- command: --conf.file /config/poster_config.json ++ command: --conf.file /config/poster_config.json --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth + - redis +@@ -254,7 +254,7 @@ volumes: + - "poster-data-b:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" +- command: --conf.file /config/poster_config.json ++ command: --conf.file /config/poster_config.json --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth + - redis +@@ -270,7 +270,7 @@ volumes: + - "poster-data-c:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" +- command: --conf.file /config/poster_config.json ++ command: --conf.file /config/poster_config.json --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - geth + - redis +@@ -286,7 +286,7 @@ volumes: + - "validator-data:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" +- command: --conf.file /config/validator_config.json --http.port 8547 --http.api net,web3,arb,debug --ws.port 8548 ++ command: --conf.file /config/validator_config.json --http.port 8547 --http.api net,web3,arb,debug --ws.port 8548 --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - sequencer + - validation_node +@@ -302,7 +302,7 @@ volumes: + - "validator-data:/home/user/.arbitrum/local/nitro" + - "l1keystore:/home/user/l1keystore" + - "config:/config" +- command: --conf.file /config/l3node_config.json --http.port 3347 --http.api net,web3,arb,debug,eth --ws.port 3348 ++ command: --conf.file /config/l3node_config.json --http.port 3347 --http.api net,web3,arb,debug,eth --ws.port 3348 --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 + depends_on: + - sequencer + - validation_node +@@ -315,7 +315,7 @@ ports: + - "127.0.0.1:8949:8549" + volumes: + - "config:/config" +- command: --conf.file /config/validation_node_config.json ++ command: --conf.file /config/validation_node_config.json --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 +  + scripts: + build: scripts/ +@@ -330,7 +330,7 @@ image: nitro-node-dev-testnode + entrypoint: /usr/local/bin/relay + ports: + - "127.0.0.1:9652:9652" +- command: --chain.id 412346 --node.feed.input.url ws://sequencer:9642 --node.feed.output.port 9652 ++ command: --chain.id 412346 --node.feed.input.url ws://sequencer:9642 --node.feed.output.port 9652 --metrics --pprof --metrics-server.addr 0.0.0.0 --pprof-cfg.addr 0.0.0.0 +  + tokenbridge: + depends_on: +@@ -361,6 +361,66 @@ volumes: + - "config:/config" + - /var/run/docker.sock:/var/run/docker.sock +  ++ eigenda_proxy: ++ container_name: eigenda-proxy ++ image: ghcr.io/layr-labs/eigenda-proxy:v1.6.0 ++ environment: ++ - EIGENDA_PROXY_ADDR=0.0.0.0 ++ - EIGENDA_PROXY_PORT=4242 ++ - EIGENDA_PROXY_MEMSTORE_ENABLED=false ++ - EIGENDA_PROXY_MEMSTORE_EXPIRATION=45m ++ - EIGENDA_PROXY_EIGENDA_SIGNER_PRIVATE_KEY_HEX=$PRIVATE_KEY ++ - EIGENDA_PROXY_EIGENDA_DISPERSER_RPC=disperser-holesky.eigenda.xyz:443 ++ - EIGENDA_PROXY_EIGENDA_SERVICE_MANAGER_ADDR=0xD4A7E1Bd8015057293f0D0A557088c286942e84b ++ - EIGENDA_PROXY_EIGENDA_ETH_RPC=https://ethereum-holesky-rpc.publicnode.com ++ - EIGENDA_PROXY_EIGENDA_CONFIRMATION_DEPTH=0 ++ - EIGENDA_PROXY_METRICS_ADDR=0.0.0.0 ++ - EIGENDA_PROXY_METRICS_ENABLED=true ++ - EIGENDA_PROXY_METRICS_PORT=7300 ++ ports: ++ - 4242:4242 ++ - 7300:7300 ++ ++ prometheus: ++ image: prom/prometheus:latest ++ container_name: prometheus ++ volumes: ++ - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml ++ ports: ++ - "9090:9090" ++ command: ++ - "--config.file=/etc/prometheus/prometheus.yml" ++ ++ grafana: ++ image: grafana/grafana:latest ++ container_name: grafana ++ ports: ++ - "127.0.0.1:3000:3000" ++ volumes: ++ - ./grafana/provisioning/:/etc/grafana/provisioning/:ro ++ - ./grafana/dashboards:/var/lib/grafana/dashboards ++ environment: ++ - GF_SECURITY_ADMIN_PASSWORD=admin ++ depends_on: ++ - prometheus ++ ++ loki: ++ image: grafana/loki:3.1.1 ++ restart: unless-stopped ++ volumes: ++ - ./loki:/etc/loki ++ ports: ++ - 3200:3200 ++ command: -config.file=/etc/loki/config.yaml ++ ++ promtail: ++ image: grafana/promtail:3.1.1 ++ restart: unless-stopped ++ volumes: ++ - ./promtail:/etc/promtail ++ - /var/run/docker.sock:/var/run/docker.sock # Mount Docker socket to read container logs ++ command: -config.file=/etc/promtail/config.yaml ++ + volumes: + l1data: + consensus: +@@ -374,6 +434,7 @@ validator-data: + poster-data: + poster-data-b: + poster-data-c: ++ grafana-data: + config: + postgres-data: + tokenbridge-data:
+
+ + +
+ + + + +
+ +
+ +
+16
+
-5
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/rollupcreator/Dockerfile Layr-Labs/nitro-testnode/rollupcreator/Dockerfile +index 17b065a90ce648bdae16f8dc735be321beeb84e6..2b785335cf478a385f5c126d00f90fda97539cc3 100644 +--- OffchainLabs/nitro-testnode/rollupcreator/Dockerfile ++++ Layr-Labs/nitro-testnode/rollupcreator/Dockerfile +@@ -1,14 +1,25 @@ +-FROM node:16-bullseye-slim +-ARG NITRO_CONTRACTS_BRANCH=main ++FROM node:18-bullseye-slim ++ ++ ++# Install necessary packages + RUN apt-get update && \ + apt-get install -y git docker.io python3 build-essential curl jq +-WORKDIR /workspace +-RUN git clone --no-checkout https://github.com/OffchainLabs/nitro-contracts.git ./ +-RUN git checkout ${NITRO_CONTRACTS_BRANCH} ++ ++# Create workspace ++WORKDIR /workspace ++# Clone the repository and checkout the specified branch ++RUN git clone --no-checkout https://github.com/layr-labs/nitro-contracts.git ./ ++RUN git checkout 85aa27d11776bcbadf7f09aebdf71562bcb76e51 ++ ++# Install Foundry + RUN curl -L https://foundry.paradigm.xyz | bash + ENV PATH="${PATH}:/root/.foundry/bin" + RUN foundryup ++ ++# Setup scripts and dependencies + RUN touch scripts/config.ts + RUN yarn install + RUN yarn build:all ++ ++ + ENTRYPOINT ["yarn"]
+
+ + +
+ + + + +
+ +
+ +
+13
+
-2
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/scripts/config.ts Layr-Labs/nitro-testnode/scripts/config.ts +index eefcdd29b4ff91d3348929bcd454721dbdeceaeb..b765ba36731c337fbaa72b6dce5f3cf1f3f28836 100644 +--- OffchainLabs/nitro-testnode/scripts/config.ts ++++ Layr-Labs/nitro-testnode/scripts/config.ts +@@ -164,6 +164,10 @@ "id": 412346, + "info-files": [chainInfoFile], + }, + "node": { ++ "eigen-da": { ++ "enable": true, ++ "rpc": "http://eigenda_proxy:4242" ++ }, + "staker": { + "dangerous": { + "without-block-validator": false +@@ -200,7 +204,10 @@ }, + "batch-poster": { + "enable": false, + "redis-url": argv.redisUrl, +- "max-delay": "30s", ++ "max-delay": "15m", ++ "wait-for-max-delay": false, ++ "max-eigenda-batch-size": 16_000_000, // 16MB ++ "enable-eigenda-failover": false, + "l1-block-bound": "ignore", + "parent-chain-wallet" : { + "account": namedAddress("sequencer"), +@@ -238,6 +245,7 @@ "addr": "0.0.0.0", + "vhosts": "*", + "corsdomain": "*" + }, ++ "metrics": true, + } +  + +@@ -316,6 +324,7 @@ "auth": { + "jwtsecret": valJwtSecret, + "addr": "0.0.0.0", + }, ++ "metrics": true, + })) + fs.writeFileSync(path.join(consts.configpath, "validation_node_config.json"), JSON.stringify(validationNodeConfig)) + } +@@ -344,7 +353,8 @@ "arbitrum": { + "EnableArbOS": true, + "AllowDebugPrecompiles": true, + "DataAvailabilityCommittee": false, +- "InitialArbOSVersion": 30, ++ "InitialArbOSVersion": 32, ++ "EigenDA": true, + "InitialChainOwner": argv.l2owner, + "GenesisBlockNum": 0 + } +@@ -379,6 +389,7 @@ "AllowDebugPrecompiles": true, + "DataAvailabilityCommittee": false, + "InitialArbOSVersion": 30, + "InitialChainOwner": argv.l2owner, ++ "EigenDA": true, + "GenesisBlockNum": 0 + } + }
+
+ + + +
+
+ +
+
+
+ + +
+ +
+

Added optional observability to the testnode environment:

+ +
    +
  • Prometheus agent for collecting service metrics

  • + +
  • Loki for log collecting

  • + +
  • PProf on sequencer resources to capture key performance metrics

  • + +
  • Grafana dashboard to capture key throughput and reliability metrics

  • +
+ +

Observability can be enabled by passing --monitor to the root level test-node.bash script.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+10
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/grafana/provisioning/dashboards/all.yml Layr-Labs/nitro-testnode/grafana/provisioning/dashboards/all.yml +new file mode 100644 +index 0000000000000000000000000000000000000000..36fd178a858175095dedcd602d6001c6ecb2f30c +--- /dev/null ++++ Layr-Labs/nitro-testnode/grafana/provisioning/dashboards/all.yml +@@ -0,0 +1,11 @@ ++apiVersion: 1 ++ ++providers: ++ - name: 'default' ++ orgId: 1 ++ folder: '' ++ type: file ++ disableDeletion: true ++ editable: true ++ options: ++ path: /var/lib/grafana/dashboards +\ No newline at end of file
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+14
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/grafana/provisioning/datasources/all.yml Layr-Labs/nitro-testnode/grafana/provisioning/datasources/all.yml +new file mode 100644 +index 0000000000000000000000000000000000000000..af7179f3f86355c624ca71cf77d73f7cbb924d81 +--- /dev/null ++++ Layr-Labs/nitro-testnode/grafana/provisioning/datasources/all.yml +@@ -0,0 +1,15 @@ ++apiVersion: 1 ++ ++deleteDatasources: ++- name: 'Prometheus' ++ ++datasources: ++- access: 'proxy' ++ editable: true ++ is_default: true ++ name: 'Prometheus' ++ uid: 'ddshms3dlineoe' ++ org_id: 1 ++ type: 'prometheus' ++ url: 'http://prometheus:9090' ++ version: 1 +\ No newline at end of file
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+38
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/loki/config.yaml Layr-Labs/nitro-testnode/loki/config.yaml +new file mode 100644 +index 0000000000000000000000000000000000000000..493a9085ebaddd7dabdef2101136d3a97f99998f +--- /dev/null ++++ Layr-Labs/nitro-testnode/loki/config.yaml +@@ -0,0 +1,39 @@ ++auth_enabled: false ++ ++server: ++ http_listen_port: 3200 ++ ++common: ++ instance_addr: 127.0.0.1 ++ path_prefix: /loki ++ storage: ++ filesystem: ++ chunks_directory: /loki/chunks ++ rules_directory: /loki/rules ++ replication_factor: 1 ++ ring: ++ kvstore: ++ store: inmemory ++ ++schema_config: ++ configs: ++ - from: 2020-10-24 ++ store: tsdb ++ object_store: filesystem ++ schema: v13 ++ index: ++ prefix: index_ ++ period: 24h ++ ++# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration ++# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/ ++# ++# Statistics help us better understand how Loki is used, and they show us performance ++# levels for most users. This helps us prioritize features and documentation. ++# For more information on what's sent, look at ++# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go ++# Refer to the buildReport method to see what goes into a report. ++# ++# If you would like to disable reporting, uncomment the following lines: ++#analytics: ++# reporting_enabled: false +\ No newline at end of file
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+41
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/prometheus/prometheus.yml Layr-Labs/nitro-testnode/prometheus/prometheus.yml +new file mode 100644 +index 0000000000000000000000000000000000000000..52d71cd685d394a10105263c889c6a0464596b63 +--- /dev/null ++++ Layr-Labs/nitro-testnode/prometheus/prometheus.yml +@@ -0,0 +1,41 @@ ++global: ++ scrape_interval: 15s ++ scrape_timeout: 10s ++ evaluation_interval: 15s ++ ++scrape_configs: ++ ++ - job_name: 'prometheus' ++ scrape_interval: 5s ++ static_configs: ++ - targets: ['localhost:9090'] ++ ++ - job_name: 'eigenda_proxy' ++ honor_timestamps: true ++ metrics_path: /debug/metrics/prometheus ++ static_configs: ++ - targets: ["eigenda_proxy:7300"] ++ ++ - job_name: 'sequencer' ++ honor_timestamps: true ++ metrics_path: /debug/metrics/prometheus ++ static_configs: ++ - targets: ["sequencer:6070"] ++ ++ - job_name: 'poster' ++ honor_timestamps: true ++ metrics_path: /debug/metrics/prometheus ++ static_configs: ++ - targets: ["poster:6070"] ++ ++ - job_name: 'validator' ++ honor_timestamps: true ++ metrics_path: /debug/metrics/prometheus ++ static_configs: ++ - targets: ["validator:6070"] ++ ++ - job_name: 'validation_node' ++ honor_timestamps: true ++ metrics_path: /debug/metrics/prometheus ++ static_configs: ++ - targets: ["validation_node:6070"]
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+20
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/promtail/config.yaml Layr-Labs/nitro-testnode/promtail/config.yaml +new file mode 100644 +index 0000000000000000000000000000000000000000..7f2a6bfd7e859cffde952bf73cc6cb190847a3e7 +--- /dev/null ++++ Layr-Labs/nitro-testnode/promtail/config.yaml +@@ -0,0 +1,21 @@ ++server: ++ http_listen_port: 9080 ++ grpc_listen_port: 0 ++ ++positions: ++ filename: /tmp/positions.yaml ++ ++clients: ++ - url: http://loki:3200/loki/api/v1/push ++ ++scrape_configs: ++ - job_name: docker ++ docker_sd_configs: ++ - host: unix:///var/run/docker.sock ++ filters: ++ - name: name ++ values: ["sequencer", "poster", "validation*", "validator", "eigenda-proxy"] ++ relabel_configs: ++ - source_labels: ["__meta_docker_container_name"] ++ regex: "/(.*)" ++ target_label: "container" +\ No newline at end of file
+
+ + +
+ + + + +
+ +
+ +
+16
+
-3
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/test-node.bash Layr-Labs/nitro-testnode/test-node.bash +index dd112c95b5f893e858c2b86c0cd0f935f75f8d3b..d2642a8e9652e4b44a7b0b0cd218e530217b6c9c 100755 +--- OffchainLabs/nitro-testnode/test-node.bash ++++ Layr-Labs/nitro-testnode/test-node.bash +@@ -2,12 +2,12 @@ #!/usr/bin/env bash +  + set -e +  +-NITRO_NODE_VERSION=offchainlabs/nitro-node:v3.0.1-cf4b74e-dev ++NITRO_NODE_VERSION=ghcr.io/layr-labs/nitro-eigenda:latest + BLOCKSCOUT_VERSION=offchainlabs/blockscout:v1.0.0-c8db5b1 +  + # This commit matches the v1.2.1 contracts, with additional support for CacheManger deployment. + # Once v1.2.2 is released, we can switch to that version. +-DEFAULT_NITRO_CONTRACTS_VERSION="867663657b98a66b60ff244e46226e0cb368ab94" ++DEFAULT_NITRO_CONTRACTS_VERSION="85aa27d11776bcbadf7f09aebdf71562bcb76e51" + DEFAULT_TOKEN_BRIDGE_VERSION="v1.2.1" +  + # Set default versions if not overriden by provided env vars +@@ -53,6 +53,7 @@ batchposters=1 + devprivkey=b6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 + l1chainid=1337 + simple=true ++monitor=false + while [[ $# -gt 0 ]]; do + case $1 in + --init) +@@ -172,6 +173,13 @@ --no-simple) + simple=false + shift + ;; ++ --monitor) ++ prometheus=true ++ grafana=true ++ loki=true ++ promtail=true ++ shift ++ ;; + *) + echo Usage: $0 \[OPTIONS..] + echo $0 script [SCRIPT-ARGS] +@@ -194,6 +202,7 @@ echo --tokenbridge deploy L1-L2 token bridge. + echo --no-tokenbridge don\'t build or launch tokenbridge + echo --no-run does not launch nodes \(useful with build or init\) + echo --no-simple run a full configuration with separate sequencer/batch-poster/validator/relayer ++ echo --monitor start Prometheus, Loki, Promtail and Grafana server + echo + echo script runs inside a separate docker. For SCRIPT-ARGS, run $0 script --help + exit 0 +@@ -216,7 +225,8 @@ force_build=true + fi + fi +  +-NODES="sequencer" ++NODES="eigenda_proxy" ++NODES="$NODES sequencer" + INITIAL_SEQ_NODES="sequencer" +  + if ! $simple; then +@@ -254,6 +264,9 @@ NODES="$NODES l3node" + fi + if $blockscout; then + NODES="$NODES blockscout" ++fi ++if $monitor; then ++ NODES="$NODES prometheus grafana loki promtail" + fi + if $force_build; then + echo == Building..
+
+ + + +
+
+ +
+
+
+ + +
+ +
+

Added a flood.ts script which generates tx traffic targeting a specific byte rate.

+ +

E.g:

+ +
  docker compose run scripts flood --serial true --rounds 1000 --targetThroughput 100_000
+
+ +

This will target 100,000 Kb/s.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+149
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/scripts/flood.ts Layr-Labs/nitro-testnode/scripts/flood.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..002af3ade68d0dbb7a5dc90458c637a5ce1867e2 +--- /dev/null ++++ Layr-Labs/nitro-testnode/scripts/flood.ts +@@ -0,0 +1,149 @@ ++import { runStress } from './stress'; ++import { ethers } from 'ethers'; ++import { namedAccount, namedAddress } from './accounts'; ++ ++function randomInRange(maxSize: number): number { ++ return Math.ceil(Math.random() * maxSize); ++} ++ ++function generateRandomBytes(size: number): string { ++ let result = ''; ++ const hexChars = '0123456789abcdef'; ++ for (let i = 0; i < size; i++) { ++ const byte = Math.floor(Math.random() * 256); ++ result += hexChars[(byte >> 4) & 0xf] + hexChars[byte & 0xf]; // Convert byte to two hex characters ++ } ++ return result; ++} ++ ++function generateRandomHexData(size: number): string { ++ return '0x' + generateRandomBytes(size); ++} ++ ++async function sendTransaction(argv: any, threadId: number) { ++ console.log("sending tx from", argv.from, "to", argv.to) ++ const account = namedAccount(argv.from, threadId).connect(argv.provider) ++ const startNonce = await account.getTransactionCount("pending") ++ const response = await ++ account.sendTransaction({ ++ to: namedAddress(argv.to, threadId), ++ value: ethers.utils.parseEther(argv.ethamount), ++ data: argv.data, ++ nonce: startNonce, ++ }) ++ console.log(response) ++ if (argv.wait) { ++ const receipt = await response.wait() ++ console.log(receipt) ++ } ++ if (argv.delay > 0) { ++ await new Promise(f => setTimeout(f, argv.delay)); ++ } ++} ++ ++// flood simulation ++async function simulateNetworkFlood(argv: any) { ++ // fund the users ++ console.log(`fund all users`) ++ const funding_argv = { ++ ...argv, ++ ethamount: "100", ++ threads: 1, ++ wait: true, ++ from: `funnel` ++ } ++ for (let i = 0; i <= argv.user_count; i++) { ++ funding_argv.to = `user_${i}` ++ await runStress(funding_argv, sendTransaction) ++ } ++ ++ console.log(`start sending transactions`) ++ argv.ethamount = "0.0001" ++ ++ // throughput / threads = avg tx size < 127size ++ // if throughput target is set, we will not respect the maxTxDataSize setting ++ if (argv.targetThroughput > 0) { ++ argv.delay = 1000 // 1 second delay ++ // We don't care about the float throughput, just send 1 more transaction of the same average size ++ argv.threads = argv.targetThroughput > 125_000 ? argv.targetThroughput / 125_000 + 1 : 1 ++ const size = argv.targetThroughput / argv.threads ++ for (let i = 0; i < argv.rounds; i++) { ++ argv.from = `user_${randomInRange(argv.user_count)}`; ++ argv.to = `user_${randomInRange(argv.user_count)}`; // don't care if sending to self ++ argv.data = generateRandomHexData(size); ++ ++ console.log(`prepared transactions`, { transaction_count: i, size: size, argv: argv }) ++ const startTime = Date.now(); ++ runStress(argv, sendTransaction); ++ const timeSpent = Date.now() - startTime; ++ const secondsTick = Math.max(0, 1000 - timeSpent); ++ await new Promise(resolve => setTimeout(resolve, secondsTick)); ++ } ++ } else { ++ for (let i = 0; i < argv.rounds; i++) { ++ argv.from = `user_${randomInRange(argv.user_count)}`; ++ argv.to = `user_${randomInRange(argv.user_count)}`; // don't care if sending to self ++ argv.threads = randomInRange(argv.threads) ++ const size = randomInRange(argv.maxTxDataSize) ++ argv.data = generateRandomHexData(size); ++ ++ console.log(`prepared transactions`, { transaction_count: i, size: size, argv: argv }) ++ await runStress(argv, sendTransaction); ++ } ++ } ++} ++ ++export const floodCommand = { ++ command: "flood", ++ describe: "Simulates network activity by sending arbitrary transactions among random user_count", ++ builder: { ++ user_count: { ++ number: true, ++ describe: "Number of active user_count", ++ default: 10, ++ }, ++ rounds: { ++ number: true, ++ describe: "Number of rounds of transactions to send (total transactions = rounds * threads); if targetThroughput rate is set, rounds should represents the total second of the tests", ++ default: 12000, ++ }, ++ // this is something we can read from the rollup creator ++ maxTxDataSize: { ++ number: true, ++ describe: "Maximum transaction data size in bytes", ++ default: 58982, ++ }, ++ threads: { ++ number: true, ++ describe: "Number of threads per transaction", ++ default: 100, ++ }, ++ delay: { ++ number: true, ++ describe: "Delay between transactions in milliseconds", ++ default: 0, ++ }, ++ serial: { ++ boolean: true, ++ describe: "Run transactions serially (in sequence)", ++ default: false, ++ }, ++ wait: { ++ boolean: true, ++ describe: "Wait for transaction confirmations", ++ default: false, ++ }, ++ targetThroughput: { ++ number: true, ++ describe: "Target throughput in total transactions data size sent per second; if this is set, number of threads will be disregarded (Default is 16kb)", ++ default: 0, ++ }, ++ }, ++ handler: async (argv: any) => { ++ argv.provider = new ethers.providers.WebSocketProvider(argv.l2url); ++ await simulateNetworkFlood(argv); ++ argv.provider.destroy(); ++ ++ }, ++}; ++
+
+ + +
+ + + + +
+ +
+ +
+2
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/scripts/index.ts Layr-Labs/nitro-testnode/scripts/index.ts +index 2fd189f6110252c29f9007cbce64ece090a70d5d..72a57177cc56b14cef60e8803055489a438d634c 100644 +--- OffchainLabs/nitro-testnode/scripts/index.ts ++++ Layr-Labs/nitro-testnode/scripts/index.ts +@@ -20,6 +20,7 @@ sendL2Command, + sendL3Command, + sendRPCCommand, + } from "./ethcommands"; ++import { floodCommand } from "./flood"; +  + async function main() { + await Yargs(hideBin(process.argv)) +@@ -41,6 +42,7 @@ .command(sendL1Command) + .command(sendL2Command) + .command(sendL3Command) + .command(sendRPCCommand) ++ .command(floodCommand) + .command(writeConfigCommand) + .command(writeGethGenesisCommand) + .command(writeL2ChainConfigCommand)
+
+ + + +
+
+ +
+
+
+ + +
+ +
+
+
+ +
+ + + + +
+ +
+ +
+1
+
-1
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/.github/workflows/ci.yml Layr-Labs/nitro-testnode/.github/workflows/ci.yml +index a78e451ce5c2c9cd54de4268a3194ee519c12d1f..2ea3c2ec9b46ce667d71fd70a14c03dc7694010e 100644 +--- OffchainLabs/nitro-testnode/.github/workflows/ci.yml ++++ Layr-Labs/nitro-testnode/.github/workflows/ci.yml +@@ -13,7 +13,7 @@ +  + jobs: + build_and_run: +- runs-on: ubuntu-8 ++ runs-on: ubuntu-latest +  + steps: + - name: Checkout
+
+ + +
+ + + + +
+ +
+ +
+1
+
-1
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/scripts/Dockerfile Layr-Labs/nitro-testnode/scripts/Dockerfile +index c5b7050c29c189fd4d51c3d35c8f5ed75b97f45a..ca2c677e8149a47a935c1b3a870945ae77127064 100644 +--- OffchainLabs/nitro-testnode/scripts/Dockerfile ++++ Layr-Labs/nitro-testnode/scripts/Dockerfile +@@ -1,4 +1,4 @@ +-FROM node:16-bullseye-slim ++FROM node:18-bullseye-slim + WORKDIR /workspace + COPY ./package.json ./yarn.lock ./ + RUN yarn
+
+ + + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+ +
+3905
+
-0
+ +
+ +
+
+
diff --git OffchainLabs/nitro-testnode/grafana/dashboards/Throughput-testing.json Layr-Labs/nitro-testnode/grafana/dashboards/Throughput-testing.json +new file mode 100644 +index 0000000000000000000000000000000000000000..58d6fcb2d3ba8c13aa2132793fa34aec54f9464a +--- /dev/null ++++ Layr-Labs/nitro-testnode/grafana/dashboards/Throughput-testing.json +@@ -0,0 +1,3906 @@ ++{ ++ "annotations": { ++ "list": [ ++ { ++ "builtIn": 1, ++ "datasource": { ++ "type": "grafana", ++ "uid": "-- Grafana --" ++ }, ++ "enable": true, ++ "hide": true, ++ "iconColor": "rgba(0, 211, 255, 1)", ++ "name": "Annotations & Alerts", ++ "type": "dashboard" ++ } ++ ] ++ }, ++ "editable": true, ++ "fiscalYearStartMonth": 0, ++ "graphTooltip": 0, ++ "links": [], ++ "panels": [ ++ { ++ "collapsed": true, ++ "gridPos": { ++ "h": 1, ++ "w": 24, ++ "x": 0, ++ "y": 0 ++ }, ++ "id": 26, ++ "panels": [ ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "custom": { ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "scaleDistribution": { ++ "type": "linear" ++ } ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 9, ++ "x": 0, ++ "y": 1 ++ }, ++ "id": 25, ++ "options": { ++ "calculate": false, ++ "cellGap": 1, ++ "color": { ++ "exponent": 0.5, ++ "fill": "dark-orange", ++ "mode": "scheme", ++ "reverse": false, ++ "scale": "exponential", ++ "scheme": "Oranges", ++ "steps": 64 ++ }, ++ "exemplars": { ++ "color": "rgba(255,0,255,0.7)" ++ }, ++ "filterValues": { ++ "le": 1e-9 ++ }, ++ "legend": { ++ "show": true ++ }, ++ "rowsFrame": { ++ "layout": "auto" ++ }, ++ "tooltip": { ++ "mode": "single", ++ "showColorScale": false, ++ "yHistogram": false ++ }, ++ "yAxis": { ++ "axisPlacement": "left", ++ "reverse": false ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "jit_wasm_memoryusage{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "WASM Memory Usage", ++ "type": "heatmap" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "custom": { ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "scaleDistribution": { ++ "type": "linear" ++ } ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 9, ++ "x": 9, ++ "y": 1 ++ }, ++ "id": 27, ++ "options": { ++ "calculate": false, ++ "cellGap": 1, ++ "color": { ++ "exponent": 0.5, ++ "fill": "dark-orange", ++ "mode": "scheme", ++ "reverse": false, ++ "scale": "exponential", ++ "scheme": "Oranges", ++ "steps": 64 ++ }, ++ "exemplars": { ++ "color": "rgba(255,0,255,0.7)" ++ }, ++ "filterValues": { ++ "le": 1e-9 ++ }, ++ "legend": { ++ "show": true ++ }, ++ "rowsFrame": { ++ "layout": "auto" ++ }, ++ "tooltip": { ++ "mode": "single", ++ "showColorScale": false, ++ "yHistogram": false ++ }, ++ "yAxis": { ++ "axisPlacement": "left", ++ "reverse": false ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_wasmModuleRoots_success{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "WASM Module Roots Endpoint Success", ++ "type": "heatmap" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "custom": { ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "scaleDistribution": { ++ "type": "linear" ++ } ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 9, ++ "x": 0, ++ "y": 10 ++ }, ++ "id": 30, ++ "options": { ++ "calculate": false, ++ "cellGap": 1, ++ "color": { ++ "exponent": 0.5, ++ "fill": "dark-orange", ++ "mode": "scheme", ++ "reverse": false, ++ "scale": "exponential", ++ "scheme": "Oranges", ++ "steps": 64 ++ }, ++ "exemplars": { ++ "color": "rgba(255,0,255,0.7)" ++ }, ++ "filterValues": { ++ "le": 1e-9 ++ }, ++ "legend": { ++ "show": true ++ }, ++ "rowsFrame": { ++ "layout": "auto" ++ }, ++ "tooltip": { ++ "mode": "single", ++ "showColorScale": false, ++ "yHistogram": false ++ }, ++ "yAxis": { ++ "axisPlacement": "left", ++ "reverse": false ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_validate_success{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Validate Endpoint", ++ "type": "heatmap" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 4, ++ "w": 6, ++ "x": 9, ++ "y": 10 ++ }, ++ "id": 33, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_validate_success_count{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Validate Success Count", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "custom": { ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "scaleDistribution": { ++ "type": "linear" ++ } ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 9, ++ "x": 15, ++ "y": 10 ++ }, ++ "id": 31, ++ "options": { ++ "calculate": false, ++ "cellGap": 1, ++ "color": { ++ "exponent": 0.5, ++ "fill": "dark-orange", ++ "mode": "scheme", ++ "reverse": false, ++ "scale": "exponential", ++ "scheme": "Oranges", ++ "steps": 64 ++ }, ++ "exemplars": { ++ "color": "rgba(255,0,255,0.7)" ++ }, ++ "filterValues": { ++ "le": 1e-9 ++ }, ++ "legend": { ++ "show": true ++ }, ++ "rowsFrame": { ++ "layout": "auto" ++ }, ++ "tooltip": { ++ "mode": "single", ++ "showColorScale": false, ++ "yHistogram": false ++ }, ++ "yAxis": { ++ "axisPlacement": "left", ++ "reverse": false ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_stylusArchs_success{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Validate Stylus Program Endpoint", ++ "type": "heatmap" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 5, ++ "w": 6, ++ "x": 9, ++ "y": 14 ++ }, ++ "id": 28, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_stylusArchs_success_count{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Stylus Archs Success Count", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "custom": { ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "scaleDistribution": { ++ "type": "linear" ++ } ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 9, ++ "x": 0, ++ "y": 19 ++ }, ++ "id": 29, ++ "options": { ++ "calculate": false, ++ "cellGap": 1, ++ "color": { ++ "exponent": 0.5, ++ "fill": "dark-orange", ++ "mode": "scheme", ++ "reverse": false, ++ "scale": "exponential", ++ "scheme": "Oranges", ++ "steps": 64 ++ }, ++ "exemplars": { ++ "color": "rgba(255,0,255,0.7)" ++ }, ++ "filterValues": { ++ "le": 1e-9 ++ }, ++ "legend": { ++ "show": true ++ }, ++ "rowsFrame": { ++ "layout": "auto" ++ }, ++ "tooltip": { ++ "mode": "single", ++ "showColorScale": false, ++ "yHistogram": false ++ }, ++ "yAxis": { ++ "axisPlacement": "left", ++ "reverse": false ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_latestWasmModuleRoot_success{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Latest WASM Root Endpoint", ++ "type": "heatmap" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 5, ++ "w": 6, ++ "x": 9, ++ "y": 19 ++ }, ++ "id": 34, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_latestWasmModuleRoot_success_count{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "wasmModuleRoots Success Count", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "custom": { ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "scaleDistribution": { ++ "type": "linear" ++ } ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 9, ++ "x": 15, ++ "y": 19 ++ }, ++ "id": 32, ++ "options": { ++ "calculate": false, ++ "cellGap": 1, ++ "color": { ++ "exponent": 0.5, ++ "fill": "dark-orange", ++ "mode": "scheme", ++ "reverse": false, ++ "scale": "exponential", ++ "scheme": "Oranges", ++ "steps": 64 ++ }, ++ "exemplars": { ++ "color": "rgba(255,0,255,0.7)" ++ }, ++ "filterValues": { ++ "le": 1e-9 ++ }, ++ "legend": { ++ "show": true ++ }, ++ "rowsFrame": { ++ "layout": "auto" ++ }, ++ "tooltip": { ++ "mode": "single", ++ "showColorScale": false, ++ "yHistogram": false ++ }, ++ "yAxis": { ++ "axisPlacement": "left", ++ "reverse": false ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_room_success{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Validations Available (room) Endpoint", ++ "type": "heatmap" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 4, ++ "w": 6, ++ "x": 9, ++ "y": 24 ++ }, ++ "id": 35, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rpc_duration_validation_stylusArchs_success_count{instance=\"validation_node:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Stylus Archs Success Count", ++ "type": "gauge" ++ } ++ ], ++ "title": "Validation Server", ++ "type": "row" ++ }, ++ { ++ "collapsed": false, ++ "gridPos": { ++ "h": 1, ++ "w": 24, ++ "x": 0, ++ "y": 1 ++ }, ++ "id": 9, ++ "panels": [], ++ "title": "Validator", ++ "type": "row" ++ }, ++ { ++ "datasource": { ++ "default": false, ++ "type": "loki", ++ "uid": "cdzn4gd8wly4gf" ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 24, ++ "x": 0, ++ "y": 2 ++ }, ++ "id": 39, ++ "options": { ++ "dedupStrategy": "none", ++ "enableLogDetails": true, ++ "prettifyLogMessage": false, ++ "showCommonLabels": false, ++ "showLabels": false, ++ "showTime": false, ++ "sortOrder": "Descending", ++ "wrapLogMessage": false ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "loki", ++ "uid": "cdzn4gd8wly4gf" ++ }, ++ "editorMode": "builder", ++ "expr": "{service_name=\"nitro-testnode-validator-1\"}", ++ "queryType": "range", ++ "refId": "A" ++ } ++ ], ++ "title": "Logs", ++ "type": "logs" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 0, ++ "y": 10 ++ }, ++ "id": 7, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "exemplar": false, ++ "expr": "arb_validator_msg_count_current_batch{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "msg count cur batch", ++ "range": true, ++ "refId": "Validator Message Count", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_validator_validations_pending{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "validations pending", ++ "range": true, ++ "refId": "Validations Pending", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_validator_msg_count_validated{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "msg count validated", ++ "range": true, ++ "refId": "Validator Msg Count Validated", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "exemplar": false, ++ "expr": "arb_validator_validations_valid{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "validations valid", ++ "range": true, ++ "refId": "Valid Validations", ++ "useBackend": false ++ } ++ ], ++ "title": "Validations", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [ ++ { ++ "options": { ++ "{__name__\"": { ++ "index": 0 ++ } ++ }, ++ "type": "value" ++ } ++ ], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [ ++ { ++ "matcher": { ++ "id": "byRegexp", ++ "options": "__name__*" ++ }, ++ "properties": [ ++ { ++ "id": "displayName" ++ } ++ ] ++ } ++ ] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 3, ++ "x": 12, ++ "y": 10 ++ }, ++ "id": 17, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_confirmed{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Confirmed", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_inblock{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Inblock", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_latest{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Latest", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ } ++ ], ++ "title": "nominal SeqNum", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 9, ++ "x": 15, ++ "y": 10 ++ }, ++ "id": 19, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_queue_length{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Data Poster Queue", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 6, ++ "x": 0, ++ "y": 18 ++ }, ++ "id": 23, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_staker_action_success{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{__name__}}", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_staker_action_failure{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{__name__}}", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_staker_confirmed_node{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{__name__}}", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_staker_staked_node{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{__name__}}", ++ "range": true, ++ "refId": "D", ++ "useBackend": false ++ } ++ ], ++ "title": "Assertion Chain Staking", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 5, ++ "x": 6, ++ "y": 18 ++ }, ++ "id": 24, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_validator_recordingdb_size{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Recording DB Size", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 4, ++ "x": 11, ++ "y": 18 ++ }, ++ "id": 41, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchposter_gasrefunder_eth{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "ETH", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Gas Refunder ETH", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 5, ++ "x": 15, ++ "y": 18 ++ }, ++ "id": 45, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_queue_length{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Length", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_queue_weight{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Weight", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ } ++ ], ++ "title": "Data Poster Queue", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 9, ++ "w": 4, ++ "x": 20, ++ "y": 18 ++ }, ++ "id": 44, ++ "options": { ++ "colorMode": "value", ++ "graphMode": "area", ++ "justifyMode": "auto", ++ "orientation": "auto", ++ "percentChangeColorMode": "standard", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showPercentChange": false, ++ "textMode": "auto", ++ "wideLayout": true ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_nonce_finalized{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Nonce Finalized", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_nonce_softconfirmed{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Nonce Soft Confirmed", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_nonce_unconfirmed{instance=\"validator:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Nonce Unconfirmed", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ } ++ ], ++ "title": "Data Poster", ++ "type": "stat" ++ }, ++ { ++ "collapsed": true, ++ "gridPos": { ++ "h": 1, ++ "w": 24, ++ "x": 0, ++ "y": 27 ++ }, ++ "id": 21, ++ "panels": [ ++ { ++ "datasource": { ++ "default": false, ++ "type": "loki", ++ "uid": "cdzn4gd8wly4gf" ++ }, ++ "gridPos": { ++ "h": 4, ++ "w": 24, ++ "x": 0, ++ "y": 3 ++ }, ++ "id": 37, ++ "options": { ++ "dedupStrategy": "none", ++ "enableLogDetails": true, ++ "prettifyLogMessage": false, ++ "showCommonLabels": false, ++ "showLabels": false, ++ "showTime": false, ++ "sortOrder": "Descending", ++ "wrapLogMessage": false ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "loki", ++ "uid": "cdzn4gd8wly4gf" ++ }, ++ "editorMode": "builder", ++ "expr": "{container=\"nitro-testnode-poster-1\"} |= ``", ++ "queryType": "range", ++ "refId": "A" ++ } ++ ], ++ "title": "Logs", ++ "type": "logs" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green" ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 7, ++ "x": 0, ++ "y": 7 ++ }, ++ "id": 20, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchposter_estimated_batch_backlog{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Estimated Batch Backlog", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green" ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 9, ++ "x": 7, ++ "y": 7 ++ }, ++ "id": 22, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchposter_wallet_eth{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Wallet ETH", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green" ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 4, ++ "x": 16, ++ "y": 7 ++ }, ++ "id": 40, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchPoster_action_da_success{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "DA Success", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchPoster_action_da_failure{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "DA Failures", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ } ++ ], ++ "title": "Data Availability Provider", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "description": "", ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green" ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 4, ++ "x": 20, ++ "y": 7 ++ }, ++ "id": 43, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_nonce_finalized{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Nonce Finalized", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_nonce_softconfirmed{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Nonce Soft Confirmed", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_nonce_unconfirmed{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Nonce Unconfirmed", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ } ++ ], ++ "title": "Data Poster", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green" ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 7, ++ "x": 0, ++ "y": 15 ++ }, ++ "id": 42, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchposter_l1gasprice{instance=\"poster:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "GWEI", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "L1 Gas Price", ++ "type": "timeseries" ++ } ++ ], ++ "title": "Batch Poster", ++ "type": "row" ++ }, ++ { ++ "collapsed": true, ++ "gridPos": { ++ "h": 1, ++ "w": 24, ++ "x": 0, ++ "y": 28 ++ }, ++ "id": 13, ++ "panels": [ ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 9, ++ "x": 0, ++ "y": 4 ++ }, ++ "id": 12, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_block_basefee", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "L2 Base Fee", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 7, ++ "x": 9, ++ "y": 4 ++ }, ++ "id": 14, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "hidden", ++ "placement": "right", ++ "showLegend": false ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_block_gasused", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Block Gas Used", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 7, ++ "x": 16, ++ "y": 4 ++ }, ++ "id": 46, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "hidden", ++ "placement": "right", ++ "showLegend": false ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_block_gasused", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Block Gas Used", ++ "type": "timeseries" ++ } ++ ], ++ "title": "Chain", ++ "type": "row" ++ }, ++ { ++ "collapsed": false, ++ "gridPos": { ++ "h": 1, ++ "w": 24, ++ "x": 0, ++ "y": 29 ++ }, ++ "id": 16, ++ "panels": [], ++ "title": "EigenDA Proxy", ++ "type": "row" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 0, ++ "y": 30 ++ }, ++ "id": 15, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "eigenda_proxy_http_server_requests_total{job=\"eigenda_proxy\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Proxy Requests Total", ++ "type": "timeseries" ++ }, ++ { ++ "collapsed": true, ++ "gridPos": { ++ "h": 1, ++ "w": 24, ++ "x": 0, ++ "y": 38 ++ }, ++ "id": 8, ++ "panels": [ ++ { ++ "datasource": { ++ "default": false, ++ "type": "loki", ++ "uid": "cdzn4gd8wly4gf" ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 24, ++ "x": 0, ++ "y": 31 ++ }, ++ "id": 38, ++ "options": { ++ "dedupStrategy": "none", ++ "enableLogDetails": true, ++ "prettifyLogMessage": false, ++ "showCommonLabels": false, ++ "showLabels": false, ++ "showTime": false, ++ "sortOrder": "Descending", ++ "wrapLogMessage": false ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "loki", ++ "uid": "cdzn4gd8wly4gf" ++ }, ++ "editorMode": "builder", ++ "expr": "{container=\"nitro-testnode-sequencer-1\"} |= ``", ++ "queryType": "range", ++ "refId": "A" ++ } ++ ], ++ "title": "Logs", ++ "type": "logs" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 5, ++ "w": 4, ++ "x": 0, ++ "y": 39 ++ }, ++ "id": 11, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_inbox_latest_batch{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "latest batch", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_inbox_latest_batch_message{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "latest batch msg", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ } ++ ], ++ "title": "Inbox", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "thresholds" ++ }, ++ "mappings": [ ++ { ++ "options": { ++ "{__name__\"": { ++ "index": 0 ++ } ++ }, ++ "type": "value" ++ } ++ ], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [ ++ { ++ "matcher": { ++ "id": "byRegexp", ++ "options": "__name__*" ++ }, ++ "properties": [ ++ { ++ "id": "displayName" ++ } ++ ] ++ } ++ ] ++ }, ++ "gridPos": { ++ "h": 5, ++ "w": 8, ++ "x": 4, ++ "y": 39 ++ }, ++ "id": 2, ++ "options": { ++ "minVizHeight": 75, ++ "minVizWidth": 75, ++ "orientation": "auto", ++ "reduceOptions": { ++ "calcs": [ ++ "lastNotNull" ++ ], ++ "fields": "", ++ "values": false ++ }, ++ "showThresholdLabels": false, ++ "showThresholdMarkers": true, ++ "sizing": "auto" ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_confirmed{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Confirmed", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_inblock{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Inblock", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_latest{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Latest", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ } ++ ], ++ "title": "nominal SeqNum", ++ "type": "gauge" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [ ++ { ++ "options": { ++ "{__name__\"": { ++ "index": 0 ++ } ++ }, ++ "type": "value" ++ } ++ ], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [ ++ { ++ "matcher": { ++ "id": "byRegexp", ++ "options": "__name__*" ++ }, ++ "properties": [ ++ { ++ "id": "displayName" ++ } ++ ] ++ } ++ ] ++ }, ++ "gridPos": { ++ "h": 5, ++ "w": 12, ++ "x": 12, ++ "y": 39 ++ }, ++ "id": 47, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "pluginVersion": "11.2.0", ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_confirmed{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Confirmed", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_inblock{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Inblock", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencenumber_latest{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "Latest", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ } ++ ], ++ "title": "latest --> confirmed delta", ++ "transformations": [ ++ { ++ "id": "calculateField", ++ "options": { ++ "binary": { ++ "left": "Latest", ++ "operator": "-", ++ "right": "Confirmed" ++ }, ++ "mode": "binary", ++ "reduce": { ++ "reducer": "sum" ++ }, ++ "replaceFields": true ++ } ++ } ++ ], ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 0, ++ "y": 44 ++ }, ++ "id": 6, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencer_backlog{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{label_name}}", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_sequencer_calldataunitsbacklog{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{label_name}}", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchposter_estimated_batch_backlog{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{label_name}}", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_feed_backlog_bytes{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{label_name}}", ++ "range": true, ++ "refId": "D", ++ "useBackend": false ++ } ++ ], ++ "title": "backlog sizes", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 12, ++ "y": 44 ++ }, ++ "id": 10, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_batchposter_estimated_batch_backlog", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "latest batch message", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Estimated Batch Backlog", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": {}, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 0, ++ "y": 52 ++ }, ++ "id": 1, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "sum(rate(arb_sequencenumber_latest[$__rate_interval]))", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "sum(rate(arb_sequencenumber_confirmed[$__rate_interval]))", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "sum(rate(arb_sequencenumber_inblock[$__rate_interval]))", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "C", ++ "useBackend": false ++ } ++ ], ++ "title": "SeqNum rate", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 12, ++ "y": 52 ++ }, ++ "id": 5, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rate(arb_sequencer_currentsurplus[$__rate_interval])", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{label_name}}", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rate(arb_sequencer_expectedsurplus[$__rate_interval])", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "{{label_name}}", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ } ++ ], ++ "title": "sequencer surplus", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 0, ++ "y": 60 ++ }, ++ "id": 4, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rate(arb_feed_backlog_bytes{instance=\"sequencer:6070\"}[$__rate_interval])", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "backlog bytes rate", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ }, ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "${DS_PROMETHEUS}" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "rate(arb_feed_backlog_messages{instance=\"sequencer:6070\"}[$__rate_interval])", ++ "fullMetaSearch": false, ++ "hide": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "backlog message rate", ++ "range": true, ++ "refId": "B", ++ "useBackend": false ++ } ++ ], ++ "title": "feed", ++ "type": "timeseries" ++ }, ++ { ++ "datasource": { ++ "default": true, ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "fieldConfig": { ++ "defaults": { ++ "color": { ++ "mode": "palette-classic" ++ }, ++ "custom": { ++ "axisBorderShow": false, ++ "axisCenteredZero": false, ++ "axisColorMode": "text", ++ "axisLabel": "", ++ "axisPlacement": "auto", ++ "barAlignment": 0, ++ "barWidthFactor": 0.6, ++ "drawStyle": "line", ++ "fillOpacity": 0, ++ "gradientMode": "none", ++ "hideFrom": { ++ "legend": false, ++ "tooltip": false, ++ "viz": false ++ }, ++ "insertNulls": false, ++ "lineInterpolation": "linear", ++ "lineWidth": 1, ++ "pointSize": 5, ++ "scaleDistribution": { ++ "type": "linear" ++ }, ++ "showPoints": "auto", ++ "spanNulls": false, ++ "stacking": { ++ "group": "A", ++ "mode": "none" ++ }, ++ "thresholdsStyle": { ++ "mode": "off" ++ } ++ }, ++ "mappings": [], ++ "thresholds": { ++ "mode": "absolute", ++ "steps": [ ++ { ++ "color": "green", ++ "value": null ++ }, ++ { ++ "color": "red", ++ "value": 80 ++ } ++ ] ++ } ++ }, ++ "overrides": [] ++ }, ++ "gridPos": { ++ "h": 8, ++ "w": 12, ++ "x": 12, ++ "y": 60 ++ }, ++ "id": 18, ++ "options": { ++ "legend": { ++ "calcs": [], ++ "displayMode": "list", ++ "placement": "bottom", ++ "showLegend": true ++ }, ++ "tooltip": { ++ "mode": "single", ++ "sort": "none" ++ } ++ }, ++ "targets": [ ++ { ++ "datasource": { ++ "type": "prometheus", ++ "uid": "ddshms3dlineoe" ++ }, ++ "disableTextWrap": false, ++ "editorMode": "builder", ++ "expr": "arb_dataposter_queue_length{instance=\"sequencer:6070\"}", ++ "fullMetaSearch": false, ++ "includeNullMetadata": true, ++ "instant": false, ++ "legendFormat": "__auto", ++ "range": true, ++ "refId": "A", ++ "useBackend": false ++ } ++ ], ++ "title": "Data Poster Queue", ++ "type": "timeseries" ++ } ++ ], ++ "title": "Sequencer", ++ "type": "row" ++ } ++ ], ++ "refresh": "", ++ "schemaVersion": 39, ++ "tags": [], ++ "templating": { ++ "list": [] ++ }, ++ "time": { ++ "from": "now-30m", ++ "to": "now" ++ }, ++ "timepicker": {}, ++ "timezone": "browser", ++ "title": "Throughput testing", ++ "uid": "advlsdpd877y8a", ++ "version": 1, ++ "weekStart": "" ++} +\ No newline at end of file
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + + + + + + +