Files
check_swap_all/README.md
2025-11-03 16:54:50 +01:00

145 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Audit du swap sur VMs & CTs Proxmox (PVE)
🔍 **Objectif**
Lister, en un seul passage, létat du **swap** et de la **mémoire** pour un ensemble de **VMs** et de **containers LXC** sur un hôte **Proxmox VE**.
- Pour les **VMs** : utilise le **QEMU Guest Agent** afin dexécuter des commandes invité (`swapon --show`, `free -h`).
- Pour les **CTs** : exécute directement via `pct exec` les mêmes commandes.
---
## 🧩 Fonctionnement (résumé)
1. Définit deux tableaux didentifiants : `VM_IDS=(...)` et `CT_IDS=(...)`.
2. Pour chaque **VM** :
- Vérifie que la VM est **allumée** (`qm status <id>`).
- Tente une commande via **QEMU Agent** (`qm guest cmd <id> get-osinfo`).
- Si OK, exécute sur linvité :
```bash
echo '[swapon]'; swapon --show || echo 'Aucun swap'; echo; echo '[free]'; free -h
```
- Sinon, signale que lagent est **inactif/non installé**.
3. Pour chaque **CT** :
- Vérifie que le CT est **running** (`pct status <id>`).
- Exécute les mêmes commandes avec `pct exec`.
---
## ✅ Prérequis
- Hôte **Proxmox VE** avec accès **root** (pas de `sudo` en PVE).
- **QEMU Guest Agent** **installé & actif** dans les **VMs** (sinon seules les CTs seront auditées).
- **Linux (Debian/Ubuntu)** dans la VM :
```bash
apt update && apt install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent
```
- **Côté PVE (optionnel)** : assurez-vous que **Options ▸ QEMU Agent = Activé** dans la conf de la VM.
- Les containers LXC doivent avoir **bash**, `swapon`, `free` disponibles (paquets `procps`, `util-linux` selon distro).
---
## 📦 Installation
1. Copier le script dans votre dépôt de scripts, ex. `/home/scripts` :
```bash
install -m 0755 check_swap_all.sh /home/scripts/check_swap_all.sh
```
2. **Adapter les listes** dIDs en tête de script :
```bash
VM_IDS=(100 101 102 103 104)
CT_IDS=(20009000 20232400 20308096 20401080 20508080)
```
> 💡 Conformément à votre organisation, `/home/scripts` est le dossier de référence.
---
## ▶️ Utilisation
Exécuter en **root** sur lhôte PVE :
```bash
/home/scripts/check_swap_all.sh
```
**Extrait de sortie typique :**
```
======================
🔍 CHECK SWAP - VMs
======================
➡️ VM 102
✅ QEMU Agent actif sur VM 102
[swapon]
NAME TYPE SIZE USED PRIO
/dev/sda2 file 4G 1.2G -2
[free]
total used free shared buff/cache available
Mem: 16Gi 3.1Gi 8.7Gi 183Mi 4.0Gi 12Gi
Swap: 4.0Gi 1.2Gi 2.8Gi
➡️ VM 103
⚠️ VM 103 allumée mais QEMU agent inactif ou non installé
======================
🔍 CHECK SWAP - CTs
======================
➡️ CT 20009000
✅ CT 20009000 en cours d'exécution
[swapon]
Aucun swap
[free]
total used free shared buff/cache available
Mem: 2048Mi 350Mi 1400Mi 50Mi 297Mi 1720Mi
Swap: 0B 0B 0B
➡️ CT 20308096
⚠️ CT 20308096 éteint
```
---
## ⏱️ Planification (cron) — audit régulier
Pour un **rapport manuel** ponctuel, lancer le script à la demande.
Pour un **contrôle régulier**, vous pouvez planifier un cron **journalier à 08:00** (exécution locale, sortie visible dans `mail` root ou redirigée vers un fichier) :
```cron
0 8 * * * /home/scripts/check_swap_all.sh >> /var/log/check_swap_all.log 2>&1
```
- Supprimez la redirection `>>` si vous préférez recevoir lemail cron root.
- Pour un run **silencieux** (uniquement log) : gardez la redirection comme ci-dessus.
---
## 🧰 Dépannage
- **“QEMU agent inactif”** sur VM :
- Vérifier linstallation/service côté VM (`systemctl status qemu-guest-agent`).
- Vérifier loption **QEMU Agent** activée dans la conf PVE de la VM.
- **Commandes introuvables** dans CT/VM :
- Installer `procps` pour `free`, et vérifier `util-linux` pour `swapon`.
- **Temps de réponse long** sur certaines VMs :
- Lappel `qm guest exec` attend la fin de la commande ; sous forte charge, la sortie peut être retardée.
---
## 🛡️ Sécurité & impacts
- Le script est **read-only** côté invités (consultation détat), sans modification de configuration.
- Aucune opération nest lancée si la VM/CT nest pas **running**.
- Les appels invités via **QEMU Agent** exigent une VM **fiablement configurée** (agent en service).
---
## 🗑️ Désinstallation
```bash
rm -f /home/scripts/check_swap_all.sh
rm -f /var/log/check_swap_all.log # si vous aviez activé la redirection cron
```
---
## ✍️ Note
- Script compatible PVE standards (`qm`, `pct`).
- Aucune dépendance externe hors PVE et outils système de base dans linvité.
- Idéal comme **check rapide** avant dactiver une purge automatisée (cf. `swap_cleaner.sh`).
---
## 📄 Licence
Utilisation interne. Adapter selon votre politique de sécurité.