> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitor a node

> Verify your Arc node is syncing, view logs, and confirm Prometheus metrics endpoints are reachable.

Verify that your Arc node is syncing, diagnose issues from logs, and confirm
that the Prometheus metrics endpoints are reachable on the host.

For a full Prometheus and Grafana setup on the same host, see
[Set up Prometheus and Grafana for an Arc node](/arc/tutorials/set-up-node-monitoring).

## Prerequisites

* You have a running Arc node that meets the
  [node requirements](/arc/references/node-requirements), set up either from the
  [Run an Arc node](/arc/tutorials/run-an-arc-node) tutorial or
  [deployed as a systemd service](/arc/tutorials/deploy-node-as-service)
* You have installed
  [Foundry](https://book.getfoundry.sh/getting-started/installation), which
  provides the `cast` command

## Step 1. Check service status

If your node runs as systemd services, check the status of both processes:

```shell theme={null}
sudo systemctl status arc-execution
sudo systemctl status arc-consensus
```

Both services display `Active: active (running)` in their output. If either
service has failed, review the logs in Step 3.

## Step 2. Check block height

Query the local RPC endpoint to confirm the node is syncing:

```shell theme={null}
cast block-number --rpc-url http://localhost:8545
```

Run this command several times over a few seconds. The block number increases
steadily, confirming the node is syncing:

```text theme={null}
# First run:
1234567

# Second run (a few seconds later):
1234572
```

To view the latest block details:

```shell theme={null}
cast block --rpc-url http://localhost:8545
```

Example output:

```text theme={null}
baseFeePerGas        7
difficulty           0
gasLimit             30000000
gasUsed              21000
hash                 0xabc123...
number               1234572
timestamp            1711234567
transactions:        [0xdef456...]
```

## Step 3. View the logs

Stream real-time logs for each service:

```shell theme={null}
# Execution Layer logs
sudo journalctl -u arc-execution -f

# Consensus Layer logs
sudo journalctl -u arc-consensus -f
```

If your node is not running as a systemd service, check the terminal output
where each process is running.

**What to look for:**

* **Healthy:** Log entries showing new blocks being imported, increasing block
  heights
* **Unhealthy:** Repeated connection errors to relay endpoints, IPC socket
  failures, or no new blocks for an extended period

## Step 4. Verify the metrics endpoints

Both layers expose Prometheus-compatible metrics endpoints on the host. Note
that the Execution Layer serves metrics at the root path, not at `/metrics`:

| Endpoint                         | Description             |
| :------------------------------- | :---------------------- |
| `http://localhost:9001/`         | Execution Layer metrics |
| `http://localhost:29000/metrics` | Consensus Layer metrics |

The metrics endpoints are only available if the `--metrics` flag was passed when
starting the node. The
[Deploy a node as a service](/arc/tutorials/deploy-node-as-service) guide
includes this flag in both unit files.

Confirm the endpoints are reachable:

```shell theme={null}
curl -s http://localhost:9001/ | head
curl -s http://localhost:29000/metrics | head
```

Both commands return Prometheus-formatted text metrics. Example output:

```text theme={null}
# HELP reth_sync_stage_checkpoint Stage checkpoint block number
# TYPE reth_sync_stage_checkpoint gauge
reth_sync_stage_checkpoint{stage="Headers"} 1234567
```

If either returns an empty response or connection error, confirm the `--metrics`
flag is set in your startup command. To scrape these endpoints with a local
Prometheus + Grafana stack and load the pre-built Arc dashboards, see
[Set up Prometheus and Grafana for an Arc node](/arc/tutorials/set-up-node-monitoring).
