MineCheck est un outil de surveillance et de redémarrage automatique pour les processus longue durée. Il maintient vos services en cours d'exécution en surveillant leur état et leur utilisation mémoire.
- 🔄 Surveillance continue : Vérifie périodiquement si un processus tourne
- 🚀 Redémarrage automatique : Relance automatiquement les processus arrêtés
- 🧠 Surveillance mémoire : Optionnellement surveille l'utilisation mémoire et redémarre si un seuil est dépassé
- 🖥️ Gestion par screen : Utilise GNU screen pour isoler les processus
- 📊 Logging structuré : Messages de log avec niveaux (INFO, WARN, ERROR)
- 🔧 Configuration simple : Arguments en ligne de commande clairs et intuitifs
- Linux (recommandé) : Support complet de la surveillance mémoire
- Windows : Support de base (surveillance mémoire non disponible)
- GNU screen : Doit être installé et disponible dans le PATH
Ubuntu/Debian :
sudo apt-get update
sudo apt-get install screenCentOS/RHEL :
sudo yum install screenmacOS :
brew install screen-
Installer Rust (si ce n'est pas déjà fait) :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env
-
Cloner le dépôt :
git clone https://github.com/makertronic/minecheck cd minecheck -
Compiler :
# Version de développement cargo build # Version optimisée pour la production cargo build --release
-
Binaire compilé :
- Développement :
./target/debug/minecheck - Production :
./target/release/minecheck
- Développement :
cargo install minecheckminecheck --command "commande à surveiller" --time <intervalle_en_secondes> [--memory <seuil_pourcentage>]--command: La commande complète à exécuter dans une session screen--time: Intervalle de surveillance en secondes--memory(optionnel) : Seuil d'utilisation mémoire en pourcentage (0-100) pour redémarrage automatique
minecheck --command "python server.py" --time 30Surveille un serveur Python et le relance toutes les 30 secondes si nécessaire.
minecheck --command "./myserver --port 8080 --max-connections 100" --time 60 --memory 80.0Surveille un serveur personnalisé toutes les 60 secondes et le redémarre si l'utilisation mémoire dépasse 80%.
minecheck --command "java -Xmx2g -jar application.jar" --time 120 --memory 90.5Surveille une application Java avec 2GB de RAM maximale, vérification toutes les 2 minutes, redémarrage si >90.5% mémoire.
minecheck --command "node app.js --env production" --time 45 --memory 75.0Surveille une application Node.js en production avec surveillance mémoire stricte.
minecheck --command "postgres -D /var/lib/postgresql/data" --time 300 --memory 85.0Surveillance d'une base de données avec vérification toutes les 5 minutes.
- Démarrage : MineCheck lance votre commande dans une session screen nommée
- Surveillance : Vérifie périodiquement si la session est active
- Redémarrage : Relance automatiquement le service si arrêté
- Surveillance mémoire (optionnel) : Vérifie l'utilisation mémoire et redémarre si le seuil est dépassé
Chaque processus est isolé dans sa propre session screen avec le nom format : {nom_du_processus}-session
Pour attacher une session à la main :
screen -r nom-process-sessionPour détacher sans arrêter : Ctrl+A puis D
Pour lister toutes les sessions :
screen -lsMineCheck utilise un système de logging structuré :
[INFO]: Messages d'information normaux[WARN]: Avertissements (ex: impossibilité de lire la mémoire)[ERROR]: Erreurs critiques (ex: commande invalide)
Tous les messages sont envoyés vers stderr pour permettre la redirection :
minecheck --command "python server.py" --time 30 2>minecheck.logLa surveillance mémoire utilise le système de fichiers /proc/ de Linux :
- Lit
/proc/<pid>/statuspour la mémoire RSS du processus - Lit
/proc/meminfopour la mémoire totale système - Calcule le pourcentage :
(mémoire_processus / mémoire_totale) × 100
Note : Sur Windows, l'utilisation du paramètre --memory générera une erreur indiquant que cette fonctionnalité n'est pas supportée.
"screen: command not found"
# Vérifier si screen est installé
which screen
# Installer screen
sudo apt-get install screen # Ubuntu/Debian
sudo yum install screen # CentOS/RHEL
brew install screen # macOS"Session already exists"
# Nettoyer les sessions existantes
screen -ls
screen -X -S nom-session quitPermission denied
# Assurer les permissions d'exécution
chmod +x ./target/release/minecheck# Vérifier si minecheck tourne
ps aux | grep minecheck
# Vérifier les sessions screen actives
screen -ls# Trouver le PID de minecheck
pgrep minecheck
# Arrêter proprement
kill <PID>
# Ou forcer l'arrêt
kill -9 <PID>Actuellement, MineCheck n'utilise pas de variables d'environnement, mais vous pouvez utiliser les variables système habituelles :
# Par exemple, pour utiliser un PATH personnalisé
PATH="/custom/path:$PATH" minecheck --command "myapp" --time 30Pour un service Linux persistant, vous pouvez créer un fichier service :
[Unit]
Description=MineCheck Service Monitor
After=network.target
[Service]
Type=simple
User=youruser
ExecStart=/path/to/minecheck --command "/path/to/your/app" --time 60 --memory 80.0
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetCe projet utilise Rust pour sa sécurité mémoire et ses performances. Les contributions sont les bienvenues !
[À définir selon votre projet]
Pour toute question ou problème, veuillez consulter les logs détaillés et vérifier les prérequis système.