# 🔍 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); ```