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

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 :

  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) :

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

  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 :

// startRAMMonitoring(forceWebSocketReconnect);