Run a Node
Monitoring & Logs
Keeping a validator healthy · Estimated read time: 5 minutes
Updated 2026-09-09: consensus wording aligned to Aura block production plus GRANDPA finality.
TL;DR
Every Asentum node exposes a health JSON endpoint, Prometheus metrics, and standard journalctl logs. Downtime is the #1 avoidable slashing risk (see Slashing Risks) - watch the right handful of signals and you'll catch problems before the chain does.
Tailing logs
Nodes run under systemd. To tail the log live:
From the desktop app, use Settings → View logs. From the VPS installer, use asentum-validator logs.
Logs are structured JSON by default. For human-readable output pipe through | jq.
Health endpoint
Every node serves GET /health returning a JSON status:
{
"status": "ok",
"role": "validator",
"blockHeight": 24189,
"peers": 12,
"synced": true,
"validatorStatus": "active"
}Response is HTTP 200 if healthy, HTTP 503 if degraded (out of sync, no peers, or tombstoned).
Prometheus metrics
GET /metrics returns Prometheus-format metrics:
asentum_block_heightasentum_peers_countasentum_missed_blocks_totalasentum_block_time_seconds(histogram)asentum_validator_is_active(0 or 1)asentum_validator_stake_wei
Point Prometheus at /metrics and pipe to Grafana - a reference dashboard is in the repo.
What to watch
- Sync lag. If
asentum_block_heightfalls behind the chain head by more than a few blocks, you're missing your proposer slots. Likely causes: network, disk I/O, CPU starvation. - Peers. Below ~5 peers you start missing vote gossip and risk falling out of sync. Check your
ASENTUM_PEERSenv var and confirm each peer's HTTP port is reachable. - Missed blocks. A non-zero rate is an early warning. It means your node failed to produce its assigned Aura slot or sign the GRANDPA finality vote on its turn. Sustained missing triggers downtime slashing.
- Validator status.
is_activedropping to 0 without an unbond is an emergency - either tombstoned or dropped from the committee.
Alerting
Recommended Prometheus alert rules:
- alert: AsentumBehind
expr: asentum_block_height{} < max(asentum_block_height) - 5
for: 2m
- alert: AsentumPeerLow
expr: asentum_peers_count < 4
for: 5m
- alert: AsentumMissedBlocks
expr: rate(asentum_missed_blocks_total[5m]) > 0
for: 10mWire these into Pagerduty, Discord, or whatever your team uses. You want to know within minutes, not days.
Read next