Real-time resource monitoring for Elastos supernodes. Tracks CPU, RAM, disk, I/O, and network across all 10 chain services with historical data retention and exportable reports.
Monitored services: ELA, ESC, ESC-Oracle, EID, EID-Oracle, ECO, ECO-Oracle, PG, PG-Oracle, Arbiter
cd /opt && sudo git clone https://github.com/4HM3DMD/elastos-node-monitor.git && cd elastos-node-monitor && bash install.shThe installer will:
- Install Node.js 20.x if not present
- Install dependencies (
express,dotenv) - Auto-detect server specs and Elastos node directory
- Generate an auth token and configure
.env - Create and start a
systemdservice - Print the dashboard URL with your access token
Bookmark the printed URL — it contains your auth token.
- CPU / RAM / Disk gauges — real-time utilization with per-core breakdown
- Resource attribution — stacked bar showing Elastos chains vs. other processes vs. idle
- Load average, swap, cached memory, and disk growth rate
- CPU usage as percentage of total system capacity
- RAM and disk consumption per chain (GB)
- Thread count, process uptime, and I/O throughput (read/write MB/s)
- CPU, RAM, disk, and network over 1 hour / 24 hours / 7 days / 30 days
- Data collected every 3 seconds, retained for 30 days
- Observed peak and average utilization
- Right-sized recommendation (2x CPU headroom, 1.5x RAM, 2-year disk projection)
- Optional cost savings estimate
- Download JSON or CSV reports for any time range
- Includes server specs, summary statistics, per-chain detail, and full time series
- Use across multiple servers for side-by-side comparison
Auto-generated by the installer in .env:
| Variable | Description | Default |
|---|---|---|
PORT |
Dashboard port | 9999 |
AUTH_TOKEN |
Access token | Auto-generated |
ELASTOS_NODE_DIR |
Elastos node directory | Auto-detected |
DISK_MOUNT |
Disk partition to monitor | / or /data |
CPU_CORES |
Override CPU core count | Auto-detected |
RAM_GB |
Override RAM size | Auto-detected |
DISK_GB |
Override disk size | Auto-detected |
sudo systemctl status elastos-monitor # Status
sudo journalctl -u elastos-monitor -f # Live logs
sudo systemctl restart elastos-monitor # Restart
sudo systemctl stop elastos-monitor # StopUpdate:
cd /opt/elastos-node-monitor && git pull && sudo systemctl restart elastos-monitorUninstall:
sudo systemctl disable --now elastos-monitor
sudo rm /etc/systemd/system/elastos-monitor.service
rm -rf /opt/elastos-node-monitor- Metrics collection: Reads
/proc/stat,/proc/meminfo,/proc/net/dev,/proc/$PID/stat,/proc/$PID/status,/proc/$PID/iodirectly. Per-chain disk viadu, system disk viadf. - Process discovery: Matches Elastos binaries by
commfield and oracle scripts byargsfrompsoutput. Aggregates child process CPU and RAM. - CPU tracking: Real-time deltas from
/proc/$PID/stat(utime + stime), normalized to total system capacity. - Storage: Append-only JSONL files (
data/YYYY-MM-DD.jsonl), one line per snapshot. 30-day retention with automatic pruning. - Frontend: Single HTML file, Chart.js, Tailwind CSS (CDN). No build step.
- Dependencies:
express,dotenv. No native modules. - Footprint: ~15 MB RAM, negligible CPU.
Port 9999 must be accessible from your browser. If blocked:
sudo ufw allow 9999/tcpAlternatively, use an SSH tunnel (no port exposure required):
ssh -L 9999:localhost:9999 user@YOUR_SERVER_IP
# Access at http://localhost:9999?token=YOUR_TOKENMIT