grafana

How to Monitor Proxmox with Grafana and Prometheus

Proxmox’s built-in web interface shows current resource usage, but it doesn’t easily answer questions like “how did CPU load trend over the last month” or “which VM’s memory usage has been slowly creeping up.” Setting up a way to monitor Proxmox with Grafana and Prometheus fills that gap, turning raw metrics into historical dashboards you can actually analyze over time.

Why Add Dedicated Monitoring to Proxmox

The native Proxmox dashboard is great for a quick glance at current status, but lacks long-term trend visualization, custom alerting rules, and the ability to correlate metrics across multiple nodes in a single view — exactly what Prometheus and Grafana are built for.

Architecture Overview

  • Prometheus – a time-series database that periodically scrapes metrics from configured targets and stores them for querying
  • Node Exporter / Proxmox VE Exporter – an agent that exposes system and Proxmox-specific metrics in a format Prometheus can scrape
  • Grafana – the dashboard layer, querying Prometheus and rendering the results as customizable, historical graphs

Installing Prometheus

Prometheus is commonly run as its own dedicated VM or container within your homelab, separate from the Proxmox hosts it monitors:

yaml

version: '3'
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus-data:/prometheus
    ports:
      - '9090:9090'
docker compose up -d

Installing the Proxmox VE Exporter

A dedicated exporter designed specifically for Proxmox exposes metrics that the generic Node Exporter wouldn’t capture, such as per-VM resource usage and Proxmox-specific cluster status. Install it as a container or directly on a monitoring VM, configuring it with API credentials (an API token is recommended over the root account) to query your Proxmox cluster’s status via its own API.

Configuring Prometheus to Scrape Proxmox Metrics

Edit prometheus.yml to add the exporter as a scrape target:

yaml

scrape_configs:
  - job_name: 'proxmox'
    static_configs:
      - targets: ['proxmox-exporter:9221']

Restart Prometheus to apply the new configuration.

Installing Grafana

Add Grafana alongside your existing Prometheus setup:

yaml

  grafana:
    image: grafana/grafana:latest
    ports:
      - '3000:3000'
    volumes:
      - ./grafana-data:/var/lib/grafana

Access Grafana at http://your-server-ip:3000.

Connecting Grafana to Prometheus

  1. In Grafana, go to Connections → Data Sources → Add data source.
  2. Select Prometheus.
  3. Enter your Prometheus server’s URL (e.g., http://prometheus:9090).
  4. Click Save & Test.

Importing a Pre-Built Proxmox Dashboard

Rather than building panels from scratch, the Grafana community maintains ready-made dashboard templates specifically designed for Proxmox VE metrics. Import one via Dashboards → Import, entering the dashboard ID from Grafana’s public dashboard library, and select your Prometheus data source when prompted.

What You Can Track

A properly configured Proxmox monitoring dashboard typically shows:

  • CPU, memory, and disk usage trends per node and per VM over time
  • Cluster-wide resource utilization at a glance
  • Storage pool capacity trends, useful for anticipating when you’ll need to expand storage
  • Network throughput across nodes

Setting Up Alerts

Beyond visualization, configure Grafana alert rules for conditions worth being notified about — for example, triggering an alert if any node’s disk usage crosses 85%, or if a specific VM’s memory usage sustains an unusually high level for an extended period, sending notifications through email, Discord, or another configured channel.

Combining with Existing Monitoring

If you’re already running Netdata (covered in an earlier guide) for general server health or Loki for centralized logging, Prometheus and Grafana specifically for Proxmox-level cluster metrics complement rather than duplicate that coverage — each tool focuses on a different layer of visibility across your homelab.

Final Thoughts

Setting up a system to monitor Proxmox with Grafana and Prometheus transforms your homelab from “checking the dashboard when something feels wrong” into genuine historical visibility and proactive alerting. For anyone running a Proxmox cluster with more than a couple of nodes, this kind of dedicated monitoring quickly becomes indispensable for spotting slow-building problems before they turn into real outages.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *