Asentum

Run a Node

Monitoring & Logs

Keeping a validator healthy · Estimated read time: 5 minutes

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:

journalctl -fu asentum-validator

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_height
  • asentum_peers_count
  • asentum_missed_blocks_total
  • asentum_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_height falls 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_PEERS env 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 pre-vote or pre-commit on its turn. Sustained missing triggers downtime slashing.
  • Validator status. is_active dropping 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: 10m

Wire these into Pagerduty, Discord, or whatever your team uses. You want to know within minutes, not days.

Read next