Skip to main content
Arc is currently in its testnet phase. During this period, the network may experience instability or unplanned downtime. Throughout this page, all references to Arc refer specifically to the Arc Testnet.
Deploy Prometheus and Grafana in Docker on the same host as your Arc node, scrape metrics from the Execution Layer (EL) and Consensus Layer (CL), and load the pre-built Arc dashboards. The stack binds to 127.0.0.1 only and is reached over SSH port forwarding from a remote operator workstation.

Prerequisites

Step 1: Verify the metrics endpoints

Confirm both metrics endpoints are reachable on the host before deploying the stack. The Execution Layer serves metrics at the root path, not at /metrics:
Both commands return Prometheus-formatted text. If either fails, fix the node startup or --metrics flag before continuing. See Monitor a node for troubleshooting.

Step 2: Create the monitoring directory

This guide stores all monitoring files under $ARC_HOME/monitoring. Create the directory layout:

Step 3: Copy the pre-built Arc dashboards

The arc-node repository ships ready-to-use Grafana dashboards. From the arc-node repository root, copy them into the monitoring directory:

Step 4: Configure Prometheus

Write the following file to $ARC_MONITORING/prometheus.yml. The EL job scrapes the root path; the CL job scrapes /metrics:

Step 5: Configure the Grafana datasource

Write the following file to $ARC_MONITORING/grafana-provisioning/datasources/prometheus.yml:

Step 6: Configure dashboard provisioning

Write the following file to $ARC_MONITORING/grafana-provisioning/dashboards/default.yml:

Step 7: Create the Docker Compose file

Write the following file to $ARC_MONITORING/compose.yaml:
The Arc metrics endpoints in this guide bind to 127.0.0.1 only. network_mode: host is the simplest way for Prometheus to scrape them without changing the Arc node configuration or exposing metrics publicly.

Step 8: Start the stack

Confirm both containers are running:
Check that Grafana and Prometheus are healthy:

Step 9: Access the dashboards

The stack binds Grafana and Prometheus to 127.0.0.1 only. They are not exposed to the public internet. If you are operating on the same machine, open:
  • http://127.0.0.1:3000 for Grafana
  • http://127.0.0.1:9090 for Prometheus
If you are connecting from a remote workstation, use SSH port forwarding:
Then open on your local machine:
  • http://localhost:3000
  • http://localhost:9090
Grafana default credentials from the Compose file above are username admin and password admin. Change them before exposing Grafana through any reverse proxy or shared access setup. After Prometheus scrapes both endpoints and Grafana loads the provisioned dashboards, you see metrics for execution layer activity, consensus layer activity, block height, validator telemetry, and connected peers. Newly started Prometheus instances need a short time to collect enough samples; if some panels are empty immediately after startup, wait a minute and refresh.

Troubleshooting

Browser shows ERR_CONNECTION_REFUSED

If you are connecting to a remote server, confirm you are opening http://localhost:3000 and http://localhost:9090 on your local machine, not http://YOUR_SERVER_IP:3000. Also confirm the SSH tunnel is still running.

Prometheus restarts with a permissions error

If Prometheus logs include an error about queries.active or write permission under /prometheus, fix ownership of the local data directory:

Grafana is healthy but dashboards show no data

Confirm Prometheus targets are up:
Re-check the Arc metrics endpoints:
If Prometheus reaches the targets but some panels remain empty, wait for more samples to accumulate and refresh.

Check Arc node health directly

You can verify the Arc node independently of Grafana: