Node Notifier
Un système de surveillance de ressources système avec notifications Discord, développé en Rust.
📋 Description
Node Notifier est un outil de monitoring système qui surveille en temps réel les ressources (CPU, mémoire, swap, disque) et envoie des notifications Discord lorsque des seuils sont dépassés. Le projet est architecturé de manière modulaire avec trois crates spécialisées.
🏗️ Architecture
Le projet est organisé en trois crates indépendantes :
node-notifier/
├── node_notifier/ # Application principale
├── discord_client/ # Client de notifications Discord
├── system_monitor/ # Surveillance des ressources système
└── README.md # Ce fichier
Crates
node_notifier: Point d'entrée principal qui orchestre la surveillance et les notificationsdiscord_client: Gère l'envoi de notifications vers Discord via webhookssystem_monitor: Fournit les fonctionnalités de surveillance des ressources système
🚀 Installation et Usage
Prérequis
- Rust 1.70+
- Un webhook Discord configuré
Configuration
- Clonez le repository :
git clone <repository-url>
cd node-notifier
- Créez un fichier
.envà la racine du projet :
DISCORD_WEBHOOK=https://discord.com/api/webhooks/your/webhook/url
- Compilez le projet :
cd node_notifier
cargo build --release
- Exécutez le monitoring :
cargo run
Exemples d'utilisation
Le projet inclut plusieurs exemples pratiques :
# Surveillance basique
cd node_notifier && cargo run --example basic_monitoring
# Seuils personnalisés
cd node_notifier && cargo run --example custom_thresholds
# Test des notifications Discord (nécessite DISCORD_WEBHOOK)
cd node_notifier && DISCORD_WEBHOOK="your-webhook-url" cargo run --example discord_notifications
# Surveillance continue (nécessite DISCORD_WEBHOOK)
cd node_notifier && DISCORD_WEBHOOK="your-webhook-url" cargo run --example continuous_monitoring
⚙️ Configuration
Seuils par défaut
- CPU : 80%
- Mémoire : 80%
- Swap : 80%
- Disque : 80% (surveille
/et/home)
Personnalisation
Pour modifier les seuils ou ajouter de nouveaux types de surveillance, consultez la documentation de la crate system_monitor.
📊 Fonctionnalités
- ✅ Surveillance en temps réel du CPU, mémoire, swap et disque
- ✅ Notifications Discord automatiques en cas de dépassement de seuils
- ✅ Rapport de synthèse des ressources système
- ✅ Architecture modulaire et extensible
- ✅ Configuration via variables d'environnement
- ✅ Gestion d'erreurs robuste
🛠️ Développement
Structure du workspace
Le projet utilise un workspace Cargo avec trois crates :
[workspace]
members = [
"node_notifier",
"discord_client",
"system_monitor"
]
Tests
# Tests pour toutes les crates
cargo test --workspace
# Tests pour une crate spécifique
cargo test -p system_monitor
Compilation
# Compilation de tout le workspace
cargo build --workspace
# Compilation release
cargo build --release
📦 Crates individuelles
- discord_client - Client de notifications Discord
- system_monitor - Surveillance des ressources système
🤝 Contribution
- Forkez le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/nouvelle-fonctionnalite) - Committez vos changements (
git commit -am 'Ajout d'une nouvelle fonctionnalité') - Poussez vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Créez une Pull Request
📄 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🔧 Dépannage
Problèmes courants
Erreur "DISCORD_WEBHOOK environment variable not set"
- Vérifiez que le fichier
.envexiste et contient la variableDISCORD_WEBHOOK - Assurez-vous que l'URL du webhook Discord est valide
Permissions insuffisantes pour lire les informations système
- Sur certains systèmes, des permissions root peuvent être nécessaires
- Utilisez
sudosi nécessaire
Erreur de compilation
- Vérifiez que vous utilisez Rust 1.70+
- Nettoyez le cache avec
cargo cleanpuis recompilez
📈 Roadmap
- Interface web de monitoring
- Support de multiples canaux de notification (Slack, email, etc.)
- Historique des métriques
- Configuration via fichier YAML/TOML
- Surveillance de processus spécifiques
- Alertes configurables par plage horaire