This directory contains a pre-configured Grafana dashboard for monitoring Vixy, the Ethereum node proxy.
The dashboard provides comprehensive monitoring across three main areas:
- Total healthy EL and CL nodes
- EL failover status
- Active WebSocket connections
- Block Height: Chain head and individual node block numbers
- Node Lag: Block lag for each node by tier (primary/backup)
- Health Status: Real-time health status for all EL nodes
- Request Rate: Requests per second to each node
- Request Latency: P50, P95, P99 latency percentiles
- Failover Status: Total failovers and current failover state
- Slot Height: Chain head and individual node slot numbers
- Node Lag: Slot lag for each node
- Health Status: Real-time health status for all CL nodes
- Request Rate: Requests per second to each node
- Request Latency: P50, P95, P99 latency percentiles
- Active Connections & Subscriptions: Real-time count of active connections and subscriptions
- Connection & Subscription Rates: New connections and subscriptions per second
- Message Rate: Upstream and downstream message throughput
- Reconnections: Successful reconnections and failed attempts
- Upstream Node Status: Which EL node is currently connected for WebSocket proxy
- Open Grafana UI
- Navigate to Dashboards → Import
- Upload
vixy-dashboard.jsonor paste its contents - Select your Prometheus datasource
- Click Import
Ensure Prometheus is scraping Vixy's metrics endpoint. Add this to your prometheus.yml:
scrape_configs:
- job_name: 'vixy'
static_configs:
- targets: ['localhost:9090'] # Adjust host:port as neededVixy exposes metrics on the /metrics endpoint (default port 9090, configurable in config.toml).
Check that Vixy is exposing metrics:
curl http://localhost:9090/metricsYou should see metrics prefixed with vixy_.
All metrics are prefixed with vixy_:
vixy_el_requests_total- Counter: Total EL requests (labels: node, tier)vixy_el_request_duration_seconds- Histogram: EL request latency (labels: node, tier)vixy_el_node_block_number- Gauge: Current block number (labels: node, tier)vixy_el_node_lag_blocks- Gauge: Block lag (labels: node, tier)vixy_el_node_healthy- Gauge: Health status 0/1 (labels: node, tier)vixy_el_failover_active- Gauge: Failover active 0/1vixy_el_failovers_total- Counter: Total failovers triggeredvixy_el_chain_head- Gauge: Current chain head blockvixy_el_healthy_nodes- Gauge: Count of healthy nodes
vixy_cl_requests_total- Counter: Total CL requests (labels: node)vixy_cl_request_duration_seconds- Histogram: CL request latency (labels: node)vixy_cl_node_slot- Gauge: Current slot (labels: node)vixy_cl_node_lag_slots- Gauge: Slot lag (labels: node)vixy_cl_node_healthy- Gauge: Health status 0/1 (labels: node)vixy_cl_chain_head- Gauge: Current chain head slotvixy_cl_healthy_nodes- Gauge: Count of healthy nodes
vixy_ws_connections_active- Gauge: Active WebSocket connectionsvixy_ws_connections_total- Counter: Total connections established (lifetime)vixy_ws_messages_total- Counter: Total messages (labels: direction)vixy_ws_reconnections_total- Counter: Successful reconnectionsvixy_ws_reconnection_attempts_total- Counter: Reconnection attempts (labels: status)vixy_ws_subscriptions_active- Gauge: Active subscriptionsvixy_ws_subscriptions_total- Counter: Total subscriptions created (lifetime)vixy_ws_upstream_node- Gauge: Current upstream node 0/1 (labels: node)
Edit panel thresholds to match your requirements:
- Click a panel title → Edit
- Go to Field tab
- Modify Thresholds values
- Save
To add alerts to any panel:
- Click panel title → Edit
- Go to Alert tab
- Create alert rule with desired conditions
- Configure notification channels
- Save
The dashboard auto-refreshes every 10 seconds by default. Adjust this in the dashboard settings (top-right corner).
- Verify Vixy is running and metrics endpoint is accessible
- Check Prometheus is scraping Vixy (Prometheus UI → Status → Targets)
- Verify datasource is configured correctly in Grafana
- Check time range in dashboard (top-right)
Some metrics only appear when:
- EL nodes are configured and running
- CL nodes are configured and running
- WebSocket connections are active
- Failover has been triggered (for failover metrics)
This dashboard is part of the Vixy project and is licensed under the MIT License.