4.7 KiB
🔍 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 :
- 💾 Sauvegarde du serveur
- 📢 Annonce aux joueurs (broadcast : "Redémarrage automatique - RAM élevée - 30 secondes")
- ⏹️ Arrêt du serveur (signal stop)
- ⏳ Attente de 25 secondes
- 🚀 Redémarrage du serveur (signal start)
- ⏳ Vérification jusqu'à ce que le serveur soit opérationnel
- 🔄 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) :
PTERODACTYL_API_URL=https://panel.louismazin.ovh
PTERODACTYL_API_TOKEN=votre_token
PTERODACTYL_SERVER_ID=ae4a628f
Paramètres modifiables
Dans le fichier ramMonitor.js :
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
-
ramMonitor.js(nouveau)- Module principal de surveillance
- Gestion du redémarrage automatique
-
index.js(modifié)- Ajout de
startRAMMonitoring(forceWebSocketReconnect) - Import du module ramMonitor
- Ajout de
-
consoleMonitor.js(modifié)- Ajout de la fonction
forceWebSocketReconnect() - Export de la fonction pour utilisation par ramMonitor
- Ajout de la fonction
-
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_bytesqui 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_TOKENetPTERODACTYL_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-statuspour diagnostiquer
Le WebSocket ne se reconnecte pas
- Vérifier que
consoleMonitor.jsest bien démarré - Les logs indiqueront les tentatives de reconnexion
Désactivation
Pour désactiver temporairement la surveillance, commenter dans index.js :
// startRAMMonitoring(forceWebSocketReconnect);