Files
node-notifier/README.md
2025-07-30 22:13:58 +02:00

174 lines
4.6 KiB
Markdown

# 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 notifications
- **`discord_client`** : Gère l'envoi de notifications vers Discord via webhooks
- **`system_monitor`** : Fournit les fonctionnalités de surveillance des ressources système
## 🚀 Installation et Usage
### Prérequis
- Rust 1.70+
- Un webhook Discord configuré
### Configuration
1. Clonez le repository :
```bash
git clone <repository-url>
cd node-notifier
```
2. Créez un fichier `.env` à la racine du projet :
```env
DISCORD_WEBHOOK=https://discord.com/api/webhooks/your/webhook/url
```
3. Compilez le projet :
```bash
cd node_notifier
cargo build --release
```
4. Exécutez le monitoring :
```bash
cargo run
```
### Exemples d'utilisation
Le projet inclut plusieurs exemples pratiques :
```bash
# 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 :
```toml
[workspace]
members = [
"node_notifier",
"discord_client",
"system_monitor"
]
```
### Tests
```bash
# Tests pour toutes les crates
cargo test --workspace
# Tests pour une crate spécifique
cargo test -p system_monitor
```
### Compilation
```bash
# Compilation de tout le workspace
cargo build --workspace
# Compilation release
cargo build --release
```
## 📦 Crates individuelles
- [discord_client](./discord_client/README.md) - Client de notifications Discord
- [system_monitor](./system_monitor/README.md) - Surveillance des ressources système
## 🤝 Contribution
1. Forkez le projet
2. Créez une branche pour votre fonctionnalité (`git checkout -b feature/nouvelle-fonctionnalite`)
3. Committez vos changements (`git commit -am 'Ajout d'une nouvelle fonctionnalité'`)
4. Poussez vers la branche (`git push origin feature/nouvelle-fonctionnalite`)
5. Créez une Pull Request
## 📄 Licence
Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.
## 🔧 Dépannage
### Problèmes courants
**Erreur "DISCORD_WEBHOOK environment variable not set"**
- Vérifiez que le fichier `.env` existe et contient la variable `DISCORD_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 `sudo` si nécessaire
**Erreur de compilation**
- Vérifiez que vous utilisez Rust 1.70+
- Nettoyez le cache avec `cargo clean` puis 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