Sui Node Monitoring
These instructions are for advanced users. If you just need a local development environment, you should instead follow the instructions in Create a Local Sui Network to create a local full node, validators, and faucet.
The examples below scrape localhost:9184/metrics, but the default full node template binds metrics to 0.0.0.0:9184. Restrict metrics-address with a firewall or bind it to a private interface in production.
You can view the metrics in the metrics UI, or use a tool like curl to get the metrics in a format that is easy to parse.
$ curl -s http://localhost:9184/metrics | grep -E 'sui_validator|sui_fullnode'
Key metrics
The following metrics are the most important for monitoring node health:
| Metric | Type | What it tells you |
|---|---|---|
highest_known_checkpoint | Gauge | Highest checkpoint the node knows about from the network |
highest_synced_checkpoint | Gauge | Highest checkpoint fully synced (contents and effects) |
last_executed_checkpoint | Gauge | Last checkpoint the node executed |
last_executed_checkpoint_timestamp_ms | Gauge | Timestamp of the last executed checkpoint |
current_epoch | Gauge | Current epoch ID |
uptime | Counter | Node uptime in seconds (includes version and chain_identifier labels) |
total_transaction_certificates | Counter | Total transaction certificates handled |
Sync health check: Compare highest_known_checkpoint with highest_synced_checkpoint. If the gap grows, the node is falling behind. Compare your node's highest_synced_checkpoint against a trusted public endpoint to measure absolute lag:
# Check your node's sync progress
$ curl -s http://localhost:9184/metrics | grep -E 'highest_known_checkpoint|highest_synced_checkpoint|last_executed_checkpoint'
Production monitoring
For production monitoring, use Prometheus to scrape metrics and Grafana to visualize them.
Add a scrape target for your node in your Prometheus configuration:
scrape_configs:
- job_name: 'sui-fullnode'
static_configs:
- targets: ['localhost:9184']
scrape_interval: 15s
Suggested alerts
Set up alerts for the following conditions:
- Sync lag:
highest_known_checkpoint - highest_synced_checkpoint > 100sustained for 5 minutes indicates the node is falling behind. - Node down:
up{job="sui-fullnode"} == 0sustained for 2 minutes indicates the node is unreachable. - Execution lag:
last_executed_checkpoint_timestamp_ms > 0 and time() - last_executed_checkpoint_timestamp_ms / 1000 > 120sustained for 2 minutes indicates that the node is executing checkpoints more than 2 minutes behind chain time. This alert also fires while a healthy node catches up after an outage or snapshot restore. The> 0guard avoids false alerts during startup, when the timestamp has not yet been populated. To detect a stalled executor separately, alert whenlast_executed_checkpointdoes not advance over a suitable interval.