technique:adminsys:monitoring:collect:proxmox_metrics

Proxmox

L’API de Proxmox expose beaucoup de métriques intéressantes. Grâce aux contributions de la communauté, il existe un exporter Prometheus et un dashboard Grafana compatibles qui se basent sur l’API Proxmox.

Lien:

Cette page est un condensé de cet excellent article, qui donne toutes les billes.

Les opérations ci-dessous sont à réaliser sur toutes les machines où Proxmox tourne.

Attention:

Toutes les opérations sont à effectuer en tant que root.

L’idée est de créer un utilisateur au sein d’un groupe qui n’a que des permissions de lecture. En effet, l’exporter n’a besoin que de lire les métriques, cela réduit la surface d’attaque.

Créer un groupe monitoring avec la permission PVEAuditor :

snippet.bash
pveum groupadd monitoring -comment "Groupe utilisé pour exporter les métriques"
pveum aclmod / -group monitoring -role PVEAuditor

On crée ensuite un utilisateur appartenant à ce groupe :

pveum useradd pve_exporter@pve
pveum usermod pve_exporter@pve -group monitoring
pveum passwd pve_exporter@pve

Le mot de passe est à générer dans le vaultwarden, sous le dossier de la machine concernée.

Attention:

L’utilisateur créé est un utilisateur au sens Proxmox, pas Unix. On peut vérifier que la manœuvre a bien fonctionné en se connectant sur le GUI :

Avec cet utilisateur, on ne peut rien faire depuis l’interface graphique, mais on peut vérifier que ça a bien fonctionné.

On va utiliser prometheus-pve-exporter, bien maintenu.

python3 -m pip install prometheus-pve-exporter

On crée un fichier de configuration à l’emplacement /etc/pve_exporter/conf.yml :

snippet.yaml
default:
    user: pve_exporter@pve
    password: <password>
    verify_ssl: false

Le mot de passe est celui généré précédemment.

On crée ensuite un service systemd pour que l’exporter démarre automatiquement à l’allumage de la machine. Dans /etc/systemd/system/pve-exporter.service, ajouter :

[Unit]
Description=Proxmox VE Prometheus Exporter
After=network.target
Wants=network.target

[Service]
Restart=on-failure
ExecStart=pve_exporter /etc/pve_exporter/conf.yml 9221 0.0.0.0

[Install]
WantedBy=multi-user.target

Note:

9221 0.0.0.0 indique d’écouter sur le port 9221 en IPv4.

Note:

Pour écouter en IPv4 et IPv6, on peut créer un service template et le démarrer deux fois : une fois avec 0.0.0.0, et une fois avec :: (équivalent pour IPv6).

Recharger la configuration de systemd, puis activer et lancer l’exporter et vérifier que tout s’est bien passé.

systemctl daemon-reload
systemctl enable --now pve-exporter
systemctl status pve-exporter

● pve-exporter.service - Proxmox VE Prometheus Exporter
   Loaded: loaded (/etc/systemd/system/pve-exporter.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-01-12 23:44:46 CET; 9s ago
 Main PID: 3578 (pve_exporter)
    Tasks: 1 (limit: 4915)
   Memory: 14.0M
   CGroup: /system.slice/pve-exporter.service
           └─3578 /usr/bin/python3 /usr/local/bin/pve_exporter /etc/pve_exporter/conf.yml 9221 ::

Jan 12 23:44:46 alice systemd[1]: Started Proxmox VE Prometheus Exporter.
Jan 12 23:44:46 alice pve_exporter[3578]:  * Running on http://[::]:9221/ (Press CTRL+C to quit)

On répète pour tous les hyperviseurs.

Comme pour les autres métriques, on va restreindre l’accès à l’exporter à la machine de monitoring. Vérifier qu’UFW a bien été configuré.

Important:

Rajouter une règle sur un UFW non configuré bloquera entièrement l’accès au serveur ! Si la commande ufw status (en root) ne renvoie rien, alors UFW n’est pas configuré, il faut absolument le faire avant.

Ajouter la règle suivante :

snippet.bash
ufw allow proto tcp from <IPv4 monitoring> to any port 9221
ufw allow proto tcp from <IPv6 monitoring> to any port 9221

Du côté de vmagent, il faut ajouter une entrée dans le fichier de configuration Prometheus. Pour cela on va ajouter une entrée dans la section scrape_config du fichier :

snippet.yaml
- job_name: "proxmox"
  static_configs:
    - targets:
      - "alice.picasoft.net:9221"
      - "bob.picasoft.net:9221"
      - "caribou.picasoft.net:9221"
  metrics_path: /pve
  params:
    module: [default]

Note:

On peut compléter la liste si de nouvelles machines tournent sous Proxmox.

On redémarre ensuite vmagent sur la machine de monitoring. Depuis Grafana, on peut utiliser ce dashboard.

Attention:

Le dashboard nécessite quelques adaptations (changer name en storage pour le nom des stockages, etc…), on ne détaille pas ici, c’est du détail et ça peut changer.

  • technique/adminsys/monitoring/collect/proxmox_metrics.txt
  • de 127.0.0.1