How to Monitor Proxmox with Prometheus and Grafana

February 18, 2025

Monitoring Proxmox

Monitoring Proxmox

Whether you are running in a simple home lab or an Internet facing production environment, monitoring is an important part of ensuring that your systems are working as intended.

When it comes to Proxmox, this can be easily achieved using Prometheus and Grafana, and some integration with a PVE metric exporter.

Note - the commands and details listed below can also be found in this House of Logic github repo.

Environment Setup

The easiest way to configure Grafana, Prometheus and the Proxmox Exporter is to use Docker containers. The instructions for this part of the setup can be found here.

With the Prometheus and Grafana environment configured, you should be able to add the Proxmox PVE exporter to the setup.

Prometheus Proxmox Virtual Environment Exporter

The Prometheus PVE Exporter interfaces with Proxmox and provides metrics in Prometheus’ format.

The exporter is available on Github and can be found here:

https://github.com/prometheus-pve/prometheus-pve-exporter

To use it in Docker, create a configuration directory, eg:

mkdir pve

cd pve

You should now create a pve.yml file for the pve exporter.

nano pve.yml

Enter the user details for the user you will use to authenticate with Proxmox and export metrics:

# for use with https://github.com/prometheus-pve/prometheus-pve-exporter
default:
    user: monitoring@pve # your user
    password: Password123 # your password
    # Optional: set to false to skip SSL/TLS verification
    verify_ssl: false

Note: Unless using signed certificates, set verify_ssl to false.

You can now pull and run the prometheus-pve-exporter container and set this to run as a service (daemon), mapping in the config file you have created and edited.

sudo docker pull prompve/prometheus-pve-exporter
sudo docker run --init --name prometheus-pve-exporter -d -p 0.0.0.0:9221:9221 -v /home/user/pve/pve.yml:/etc/prometheus/pve.yml prompve/prometheus-pve-exporter

You can check if the exporter is running using the following commands.

sudo docker ps

curl localhost:9221

These will confirm if the container is running, and make a call to the exporter to confirm it is responding on the network.

Additionally, you can use a browser to inspect metrics on Promxox by specifying the node IP address / hostname (192.168.2.10 in this example):

http://192.168.2.11:9221/pve?target=192.168.2.10

Prometheus setup

With your PVE Exporter running, you can now configure Prometheus to connect up the exporter.

The steps are similar to those of the exporter - edit the prometheus.yml config file.

cd ..

cd prometheus

nano prometheus.yml

Edit the prometheus.yml file as desired, adding to the scrape configs, eg:

scrape_configs: # only add scrape_configs if it does not already exist - otherwise add jobs to it
  - job_name: 'pve'
    static_configs:
      - targets:
        - 192.168.2.10  # Proxmox VE node.
    metrics_path: /pve
    params:
      module: [default]
      cluster: ['1']
      node: ['1']
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.2.11:9221  # PVE exporter IP address and port number - use docker host IP, not localhost

You now need to restart the prometheus container to refresh the configuration - if you have followed the example setup, this can be done by running the following:

sudo docker restart prometheus

If not, you will have to identify the prometheus container using the following to find all running containers:

sudo docker ps

A minute or two after the restart, the pve-exporter metrics should be visible.

Demonstration

A demonstration of the setup can be found here - note that the video uses a root user the Prometheus Exporter authentication.

Since I made the video, I would now recommend instead using a read only user, as described here., particularly if you are running in any production context.

Prometheus PVE Exporter

House of Logic Github Proxmox Repo - featuring example files