- You cannot manage what you do not measure.
- This guide walks through a production-grade Prometheus and Grafana stack on a dedicated server, from node_exporter to the alerts that actually matter.
A dedicated server gives you full hardware performance โ and full responsibility for noticing when something is wrong. The de facto open-source answer in 2026 is still the Prometheus stack: node_exporter collects metrics, Prometheus stores and evaluates them, and Grafana turns them into dashboards. The whole stack runs comfortably in under 1 GB of RAM for a small fleet and costs nothing in licenses.
The Architecture in One Paragraph
Each monitored server runs node_exporter, a tiny daemon exposing metrics on port 9100. A central Prometheus instance scrapes every exporter on an interval (15s is typical), stores time series on local disk, and evaluates alerting rules. Alertmanager routes firing alerts to email, Slack or an on-call system. Grafana reads Prometheus and renders dashboards. Ideally the Prometheus host is a separate small machine or VPS so monitoring survives when the monitored server does not.
Installation Essentials
- Install node_exporter from your distribution or as a static binary with a systemd unit.
- Firewall port 9100 so only the Prometheus server can reach it, or scrape over a private VLAN.
- Add the target to
prometheus.ymlunderscrape_configsand reload. - In Grafana, import the community Node Exporter Full dashboard (ID 1860) as a starting point.
The Metrics That Actually Predict Trouble
- Disk fill rate โ alert on predicted time-to-full, not a raw percentage; a 90% full disk growing 0.1% a week is fine, one growing 5% an hour is not.
- I/O saturation โ sustained high iowait or device utilization explains most mysterious slowness.
- Memory pressure and swap activity โ steady swapping on a database server is an emergency in slow motion.
- Network errors and retransmits โ early warning for failing NICs or uplinks.
- SMART and RAID state โ via smartctl exporters, so hardware failures page you before users notice.
Alerting: Fewer, Better Pages
Every alert should be actionable and urgent; everything else belongs on a dashboard. A solid starter set: instance down for 2 minutes, disk full in under 24 hours at current rate, load sustained above core count, RAID degraded, SSL certificate expiring within 14 days. Route warnings to chat and only genuine emergencies to phones โ alert fatigue is how real incidents get ignored.
Retention and Disk Sizing
Prometheus stores roughly 1โ2 bytes per sample after compression. One server scraped every 15 seconds with ~1,000 series consumes only a few hundred megabytes per month, so keeping 90 days on a small NVMe partition is trivial. For multi-year capacity planning data, add Thanos or VictoriaMetrics later โ do not start there.
Frequently Asked Questions
Is the Prometheus stack overkill for one server?
No โ the setup takes under an hour and scales from one machine to hundreds. For a single server you can even run the whole stack locally plus one external uptime check.
What about SaaS monitoring instead?
Hosted agents are fine and faster to start, but per-host pricing adds up across a fleet, and Prometheus keeps metric data under your control โ relevant for compliance-sensitive workloads.
How much overhead does node_exporter add?
Negligible: typically under 30 MB of RAM and a fraction of one percent CPU.
Run your monitoring stack on reliable metal โ compare Linux dedicated servers or get sizing advice from our engineers.