# 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