{ "meta": { "title": "API Proxmox Monitor — Référence d’intégration | ProxMenux", "description": "Points d’accès HTTP de ProxMenux Monitor pour Home Assistant, Homepage, Grafana, Prometheus, n8n et tableaux de bord personnalisés. Consulter l’état et lancer les opérations documentées : contrôle des VM, sauvegardes, notifications et acquittement des alertes.", "ogTitle": "API Proxmox Monitor — Référence d’intégration", "ogDescription": "Points d’accès ProxMenux Monitor pour Home Assistant, Homepage, Grafana, Prometheus, n8n et tableaux de bord personnalisés.", "twitterTitle": "API Proxmox Monitor | ProxMenux", "twitterDescription": "Points d’accès pour Home Assistant, Homepage, Grafana, Prometheus, n8n et tableaux de bord personnalisés." }, "header": { "title": "Référence de l’API", "description": "Points d’accès HTTP pour consulter l’état et lancer des actions documentées : capteurs Home Assistant, cartes Homepage, tableaux Grafana, collecte Prometheus, flux n8n et scripts personnalisés. Avec catégories, métriques exportées et exemples curl.", "section": "ProxMenux Monitor" }, "intro": { "title": "À quoi sert cette page", "body": "Cette page réunit les points d’accès des intégrations : lecture des données, lancement de sauvegardes, notifications personnalisées et acquittement d’alertes. L’API utilise le processus Flask du tableau de bord sur TCP 8008. L’adresse d’écoute et TLS sont décrits dans Accès et authentification." }, "headerEndpoint": "Point d’accès", "headerMethod": "Méthode", "headerUse": "Utilisation", "auth": { "heading": "Authentification", "intro": "Lorsque l’authentification est active, les points d’accès protégés attendent un jeton JWT Bearer dans l’en-tête :", "tokensIntro": "Deux façons d'obtenir le jeton :", "items": [ "Jetons API, recommandés pour les intégrations. Valables 365 jours, créés dans Sécurité → Jetons API. Ils sont nommés et révocables individuellement. Utilisez read_only pour les données, full_admin uniquement pour les actions administratives nécessaires.", "Connexion, JWT de 24 heures. POST /api/auth/login avec identifiant, mot de passe et TOTP si la 2FA l’exige. Le JWT expire après 24 heures ; les scripts doivent alors s’authentifier à nouveau." ], "flowLink": "Connexion, mots de passe, 2FA, journal d’audit et TLS sont décrits dans Accès et authentification.", "rows": [ { "endpoint": "/api/auth/login", "method": "POST", "use": "Champs du corps (schéma) : '{'\"username\",\"password\",\"totp_token?\"'}'. Renvoie un JWT de 24 heures." }, { "endpoint": "/api/auth/api-tokens", "method": "GET", "use": "Liste des jetons API (métadonnées seulement — noms, préfixes, dates; jamais le vrai secret)." }, { "endpoint": "/api/auth/generate-api-token", "method": "POST", "use": "Crée un jeton API de 365 jours avec une session authentifiée. Champs : password, token_name?, totp_token?, scope?. Mot de passe et TOTP requis sont vérifiés à nouveau. scope vaut read_only par défaut ; full_admin doit être choisi explicitement. Le secret est renvoyé une seule fois." }, { "endpoint": "/api/auth/api-tokens/", "method": "DELETE", "use": "Révoquer un jeton API par son identifiant." } ] }, "conventions": { "heading": "Conventions", "items": [ "La plupart utilisent JSON. Certains téléchargements renvoient du texte brut ; /api/prometheus utilise le format texte Prometheus 0.0.4, plutôt qu’OpenMetrics. Vérifiez le type de réponse de chaque route.", "De nombreuses écritures renvoient '{'\"success\": true, ...'}'. Les erreurs varient ; un format courant est '{'\"success\": false, \"error\": \"'<'reason'>'\"'}'. Vérifiez le statut HTTP et les champs : certains défis d’authentification utilisent HTTP 200 avec success false.", "Les paramètres dépendent du point d’accès. Utilisez limit, offset, since et les filtres de catégorie uniquement si la route les accepte.", "Les formats temporels varient : horodatages Unix, chaînes ISO-8601 et dates systemd. Ne supposez ni une unité commune ni un fuseau explicite pour tous les champs." ] }, "system": { "heading": "Système & matériel", "rows": [ { "endpoint": "/api/system", "method": "GET", "use": "Valeurs actuelles de CPU, mémoire, swap, durée de fonctionnement et charge." }, { "endpoint": "/api/info", "method": "GET", "use": "Informations statiques de l’hôte : nom, noyau, version PVE, modèle CPU et distribution." }, { "endpoint": "/api/system-info", "method": "GET", "use": "Données système étendues de l’en-tête : métriques générales et heure de démarrage." }, { "endpoint": "/api/hardware", "method": "GET", "use": "Inventaire matériel détaillé : périphériques PCI, GPU et capteurs." }, { "endpoint": "/api/hardware/live", "method": "GET", "use": "Valeurs actuelles des capteurs à variation rapide." }, { "endpoint": "/api/temperature/history", "method": "GET", "use": "Séries temporelles des températures du CPU et de son boîtier." }, { "endpoint": "/api/gpu//realtime", "method": "GET", "use": "Métriques actuelles des GPU NVIDIA, Intel et AMD par emplacement PCI." } ] }, "actions": { "heading": "Actions du système", "intro": "Ces actions asynchrones utilisent des unités systemd temporaires. Avec authentification active, leurs écritures exigent full_admin ; read_only peut consulter .../status. Un lancement accepté renvoie HTTP 202 et l’état ; consultez .../status pour la progression. Le contrôle des invités et les sauvegardes ont d’autres réponses, décrites plus bas.", "shapeTitle": "Forme de réponse commune", "shapeIntro": "Les actions système asynchrones partagent l’objet d’état JSON ci-dessous. Le contrôle des invités et les sauvegardes ont d’autres formats :", "shapeCode": "{\n \"unit\": \"proxmenux-action-pve-update.service\",\n \"state\": \"idle | running | success | failed | cancelled\",\n \"started_at\": \"Sat 2026-08-01 11:01:32 CEST\",\n \"finished_at\": null,\n \"exit_code\": null,\n \"result\": null\n}", "concurrencyTitle": "Concurrence et annulation", "concurrencyBody": "Relancer la même action déjà active renvoie HTTP 409. L’annulation existe seulement avec une route DELETE documentée, comme pour la mise à jour PVE. L’état devient cancelled avec dates conservées. Les états finaux sont en mémoire du processus et peuvent disparaître au redémarrage du moniteur.", "rows": [ { "endpoint": "/api/system/power/reboot", "method": "POST", "use": "Lance le redémarrage de l’hôte Proxmox. La connexion HTTP peut se fermer quand systemd commence l’arrêt." }, { "endpoint": "/api/system/power/reboot/status", "method": "GET", "use": "État du redémarrage actuel ou précédent." }, { "endpoint": "/api/system/power/shutdown", "method": "POST", "use": "Éteint l’hôte Proxmox, par exemple en réponse au signal d’arrêt d’un onduleur." }, { "endpoint": "/api/system/power/shutdown/status", "method": "GET", "use": "État de l’arrêt actuel ou précédent." }, { "endpoint": "/api/system/pve-update/run", "method": "POST", "use": "Lance la mise à jour PVE utilisée par Mettre à jour maintenant du Health Monitor et le menu shell ; délègue à update-pve-safe.sh." }, { "endpoint": "/api/system/pve-update/status", "method": "GET", "use": "État de la mise à jour PVE actuelle ou précédente." }, { "endpoint": "/api/system/pve-update", "method": "DELETE", "use": "Annule une mise à jour PVE en cours par SIGTERM." }, { "endpoint": "/api/proxmenux/self-update/run", "method": "POST", "use": "Met à jour ProxMenux avec l’installateur du canal stable ou bêta configuré. Une unité systemd distincte permet au travail de survivre au redémarrage de proxmenux-monitor lancé par l’installateur." }, { "endpoint": "/api/proxmenux/self-update/status", "method": "GET", "use": "État de la mise à jour ProxMenux actuelle ou précédente." }, { "endpoint": "/api/vms//control", "method": "POST", "use": "Envoie une commande de VM ou LXC. Le champ action accepte start, stop, shutdown ou reboot. Une réponse réussie renvoie une tâche PVE confirmée, sans garantir sa fin. Consultez le point d’accès control-task de l’invité pour le résultat." }, { "endpoint": "/api/vms//backup", "method": "POST", "use": "Crée une sauvegarde vzdump d’une VM ou d’un LXC. Champs du corps, tous facultatifs sauf si les valeurs par défaut ne correspondent pas à l’organisation du stockage : storage (un stockage PVE), mode (snapshot, suspend ou stop), compress (zstd, lzo, gzip ou none), protected (true ou false), notes et pbs_change_detection (default, legacy ou data). Renvoie l’UPID de la tâche PVE." }, { "endpoint": "/api/vms//backups", "method": "GET", "use": "Liste les sauvegardes précédentes d’une VM ou d’un LXC sur les stockages accessibles." } ], "syncVsAsyncTitle": "Deux types d’actions", "syncVsAsyncBody": "Alimentation et mises à jour de l’hôte utilisent des unités systemd temporaires avec .../status. Seule la mise à jour PVE possède ici une route DELETE d’annulation. Le contrôle VM/LXC renvoie une tâche à suivre ; la sauvegarde un UPID de travail en arrière-plan. Acceptation ne signifie pas achèvement. Authentification et droits dépendent de la route.", "curlTitle": "Exemple curl", "curlBody": "Lance une mise à jour PVE et suit sa progression jusqu’à la fin, comme une automatisation Home Assistant ou un playbook Ansible.", "curlCode": "TOKEN=\n\ncurl -sSf -X POST \\\n -H \"Authorization: Bearer $TOKEN\" \\\n https://:8008/api/system/pve-update/run\n\nwhile true; do\n state=$(curl -sSf -H \"Authorization: Bearer $TOKEN\" \\\n https://:8008/api/system/pve-update/status | jq -r .state)\n [ \"$state\" != \"running\" ] && break\n sleep 30\ndone\necho \"final state: $state\"", "haTitle": "Exemple pour Home Assistant", "haBody": "Un capteur rest consulte l’état et rest_command lance la mise à jour. Associez-les à un bouton du tableau de bord et aux automatisations voulues :", "haCode": "# configuration.yaml\nsensor:\n - platform: rest\n resource: https://pve.local:8008/api/system/pve-update/status\n name: pve_update_state\n value_template: \"{{ value_json.state }}\"\n scan_interval: 60\n headers:\n Authorization: \"Bearer !secret proxmenux_token\"\n\nrest_command:\n pve_update:\n url: https://pve.local:8008/api/system/pve-update/run\n method: POST\n headers:\n Authorization: \"Bearer !secret proxmenux_token\"\n\n # Start VM 100 (works for LXC too — same endpoint)\n vm_100_start:\n url: https://pve.local:8008/api/vms/100/control\n method: POST\n content_type: 'application/json'\n payload: '{\"action\": \"start\"}'\n headers:\n Authorization: \"Bearer !secret proxmenux_token\"\n\n # Backup VM 100 to the 'pbs-main' storage\n vm_100_backup:\n url: https://pve.local:8008/api/vms/100/backup\n method: POST\n content_type: 'application/json'\n payload: '{\"storage\": \"pbs-main\", \"mode\": \"snapshot\", \"compress\": \"zstd\"}'\n headers:\n Authorization: \"Bearer !secret proxmenux_token\"" }, "health": { "heading": "Moniteur de santé", "rows": [ { "endpoint": "/api/health", "method": "GET", "use": "Sonde légère renvoyant JSON avec status, timestamp et version. Adaptée aux contrôles par mot-clé d’Uptime Kuma ; avec authentification active, le client doit envoyer l’en-tête Bearer." }, { "endpoint": "/api/health/status", "method": "GET", "use": "État global : un niveau de gravité et un résumé." }, { "endpoint": "/api/health/details", "method": "GET", "use": "Les dix catégories avec état et données structurées de chaque contrôle." }, { "endpoint": "/api/health/full", "method": "GET", "use": "Données complètes : catégories, erreurs actives, alertes rejetées et réglages de suppression. Utilise les résultats en arrière-plan de moins de six minutes ; sinon, ou en cas d’actualisation forcée, lance un nouveau contrôle." }, { "endpoint": "/api/health/active-errors", "method": "GET", "use": "Liste active, filtrée par ?category=<name>." }, { "endpoint": "/api/health/dismissed", "method": "GET", "use": "Alertes rejetées avec les heures de suppression restantes." }, { "endpoint": "/api/health/settings", "method": "GET", "use": "Durée de suppression configurée pour chaque catégorie." }, { "endpoint": "/api/health/remote-storages", "method": "GET", "use": "Inventaire des stockages à distance définis par Proxmox, avec état en ligne." }, { "endpoint": "/api/health/interfaces", "method": "GET", "use": "Interfaces réseau avec type (pont / agrégat / physique), IP et débit du lien." }, { "endpoint": "/api/health/acknowledge", "method": "POST", "use": "Corps : '{'\"error_key\":\"smart_sdh\"'}'. Supprime une alerte pendant la durée configurée pour sa catégorie." }, { "endpoint": "/api/health/cleanup-orphans", "method": "POST", "use": "Nettoyage manuel des erreurs de périphériques ou VM supprimés. Idempotent." } ], "outro": "Les formats de réponse et les catégories sont décrits dans Health Monitor." }, "storage": { "heading": "Stockage", "rows": [ { "endpoint": "/api/storage", "method": "GET", "use": "Disques visibles par l’hôte : périphériques blocs, pools ZFS et LVM." }, { "endpoint": "/api/storage/summary", "method": "GET", "use": "Résumé compact utilisé par les cartes de tableau de bord." }, { "endpoint": "/api/proxmox-storage", "method": "GET", "use": "Stockages définis par Proxmox de /etc/pve/storage.cfg avec état en ligne et espace libre." }, { "endpoint": "/api/storage/observations", "method": "GET", "use": "Historique persistant : avertissements SMART, erreurs d’E/S et événements ZFS. Conservé après la résolution automatique des alertes." }, { "endpoint": "/api/storage/smart/", "method": "GET", "use": "Attributs actuels SMART pour un disque." }, { "endpoint": "/api/storage/smart//latest", "method": "GET", "use": "Le plus récent auto-test SMART pour le disque." }, { "endpoint": "/api/storage/smart//history", "method": "GET", "use": "Liste des rapports SMART stockés pour le disque." }, { "endpoint": "/api/storage/smart//history/", "method": "GET", "use": "Lit un rapport SMART enregistré précis." }, { "endpoint": "/api/storage/smart//test", "method": "POST", "use": "Lance un autotest SMART. Schéma du corps : '{'\"test_type\":\"short\"|\"long\"'}'." }, { "endpoint": "/api/storage/smart/schedules", "method": "GET", "use": "Énumérez les tests SMART actuellement prévus." }, { "endpoint": "/api/storage/smart/tools", "method": "GET", "use": "Vérifie si smartctl et les outils associés sont installés." } ] }, "network": { "heading": "Réseau", "rows": [ { "endpoint": "/api/network", "method": "GET", "use": "Toutes les interfaces avec état du lien et adresses." }, { "endpoint": "/api/network/summary", "method": "GET", "use": "Vue compacte utilisée par le tableau de bord." }, { "endpoint": "/api/network//metrics", "method": "GET", "use": "RX/TX par interface, compteurs d’erreurs et séries temporelles RRD." }, { "endpoint": "/api/network/latency/current", "method": "GET", "use": "Dernière mesure de latence vers la passerelle." }, { "endpoint": "/api/network/latency/history", "method": "GET", "use": "Série chronologique de latence de passerelle." } ] }, "vms": { "heading": "Machines virtuelles et conteneurs", "rows": [ { "endpoint": "/api/vms", "method": "GET", "use": "VM et CT du nœud local avec état, vmid et nom." }, { "endpoint": "/api/vms/", "method": "GET", "use": "Détail complet pour un invité (config, réseau, disques)." }, { "endpoint": "/api/vms//metrics", "method": "GET", "use": "Séries temporelles CPU, mémoire et E/S disque d’un invité (RRD)." }, { "endpoint": "/api/vms//logs", "method": "GET", "use": "Journaux des tâches récentes de cet invité." }, { "endpoint": "/api/vms//backups", "method": "GET", "use": "Sauvegardes conservées pour cet invité." }, { "endpoint": "/api/vms//control", "method": "POST", "use": "Choisissez une action du schéma : '{'\"action\":\"start|stop|reboot|shutdown\"'}'. Contrôle l’alimentation de l’invité." }, { "endpoint": "/api/vms//backup", "method": "POST", "use": "Lance vzdump pour l’invité. Le corps choisit le stockage et le mode (snapshot / suspend / stop)." }, { "endpoint": "/api/vms//config", "method": "PUT", "use": "Modifie la description (notes) d’une VM ou d’un CT. Les autres paramètres de configuration ne sont pas modifiables par ce point d’accès." }, { "endpoint": "/api/node/metrics", "method": "GET", "use": "Métriques agrégées du nœud en séries RRD." } ] }, "backups": { "heading": "Sauvegardes", "rows": [ { "endpoint": "/api/backups", "method": "GET", "use": "Sauvegardes trouvées dans les stockages dir, NFS, CIFS et PBS interrogés via le nœud local. Aucun parcours exhaustif de tous les nœuds du cluster." }, { "endpoint": "/api/backup-storages", "method": "GET", "use": "Stockages marqués comme cibles de sauvegarde, avec espace libre." } ] }, "logs": { "heading": "Journaux, tâches, événements", "rows": [ { "endpoint": "/api/logs", "method": "GET", "use": "Entrées de journaux filtrées. Demande: ?level=&service=&limit=." }, { "endpoint": "/api/logs/download", "method": "GET", "use": "Exporte la plage filtrée en texte brut." }, { "endpoint": "/api/events", "method": "GET", "use": "Flux d'événements internes — le même qui alimente les notifications." }, { "endpoint": "/api/task-log/", "method": "GET", "use": "Journal complet en texte brut d’une tâche Proxmox identifiée par UPID." } ] }, "notifications": { "heading": "Notifications et IA", "intro": "L’envoi, les canaux et la reformulation par IA sont décrits dans Notifications et Assistant IA.", "rows": [ { "endpoint": "/api/notifications", "method": "GET", "use": "Notifications récentes affichées dans le tableau de bord." }, { "endpoint": "/api/notifications/download", "method": "GET", "use": "Exporte les notifications en texte." }, { "endpoint": "/api/notifications/status", "method": "GET", "use": "État de l’envoi : processus en arrière-plan actif, longueur de file et dernier envoi." }, { "endpoint": "/api/notifications/settings", "method": "GET", "use": "Lit la configuration des notifications : canaux, réglages par événement, reformulation IA et nom affiché." }, { "endpoint": "/api/notifications/history", "method": "GET", "use": "Historique d’envoi. Paramètres : ?limit=&offset=&severity=&channel=." }, { "endpoint": "/api/notifications/history", "method": "DELETE", "use": "Vide la table de l’historique d’envoi." }, { "endpoint": "/api/notifications/test", "method": "POST", "use": "Envoie une notification de test à un canal. Corps : '{'\"channel\":\"telegram\"'}'." }, { "endpoint": "/api/notifications/send", "method": "POST", "use": "Émet un événement personnalisé. Corps : '{'\"event_type\":\"custom\",\"severity\":\"WARNING\",\"title\":\"...\",\"body\":\"...\",\"data\":'{''}''}'." }, { "endpoint": "/api/notifications/test-ai", "method": "POST", "use": "Teste la connexion au fournisseur d’IA. Champs du corps (schéma) : '{'\"provider\",\"api_key\",\"model\",\"ollama_url?\"'}'." }, { "endpoint": "/api/notifications/provider-models", "method": "POST", "use": "Liste des modèles disponibles pour le fournisseur d'IA sélectionné." }, { "endpoint": "/api/notifications/proxmox/setup-webhook", "method": "POST", "use": "Enregistrer le moniteur comme cible webhook dans /etc/pve/notifications.cfg." }, { "endpoint": "/api/notifications/proxmox/cleanup-webhook", "method": "POST", "use": "Supprimer la cible Monitor de la configuration de notification de PVE." }, { "endpoint": "/api/notifications/proxmox/read-cfg", "method": "GET", "use": "Lisez le notifications.cfg actuel de PVE comme PVE le voit." } ] }, "security": { "heading": "Sécurité (lecture)", "rows": [ { "endpoint": "/api/security/firewall/status", "method": "GET", "use": "État du pare-feu PVE et règles actives." }, { "endpoint": "/api/security/fail2ban/details", "method": "GET", "use": "État du jail Fail2Ban ; nécessite ce composant facultatif installé." }, { "endpoint": "/api/security/fail2ban/activity", "method": "GET", "use": "Événements Fail2Ban récents : blocages, déblocages et démarrages du jail." }, { "endpoint": "/api/security/lynis/status", "method": "GET", "use": "État de Lynis : installation et date de la dernière analyse." }, { "endpoint": "/api/security/lynis/report", "method": "GET", "use": "Dernier rapport Lynis : avertissements, suggestions et indice de durcissement." }, { "endpoint": "/api/security/tools", "method": "GET", "use": "Détectez quels outils de sécurité optionnels (Fail2Ban, Lynis) sont installés." } ] }, "proxmenuxIntegration": { "heading": "Intégration ProxMenux", "rows": [ { "endpoint": "/api/proxmenux/update-status", "method": "GET", "use": "Disponibilité d’une mise à jour ProxMenux Monitor, version installée et dernière version." }, { "endpoint": "/api/proxmenux/installed-tools", "method": "GET", "use": "Liste de chaque optimisation de ProxMenux après l'installation actuellement enregistrée sur l'hôte (à partir de /usr/local/share/proxmenux/installed_tools.json)." }, { "endpoint": "/api/proxmenux/tool-source/", "method": "GET", "use": "Code de la fonction de post-installation associée, extrait des scripts actuels de l’hôte ou d’ancien code conservé. Ce n’est pas un instantané garanti du code initialement exécuté." } ] }, "prometheus": { "heading": "Métriques Prometheus", "intro": "Le point d’accès authentifié GET /api/prometheus renvoie le format texte Prometheus 0.0.4. Chaque métrique inclut node=\"<hostname>\" et un horodatage explicite. Collectez-les avec Prometheus ou une base temporelle compatible.", "exportedTitle": "Mesures exportées", "headerGroup": "Groupe", "headerMetric": "Métrique", "headerDesc": "Description", "groups": [ { "group": "Système", "metrics": [ { "metric": "proxmox_cpu_usage", "desc": "Pourcentage d’utilisation CPU, de type gauge." }, { "metric": "proxmox_memory_total_bytes", "desc": "Mémoire physique totale en octets." }, { "metric": "proxmox_memory_used_bytes", "desc": "Mémoire utilisée en octets." }, { "metric": "proxmox_memory_usage_percent", "desc": "Pourcentage d'utilisation de la mémoire." }, { "metric": "proxmox_load_average", "desc": "Moyenne de la charge du système. Étiquette period=\"1m\" | \"5m\" | \"15m\"." } ] }, { "group": "Durée de fonctionnement", "metrics": [ { "metric": "proxmox_uptime_seconds", "desc": "Secondes depuis le dernier démarrage." } ] }, { "group": "Matériel", "metrics": [ { "metric": "proxmox_cpu_temperature_celsius", "desc": "Température du boîtier du CPU." }, { "metric": "proxmox_disk_temperature_celsius", "desc": "Température par disque. Étiquette disk." }, { "metric": "proxmox_fan_speed_rpm", "desc": "Vitesses des ventilateurs. Étiquette fan." } ] }, { "group": "Espace disque", "metrics": [ { "metric": "proxmox_disk_total_bytes", "desc": "Capacité totale de chaque entrée de disque exportée. Étiquette disk." }, { "metric": "proxmox_disk_used_bytes", "desc": "Capacité utilisée de chaque entrée de disque exportée." }, { "metric": "proxmox_disk_usage_percent", "desc": "Pourcentage utilisé de chaque entrée de disque exportée." } ] }, { "group": "Réseau", "metrics": [ { "metric": "proxmox_network_bytes_sent_total", "desc": "Total des octets envoyés, de type counter." }, { "metric": "proxmox_network_bytes_received_total", "desc": "Total des octets reçus, de type counter." }, { "metric": "proxmox_interface_bytes_sent_total", "desc": "Octets envoyés par interface. Étiquette interface." }, { "metric": "proxmox_interface_bytes_received_total", "desc": "Octets reçus par interface." } ] }, { "group": "VMs / CTs", "metrics": [ { "metric": "proxmox_vms_total", "desc": "Nombre total de VM et de LXC." }, { "metric": "proxmox_vms_running", "desc": "Nombre d’invités en cours d’exécution." }, { "metric": "proxmox_vms_stopped", "desc": "Nombre d’invités arrêtés." }, { "metric": "proxmox_vm_status", "desc": "État par VM/CT : 1 en cours d’exécution, 0 sinon. Étiquettes node, vmid et name." }, { "metric": "proxmox_vm_cpu_usage", "desc": "Utilisation CPU par VM/CT, avec les mêmes étiquettes." }, { "metric": "proxmox_vm_memory_used_bytes / _max_bytes", "desc": "Mémoire utilisée et maximum configuré par VM/CT." } ] }, { "group": "GPU", "metrics": [ { "metric": "proxmox_gpu_temperature_celsius", "desc": "Température GPU. Étiquettes slot et vendor ; gpu contient aussi le nom du GPU." }, { "metric": "proxmox_gpu_utilization_percent", "desc": "Pourcentage d’utilisation du GPU." }, { "metric": "proxmox_gpu_memory_total_bytes", "desc": "Mémoire totale du GPU." }, { "metric": "proxmox_gpu_power_draw_watts", "desc": "Puissance consommée par le GPU en watts." }, { "metric": "proxmox_gpu_clock_speed_mhz", "desc": "Fréquence du cœur du GPU." }, { "metric": "proxmox_gpu_memory_clock_mhz", "desc": "Fréquence de la mémoire du GPU." } ] }, { "group": "UPS", "metrics": [ { "metric": "proxmox_ups_battery_charge_percent", "desc": "Pourcentage de charge de la batterie." }, { "metric": "proxmox_ups_load_percent", "desc": "Charge courante sur l'UPS." }, { "metric": "proxmox_ups_runtime_seconds", "desc": "Autonomie estimée sur batterie." }, { "metric": "proxmox_ups_input_voltage_volts", "desc": "Tension d'entrée." } ] } ], "scrapeTitle": "Configuration de collecte Prometheus", "scrapeIntro": "Avec l’authentification active, ajoutez un jeton API à l’en-tête Bearer de la configuration de collecte Prometheus :", "perHostTitle": "Collecte par hôte", "perHostBody": "Chaque instance exporte les métriques de son hôte. Dans un cluster, configurez Prometheus pour collecter chaque nœud. L’étiquette node distingue les séries dans Grafana (proxmox_vms_running'{'node=\"pve01\"'}')." }, "puttingItTogether": { "heading": "Assembler les intégrations", "body": "Voir Intégrations pour relier ces points d’accès aux capteurs Home Assistant, cartes Homepage, tableaux Grafana, flux n8n et autres outils. La page fournit les configurations habituelles à copier. Cette page-ci présente le catalogue des points d’accès." }, "whereNext": { "heading": "Pour continuer", "items": [ { "label": "Accès et authentification", "href": "/docs/monitor/access-auth", "tail": " — création de jetons, journal d’audit, jail Fail2Ban facultatif et TLS." }, { "label": "Notifications", "href": "/docs/monitor/notifications", "tailRich": " — contenu de data par événement lors d’un appel à /api/notifications/send." }, { "label": "Assistant IA", "href": "/docs/monitor/ai-assistant", "tailRich": " — fonctionnement de /api/notifications/test-ai et /api/notifications/provider-models." }, { "label": "Moniteur de santé", "href": "/docs/monitor/health-monitor", "tailRich": " — format de réponse de /api/health/* et sens des dix catégories." } ] } }