Back to all articles
VPS & Infrastructure2026-05-12

Server Monitoring with Prometheus and Grafana on a VPS

Learn how to monitor disk, memory, CPU usage, and network connections on your servers using Prometheus and dashboards in Grafana.

Managing servers without health metrics is like driving in the dark. Without monitoring CPU, disk, and memory usage, you will only discover infrastructure problems when your services are already down.

Below, we detail how to set up an observability solution using Prometheus and Grafana running on a VPS server. The Ubuntu install commands are in Grafana on a VPS.

1. What are Prometheus and Node Exporter?

Prometheus is a time-series database focused on metrics monitoring. To collect metrics from the server's operating system (such as RAM usage, CPU, and free disk space), we use a lightweight agent called Node Exporter.

The install with systemd, a service user, and the firewall is in Grafana on a VPS, pinned to Node Exporter 1.8.2. The agent listens on port 9100. Prometheus scrapes that port and keeps the history.

2. Configuring Grafana for Data Visualization

Grafana is the ideal tool to build graphical dashboards from the consolidated information in Prometheus.

The Configuration Workflow:

  • Access the Grafana panel (default port 3000).
  • Add Prometheus as your Data Source.
  • Import the official dashboard for Node Exporter (ID: 1860).

This template will visually display CPU temperature, disk read/write rates, RAM consumption, and active network traffic volume in real time.

3. Queries worth an alert

In Grafana, open Explore with Prometheus selected. These three queries show CPU, free memory, and free disk on the root filesystem:

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes

node_filesystem_avail_bytes{mountpoint="/",fstype!~"tmpfs|overlay"}
  / node_filesystem_size_bytes{mountpoint="/",fstype!~"tmpfs|overlay"}

The first returns CPU percent. The other two return a fraction from 0 to 1. Disk under 0.15 is the alert that keeps the database from stopping on a full volume.

Prometheus rule, in /etc/prometheus/rules/disk.yml:

groups:
  - name: disk
    rules:
      - alert: RootDiskLow
        expr: |
          node_filesystem_avail_bytes{mountpoint="/",fstype!~"tmpfs|overlay"}
          / node_filesystem_size_bytes{mountpoint="/",fstype!~"tmpfs|overlay"} < 0.15
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "Less than 15% free on {{ $labels.instance }}"

Reload without dropping the scrape:

curl -sS -X POST http://127.0.0.1:9090/-/reload

--web.enable-lifecycle has to be on the Prometheus service, as in the install guide. An empty body with HTTP 200 means the reload was accepted.

Conclusion

Having a Prometheus and Grafana dashboard configured is the first step toward achieving professional systems observability. With alerts configured from these metrics, you can predict hardware failures and act preventatively before any application suffers from downtime.

Common questions

What is Grafana on a VPS?

Grafana on a VPS is a dashboard that reads metrics Prometheus collects on that server: CPU, memory, disk, and network.

How do I monitor a VPS with Prometheus and Grafana?

Install Node Exporter on the VPS, point Prometheus at its metrics port, and add Prometheus as a Grafana data source. The steps above follow that order.

Managed KVM VPS

ExpertCore provisions and runs the VPS: isolated KVM, backups, and engineering support.

See VPS plans