Skip to content

makertronic/minecheck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MineCheck

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.

Fonctionnalités

  • 🔄 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

Prérequis

  • 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

Installation de screen

Ubuntu/Debian :

sudo apt-get update
sudo apt-get install screen

CentOS/RHEL :

sudo yum install screen

macOS :

brew install screen

Compilation

Depuis le code source

  1. Installer Rust (si ce n'est pas déjà fait) :

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    source ~/.cargo/env
  2. Cloner le dépôt :

    git clone https://github.com/makertronic/minecheck
    cd minecheck
  3. Compiler :

    # Version de développement
    cargo build
    
    # Version optimisée pour la production
    cargo build --release
  4. Binaire compilé :

    • Développement : ./target/debug/minecheck
    • Production : ./target/release/minecheck

Installation via Cargo (si publié)

cargo install minecheck

Utilisation

Syntaxe de base

minecheck --command "commande à surveiller" --time <intervalle_en_secondes> [--memory <seuil_pourcentage>]

Paramètres

  • --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

Exemples d'utilisation

Surveillance simple d'un serveur Python

minecheck --command "python server.py" --time 30

Surveille un serveur Python et le relance toutes les 30 secondes si nécessaire.

Serveur avec surveillance mémoire

minecheck --command "./myserver --port 8080 --max-connections 100" --time 60 --memory 80.0

Surveille un serveur personnalisé toutes les 60 secondes et le redémarre si l'utilisation mémoire dépasse 80%.

Application Java intensive

minecheck --command "java -Xmx2g -jar application.jar" --time 120 --memory 90.5

Surveille une application Java avec 2GB de RAM maximale, vérification toutes les 2 minutes, redémarrage si >90.5% mémoire.

Service web Node.js

minecheck --command "node app.js --env production" --time 45 --memory 75.0

Surveille une application Node.js en production avec surveillance mémoire stricte.

Base de données PostgreSQL

minecheck --command "postgres -D /var/lib/postgresql/data" --time 300 --memory 85.0

Surveillance d'une base de données avec vérification toutes les 5 minutes.

Fonctionnement

  1. Démarrage : MineCheck lance votre commande dans une session screen nommée
  2. Surveillance : Vérifie périodiquement si la session est active
  3. Redémarrage : Relance automatiquement le service si arrêté
  4. Surveillance mémoire (optionnel) : Vérifie l'utilisation mémoire et redémarre si le seuil est dépassé

Session Screen

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-session

Pour détacher sans arrêter : Ctrl+A puis D

Pour lister toutes les sessions :

screen -ls

Logs et Messages

MineCheck 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.log

Surveillance Mémoire (Linux seulement)

La surveillance mémoire utilise le système de fichiers /proc/ de Linux :

  • Lit /proc/<pid>/status pour la mémoire RSS du processus
  • Lit /proc/meminfo pour 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.

Dépannage

Problèmes courants

"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 quit

Permission denied

# Assurer les permissions d'exécution
chmod +x ./target/release/minecheck

Vérifier le statut

# Vérifier si minecheck tourne
ps aux | grep minecheck

# Vérifier les sessions screen actives
screen -ls

Arrêter proprement

# Trouver le PID de minecheck
pgrep minecheck

# Arrêter proprement
kill <PID>
# Ou forcer l'arrêt
kill -9 <PID>

Configuration avancée

Variables d'environnement

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 30

Intégration avec systemd

Pour 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.target

Contributeurs

Ce projet utilise Rust pour sa sécurité mémoire et ses performances. Les contributions sont les bienvenues !

License

[À définir selon votre projet]

Support

Pour toute question ou problème, veuillez consulter les logs détaillés et vérifier les prérequis système.

About

MineCheck is a monitoring and automatic restart tool for long-running processes. It keeps your services running by monitoring their status and memory usage.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages