couteau_suisse/RAM_MONITOR_README.md
2026-02-01 19:50:27 +01:00

147 lines
4.7 KiB
Markdown

# 🔍 Moniteur de RAM - Palworld Server
## Description
Le moniteur de RAM surveille automatiquement l'utilisation de la mémoire du serveur Palworld. Lorsque le seuil de **19 Go** est dépassé, le serveur est automatiquement redémarré pour éviter les problèmes de performance ou de crash.
## Fonctionnalités
### Surveillance automatique
- ✅ Vérification de la RAM toutes les 60 secondes
- ✅ Seuil de déclenchement : **19 Go**
- ✅ Redémarrage automatique si le seuil est dépassé
- ✅ Resynchronisation automatique du WebSocket après redémarrage
### Processus de redémarrage
Lorsque le seuil est atteint, le système effectue les étapes suivantes :
1. 💾 **Sauvegarde** du serveur
2. 📢 **Annonce** aux joueurs (broadcast : "Redémarrage automatique - RAM élevée - 30 secondes")
3. ⏹️ **Arrêt** du serveur (signal stop)
4.**Attente** de 25 secondes
5. 🚀 **Redémarrage** du serveur (signal start)
6.**Vérification** jusqu'à ce que le serveur soit opérationnel
7. 🔄 **Resynchronisation** du WebSocket (après 5 secondes supplémentaires)
### Commande Discord
#### `/ram-status`
Affiche l'état actuel de la RAM du serveur.
**Permissions requises :** Rôle Rygainland
**Informations affichées :**
- 📊 Utilisation actuelle (en Go et pourcentage)
- ⚠️ Seuil de redémarrage configuré
- 🔄 État du serveur (running, stopped, etc.)
- 💡 Niveau d'alerte (Normal 🟢 / Élevé 🟡 / Critique 🔴)
- ✅ État de la surveillance automatique
**Exemple d'affichage :**
```
🟢 État de la RAM du serveur Palworld
📊 Utilisation actuelle: 15.32 Go / 19.00 Go (80.6%)
⚠️ Seuil de redémarrage: 19.00 Go
🔄 État du serveur: running
💡 Niveau: Élevée
✅ Surveillance automatique active
```
## Configuration
### Variables d'environnement requises
Le moniteur utilise les variables d'environnement suivantes (déjà configurées) :
```env
PTERODACTYL_API_URL=https://panel.louismazin.ovh
PTERODACTYL_API_TOKEN=votre_token
PTERODACTYL_SERVER_ID=ae4a628f
```
### Paramètres modifiables
Dans le fichier `ramMonitor.js` :
```javascript
const RAM_THRESHOLD_MB = 19 * 1024; // Seuil en MB (19 Go par défaut)
const CHECK_INTERVAL_MS = 60 * 1000; // Intervalle de vérification (60 secondes)
```
## Intégration
### Fichiers modifiés/créés
1. **`ramMonitor.js`** (nouveau)
- Module principal de surveillance
- Gestion du redémarrage automatique
2. **`index.js`** (modifié)
- Ajout de `startRAMMonitoring(forceWebSocketReconnect)`
- Import du module ramMonitor
3. **`consoleMonitor.js`** (modifié)
- Ajout de la fonction `forceWebSocketReconnect()`
- Export de la fonction pour utilisation par ramMonitor
4. **`commands/server/ram-status.js`** (nouveau)
- Commande Discord pour consulter l'état de la RAM
## Logs
Le moniteur affiche des logs détaillés dans la console :
```
🚀 [RAM Monitor] Démarrage de la surveillance RAM (seuil: 19 Go)
⏱️ [RAM Monitor] Intervalle de vérification: 60s
🔍 [RAM Monitor] Utilisation RAM: 15.32 Go / État: running
⚠️ [RAM Monitor] SEUIL DÉPASSÉ ! 19.54 Go > 19 Go
🔄 [RAM Monitor] Déclenchement du redémarrage automatique...
💾 [RAM Monitor] Sauvegarde du serveur...
📢 [RAM Monitor] Annonce du redémarrage...
⏹️ [RAM Monitor] Arrêt du serveur...
⏳ [RAM Monitor] Attente de 25 secondes...
🚀 [RAM Monitor] Redémarrage du serveur...
✅ [RAM Monitor] Serveur redémarré avec succès !
🔄 [RAM Monitor] Resynchronisation du WebSocket...
```
## Sécurité
- 🔒 Un seul redémarrage ne peut être en cours à la fois (protection via flag `isRebooting`)
- 🔒 Timeout maximum de 2.5 minutes pour le redémarrage
- 🔒 Vérification de l'état du serveur avant déclenchement (doit être `running`)
- 🔒 Commande Discord protégée par rôle
## Notes techniques
- Le serveur Pterodactyl fournit `memory_bytes` qui est converti en Mo puis Go
- La surveillance ne se déclenche que si le serveur est en état `running`
- Le WebSocket est resynchronisé après 5 secondes de stabilisation post-redémarrage
- Les websockets existants sont proprement fermés avant reconnexion
## Dépannage
### La surveillance ne démarre pas
- Vérifier les variables d'environnement `PTERODACTYL_API_TOKEN` et `PTERODACTYL_SERVER_ID`
- Vérifier les permissions API Pterodactyl
### Le redémarrage ne se déclenche pas
- Vérifier que le seuil est correctement configuré
- Consulter les logs pour voir l'utilisation actuelle
- Utiliser `/ram-status` pour diagnostiquer
### Le WebSocket ne se reconnecte pas
- Vérifier que `consoleMonitor.js` est bien démarré
- Les logs indiqueront les tentatives de reconnexion
## Désactivation
Pour désactiver temporairement la surveillance, commenter dans `index.js` :
```javascript
// startRAMMonitoring(forceWebSocketReconnect);
```