147 lines
4.7 KiB
Markdown
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);
|
|
```
|