Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
002ce3d
feat: update metrics services configuration and initialization scripts
cbermudez97 Aug 15, 2025
383a14f
feat: add k6 dashboard and update prometheus configuration
cbermudez97 Aug 15, 2025
970aa4f
feat: enhance configuration for k6 and prometheus integration
cbermudez97 Aug 18, 2025
a016e55
fix: update logging message and improve k6 config generation
cbermudez97 Aug 18, 2025
def66ea
feat: update k6 dashboard configuration for prometheus metrics visual…
cbermudez97 Aug 18, 2025
3dfabe7
refactor: change endpoints to methods in configuration files and upda…
cbermudez97 Aug 18, 2025
dc6e126
docs: update readme to streamline setup instructions and update grafa…
cbermudez97 Aug 18, 2025
8101e6a
feat: collect client and methods metrics from k6 prometheus outputs
cbermudez97 Aug 19, 2025
a8ba287
chore: remove main files for compare, compare-config, and compare-ope…
cbermudez97 Aug 28, 2025
f706d13
feat: add back api server functionality and historic mode
cbermudez97 Aug 28, 2025
02387fa
feat: enhance grafana and postgres configurations, update readme for …
cbermudez97 Aug 28, 2025
4bef2c4
feat: rename payloads to requests in k6 generator and update related …
cbermudez97 Sep 3, 2025
94bbc4b
feat: add script for requests generation based on geth workload tests
cbermudez97 Sep 5, 2025
27daea5
feat: add script for quickly starting nodes from snapshots
cbermudez97 Oct 3, 2025
72b40ae
fix: use sudo for mounting and unmounting overlay filesystem in run-f…
cbermudez97 Oct 3, 2025
f49b891
fix: convert block numbers to hex format in filter generation
cbermudez97 Oct 3, 2025
7113f4e
feat: rename methods to calls in configuration files and update relat…
cbermudez97 Oct 6, 2025
ede66d5
feat: add virtual users configuration and validation in runner
cbermudez97 Oct 6, 2025
e4acd64
fix: change calls field to use pointer slice in configuration files
cbermudez97 Oct 6, 2025
07ed7f8
feat: add optional calls file support in configuration and update val…
cbermudez97 Oct 6, 2025
9b0197d
feat: add rpc timeout option in run-from-snapshot script and update u…
cbermudez97 Oct 6, 2025
ef9ca53
feat: add new rpc methods for gas fees and block retrieval in common …
cbermudez97 Oct 7, 2025
8a1d4c2
feat: update k6 dashboard configuration and enhance run-from-snapshot…
cbermudez97 Oct 8, 2025
7e8193f
feat: update docker images for run-from-snapshot script to performanc…
cbermudez97 Oct 8, 2025
07fd418
fix: add node arg to reth node configuration
cbermudez97 Oct 8, 2025
735440e
feat: update docker compose to bind ports to localhost
cbermudez97 Oct 20, 2025
05258a6
feat: adjust request generation logic in k6 generator to use a factor…
cbermudez97 Oct 20, 2025
51ba94b
feat: enhance k6 scenario configuration to support iterations and upd…
cbermudez97 Oct 21, 2025
2506bf2
feat: add new RPC methods for block receipts and transaction count re…
cbermudez97 Nov 11, 2025
54c5ca5
feat: implement environment variable substitution in configuration lo…
cbermudez97 Nov 12, 2025
7922cb0
chore: merge branch 'main' into develop
cbermudez97 Nov 12, 2025
06c146c
chore: update go version and deps
cbermudez97 Nov 12, 2025
8466ed3
fix: update dockerfile to include k6
cbermudez97 Nov 12, 2025
8e61dc9
feat: remove fixed path for the prometheus remote write endpoint
cbermudez97 Nov 12, 2025
798833e
feat: implement environment variable substitution for Grafana and Pos…
cbermudez97 Dec 4, 2025
1f2bfb8
fix: Improve getting started process (#14)
MysticRyuujin Dec 10, 2025
4074525
fix: port input validation, CI permission, and dashboard deps from main
cbermudez97 Jun 16, 2026
23e6983
refactor: split runner into Cobra subcommands
cbermudez97 Jun 16, 2026
22343f8
feat: add `runner compare` subcommand for one-shot RPC response compa…
cbermudez97 Jun 16, 2026
8b9f588
feat: add `runner compare-openrpc` subcommand
cbermudez97 Jun 17, 2026
5f08e3c
feat(metrics): gap-fill missing Prometheus pairs from k6 summary.json
cbermudez97 Jun 17, 2026
f90f2b8
chore: stage 6 polish - HTML report flag, dead-code sweep, ASCII
cbermudez97 Jun 17, 2026
e4d17b9
chore: merge branch 'main' into chore/app-refactor
cbermudez97 Jun 17, 2026
fe268c6
fix: split Prometheus query/write URLs, add historic --clients, imple…
cbermudez97 Jun 17, 2026
6d466ae
fix(docker): patch libcrypto3/libssl3 in the runtime base image
cbermudez97 Jun 18, 2026
7ae0141
fix(docker): bump Go toolchain and k6 base image to clear Trivy CVEs
cbermudez97 Jun 18, 2026
d264241
ci: publish docker image to GHCR instead of Docker Hub
cbermudez97 Jun 18, 2026
c9fa6f2
ci: use lowercase local tag for the Trivy scan step
cbermudez97 Jun 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 48 additions & 24 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,32 +1,56 @@
# Grafana Configuration
GF_SECURITY_ADMIN_PASSWORD=admin
GF_SECURITY_ADMIN_USER=admin
GF_INSTALL_PLUGINS=grafana-simple-json-datasource,grafana-worldmap-panel

# Database Configuration
POSTGRES_DB=jsonrpc_bench
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

# Grafana Configuration
GF_SECURITY_ADMIN_PASSWORD=admin
GF_SECURITY_ADMIN_USER=admin
# Webhook URLs for notifications
WEBHOOK_CI_URL=https://your-ci-system.com/webhook
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/your-webhook-url
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/your-webhook-url
GITHUB_WEBHOOK_URL=https://api.github.com/repos/your-org/your-repo/issues

# Authentication tokens
CI_WEBHOOK_TOKEN=your-ci-token
GITHUB_TOKEN=your-github-token
GITHUB_WEBHOOK_SECRET=your-webhook-secret

# Email Configuration
ALERT_EMAIL_ADDRESSES=alerts@your-domain.com,team@your-domain.com
GF_SMTP_ENABLED=true
GF_SMTP_HOST=smtp.your-domain.com:587
GF_SMTP_USER=alerts@your-domain.com
GF_SMTP_PASSWORD=your-email-password
GF_SMTP_FROM_ADDRESS=alerts@your-domain.com
GF_SMTP_FROM_NAME="JSON-RPC Bench Alerts"

# Grafana Server Configuration
GF_SERVER_HTTP_PORT=3000
GF_SERVER_DOMAIN=localhost
GF_SERVER_ROOT_URL=http://localhost:3000/

# Email Configuration (optional)
GF_SMTP_ENABLED=false
GF_SMTP_HOST=
GF_SMTP_USER=
GF_SMTP_PASSWORD=
GF_SMTP_FROM_ADDRESS=
GF_SMTP_FROM_NAME=JSON-RPC Bench Alerts

# Webhook URLs for notifications (optional)
WEBHOOK_CI_URL=
DISCORD_WEBHOOK_URL=
SLACK_WEBHOOK_URL=
GITHUB_WEBHOOK_URL=

# Authentication tokens (optional)
CI_WEBHOOK_TOKEN=
GITHUB_TOKEN=
GITHUB_WEBHOOK_SECRET=

# Email Configuration (optional)
ALERT_EMAIL_ADDRESSES=
# Grafana Database Configuration
GF_DATABASE_TYPE=postgres
GF_DATABASE_HOST=postgres:5432
GF_DATABASE_NAME=grafana
GF_DATABASE_USER=grafana
GF_DATABASE_PASSWORD=grafana
GF_DATABASE_SSL_MODE=disable

# Grafana Alerting Configuration
GF_ALERTING_ENABLED=true
GF_ALERTING_EXECUTE_ALERTS=true
GF_UNIFIED_ALERTING_ENABLED=true
GF_ALERTING_MIN_INTERVAL_SECONDS=10
GF_ALERTING_MAX_ATTEMPTS=3

# Grafana Provisioning
GF_PATHS_PROVISIONING=/etc/grafana/provisioning
GF_PATHS_PLUGINS=/var/lib/grafana/plugins
GF_PATHS_DASHBOARDS=/var/lib/grafana/dashboards
86 changes: 74 additions & 12 deletions .github/workflows/build_docker_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,82 @@ on:
branches: [main]

permissions:
contents: read
packages: write
id-token: write
attestations: write
artifact-metadata: write
contents: read

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build_public_image:
uses: NethermindEth/github-workflows/.github/workflows/docker-build-push-dockerhub.yaml@main
with:
repo_name: "nethermindeth"
image_name: "jsonrpc-bench-runner"
additional_tags: "${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}"
push: "${{ github.event_name != 'pull_request' }}"
dockerfile_path: "runner/Dockerfile"
secrets:
dockerhub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
name: Build and publish Docker image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4

- name: Log in to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha,prefix=sha-,format=short
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{ inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }}

- name: Build image locally for scan
uses: docker/build-push-action@v7
with:
context: .
file: runner/Dockerfile
load: true
tags: local/runner:scan-${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Run Trivy vulnerability scan
uses: aquasecurity/trivy-action@v0.36.0
with:
image-ref: local/runner:scan-${{ github.sha }}
format: table
severity: CRITICAL,HIGH
exit-code: "1"
ignore-unfixed: true

- name: Push image to GHCR
id: push
if: github.event_name != 'pull_request'
uses: docker/build-push-action@v7
with:
context: .
file: runner/Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha

- name: Attest build provenance
if: github.event_name != 'pull_request'
uses: actions/attest-build-provenance@v4
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ playwright-report/
coverage/
*.log
historic/
outputs/

# Debug and temporary files
*.bak
Expand All @@ -45,5 +46,6 @@ bin/
.DS_Store
Thumbs.db

# Agents
.claude/
# Snapshots and data directories
snapshots/
json-bench-data/
Loading