Chapitre 05

Collecte des métriques : InfluxDB et Grafana

Proxmox VE sait envoyer ses métriques nativement. Il suffit ensuite de compléter ce qu'il n'envoie pas, et surtout d'héberger la chaîne ailleurs que sur le cluster supervisé.

Lecture 10 min  ·  Prérequis : chapitre 04

01Architecture de la chaîne de mesure

La chaîne est courte : Proxmox VE pousse ses métriques toutes les dix secondes vers InfluxDB, Telegraf complète depuis chaque noeud, Grafana lit et alerte.

Vue d'ensemble
  noeuds PVE  --(protocole de ligne InfluxDB, 10 s)-->  InfluxDB 2
  Telegraf    --(Ceph, SMART, corosync, PBS)--------->  InfluxDB 2
                                                            |
                                                            v
                                                    Grafana + alerting
                                                            |
                                          courriel / webhook / astreinte
Règle non négociable

La supervision ne doit pas être hébergée sur le cluster qu'elle surveille. Un conteneur LXC sur un noeud du cluster ne vous préviendra pas de la panne du cluster. Placez InfluxDB et Grafana sur une machine indépendante, idéalement sur un autre site, avec sa propre alimentation et son propre accès réseau.

02Installer InfluxDB 2

Un conteneur Debian avec 2 vCPU, 4 Go de mémoire et un volume dédié convient pour un cluster de taille moyenne.

Installation et initialisation
apt install -y influxdb2
systemctl enable --now influxdb

influx setup \
  --org captainadmin \
  --bucket proxmox \
  --rétention 90d \
  --username admin \
  --force

Créez ensuite deux jetons distincts. Un jeton unique partout est une facilité qui se paie le jour d'une rotation.

Jetons dédiés en écriture et en lecture
# écriture, pour les noeuds Proxmox VE et Telegraf
influx auth create --org captainadmin \
  --write-bucket <id_du_bucket> --description "écriture-pve"

# lecture seule, pour Grafana
influx auth create --org captainadmin \
  --read-bucket <id_du_bucket> --description "lecture grafana"

03Brancher Proxmox VE

Le serveur de métriques se déclare depuis l'interface, sous Centre de données puis Metric Server, ou directement dans /etc/pve/status.cfg. Ce fichier étant dans le système de fichiers du cluster, il se propage automatiquement à tous les noeuds.

/etc/pve/status.cfg
influxdb: supervision
    server influx.exemple.fr
    port 8086
    influxdbproto https
    organization captainadmin
    bucket proxmox
    token <TOKEN_ECRITURE>
    verify-certificate 1
    max-body-size 25000000
    timeout 3
Vérifier que les données partent
systemctl restart pvestatd
journalctl -u pvestatd -n 40 --no-pager

Ce que Proxmox VE envoie, et ce qu'il n'envoie pas

Envoyé nativementAbsent, à compléter
Charge processeur par noeud et par VMÉtat de santé Ceph et groupes de placement
Mémoire utilisée et allouéeLatences d'application et de validation des OSD
Trafic réseau entrant et sortantÉtat et latence des liens corosync
Lecture et écriture disqueDonnées SMART et usure des SSD
Remplissage des stockagesÉtat des tâches PBS et âge des sauvegardes
Durée de fonctionnement, état des VMTempérature, alimentations, ventilateurs

04Compléter avec Telegraf

Telegraf s'installe sur chaque noeud et comble exactement ces manques. Les greffons ceph et smart couvrent l'essentiel, un greffon d'exécution récupère le reste au format JSON.

/etc/telegraf/telegraf.conf (extrait)
[agent]
  interval = "30s"
  hostname = "pve-01"

[[outputs.influxdb_v2]]
  urls = ["https://influx.exemple.fr:8086"]
  token = "<TOKEN_ECRITURE>"
  organization = "captainadmin"
  bucket = "proxmox"

[[inputs.ceph]]
  interval = "1m"
  socket_dir = "/var/run/ceph"
  gather_admin_socket_stats = true
  gather_cluster_stats = true

[[inputs.smart]]
  interval = "10m"
  use_sudo = true
  attributes = true

[[inputs.exec]]
  interval = "1m"
  commands = ["/usr/local/bin/corosync-metrics.sh"]
  data_format = "influx"

[[inputs.systemd_units]]
  interval = "1m"
Sur les latences Ceph

Les latences d'application et de validation par OSD viennent de ceph osd perf. Ce sont les indicateurs les plus prédictifs d'un disque en fin de vie : ils se dégradent progressivement plusieurs semaines avant la défaillance. Ils méritent une place sur le tableau de bord d'exploitation.

05Grafana et trois niveaux de tableaux de bord

Installez Grafana sur la même machine qu'InfluxDB, déclarez la source de données en Flux avec le jeton de lecture, puis structurez les tableaux de bord en trois niveaux. C'est la partie que l'on rate le plus souvent : accumuler cent graphiques sur un seul écran revient à ne rien surveiller du tout.

  • Niveau direction, un seul écran. Sept à dix indicateurs, en vert, orange ou rouge : santé Ceph, quorum, marge N+1, âge de la dernière sauvegarde réussie, remplissage, alertes actives. Lisible en dix secondes par quelqu'un qui n'est pas administrateur.
  • Niveau exploitation. Par noeud et par pool : charge, mémoire, latences OSD, entrées-sorties, réseau, état des tâches de sauvegarde. C'est l'écran de la revue hebdomadaire.
  • Niveau diagnostic. Le détail par OSD, par disque, par machine virtuelle. On ne l'ouvre que lorsqu'un incident est déjà identifié.

Les tableaux de bord publics de la communauté pour Proxmox VE et pour Ceph constituent un bon point de départ pour les niveaux exploitation et diagnostic. Le niveau direction, en revanche, se construit sur mesure : il dépend des engagements de service de la plateforme.

06Rétention et volumétrie

Un cluster de cinq noeuds avec une centaine de machines virtuelles produit de l'ordre de quelques gigaoctets par mois en pas de dix secondes. Deux compartiments valent mieux qu'un.

  • proxmox, pas fin, rétention 90 jours : pour le diagnostic et l'alerting.
  • proxmox-long, agrégé à l'heure, rétention 3 ans : pour les tendances de capacité et les rapports annuels.
Tâche d'agrégation Flux, exécutée chaque heure
option task = {name: "downsample-1h", every: 1h}

from(bucket: "proxmox")
  |> range(start: -2h)
  |> filter(fn: (r) => r._measurement == "system")
  |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
  |> to(bucket: "proxmox-long", org: "captainadmin")
Pourquoi garder trois ans

Les données agrégées ne servent pas au diagnostic, elles servent aux arbitrages budgétaires. Pouvoir montrer une courbe de croissance sur trois ans transforme une demande d'investissement en constat chiffre.

Un cluster a batir, a auditer ou a reprendre en main

Nous concevons, deployons et exploitons des clusters Proxmox VE et Ceph en production pour des PME, des structures reglementees et des collectivites. Nous formons aussi vos equipes, notamment dans le cadre des migrations depuis VMware.