This commit is contained in:
2025-07-30 22:13:58 +02:00
parent af48990cf7
commit 357790ac34
21 changed files with 4257 additions and 110 deletions

166
examples/README.md Normal file
View File

@@ -0,0 +1,166 @@
# Exemples d'utilisation
Ce dossier contient des exemples pratiques d'utilisation des différentes crates du projet Node Notifier.
## 📁 Structure
- `basic_monitoring.rs` - Exemple basique de surveillance système
- `custom_thresholds.rs` - Configuration de seuils personnalisés
- `discord_notifications.rs` - Test du client Discord
- `continuous_monitoring.rs` - Surveillance continue avec boucle
## 🚀 Exécution des exemples
Depuis le répertoire `node_notifier` :
### 1. Surveillance basique
```bash
cargo run --example basic_monitoring
```
Démontre l'utilisation basique de `SystemMonitor` avec les seuils par défaut.
**Sortie exemple :**
```
🖥️ Surveillance système basique
✅ Aucune alerte - Système OK
📊 Résumé des ressources:
CPU usage: 14.72%
Memory usage: 23.10%
Swap usage: 0.00%
Disk usage: 79.17%
```
### 2. Seuils personnalisés
```bash
cargo run --example custom_thresholds
```
Montre comment configurer des seuils personnalisés et créer des messages d'alerte sur mesure.
**Fonctionnalités :**
- Seuils CPU, mémoire et disque personnalisés
- Messages d'alerte personnalisés
- Configuration flexible
### 3. Test Discord
```bash
DISCORD_WEBHOOK="your-webhook-url" cargo run --example discord_notifications
```
Teste la fonctionnalité de notification Discord avec différents types de messages.
**Prérequis :**
- Variable d'environnement `DISCORD_WEBHOOK` configurée
- Webhook Discord valide
**Messages testés :**
- Message de test de connexion
- Alerte simulée avec formatage
- Rapport système formaté
### 4. Surveillance continue
```bash
DISCORD_WEBHOOK="your-webhook-url" cargo run --example continuous_monitoring
```
Démontre une surveillance continue avec notifications automatiques.
**Fonctionnalités :**
- Vérifications toutes les 30 secondes
- Alertes instantanées en cas de dépassement
- Rapport périodique toutes les 5 minutes
- Gestion des timestamps
## 🔧 Configuration
### Variables d'environnement
Pour les exemples Discord, définissez votre webhook :
```bash
export DISCORD_WEBHOOK="https://discord.com/api/webhooks/your/webhook/url"
```
Ou créez un fichier `.env` dans le répertoire racine :
```env
DISCORD_WEBHOOK=https://discord.com/api/webhooks/your/webhook/url
```
### Configuration Discord
1. **Créer un webhook :**
- Accédez à votre serveur Discord
- Paramètres du canal → Intégrations → Webhooks
- Créez un nouveau webhook
- Copiez l'URL
2. **Permissions requises :**
- Envoyer des messages
- Intégrer des liens
- Utiliser des emojis externes
## 📊 Cas d'usage
### Surveillance ponctuelle
Utilisez `basic_monitoring` ou `custom_thresholds` pour une vérification unique des ressources système.
### Monitoring de production
Utilisez `continuous_monitoring` comme base pour un système de surveillance permanent.
### Tests d'intégration
Utilisez `discord_notifications` pour valider votre configuration Discord.
## 🛠️ Personnalisation
### Modifier les seuils
Dans `custom_thresholds.rs`, adaptez les valeurs selon vos besoins :
```rust
ResourceThreshold::new(
"CPU".to_string(),
get_cpu_usage,
95.0, // Seuil critique à 95%
"🔥 CPU en surchauffe !".to_string(),
),
```
### Ajouter des métriques
Créez vos propres fonctions de surveillance :
```rust
fn get_custom_metric(sys: &System, disks: &Disks) -> f32 {
// Votre logique personnalisée
42.0
}
```
### Personnaliser les messages Discord
Modifiez le formatage des messages dans `continuous_monitoring.rs` :
```rust
let message = format!(
"🚨 **ALERTE CRITIQUE**\n\n{}\n\n{}",
alert,
chrono::Utc::now().format("%H:%M:%S")
);
```
## 🔍 Debugging
### Activer les logs
```bash
RUST_LOG=debug cargo run --example basic_monitoring
```
### Tester sans Discord
Les exemples `basic_monitoring` et `custom_thresholds` fonctionnent sans configuration Discord.
### Vérifier les métriques
Consultez les valeurs retournées pour identifier les problèmes de seuils.
## 💡 Conseils
- **Production** : Adaptez `continuous_monitoring` pour vos besoins spécifiques
- **Seuils** : Commencez avec des valeurs conservatrices et ajustez progressivement
- **Rate limiting** : Attention aux limites Discord (30 req/min par webhook)
- **Monitoring** : Surveillez aussi les performances de votre système de monitoring