2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00
wip
2025-07-30 22:13:58 +02:00

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 :
git clone <repository-url>
cd node-notifier
  1. Créez un fichier .env à la racine du projet :
DISCORD_WEBHOOK=https://discord.com/api/webhooks/your/webhook/url
  1. Compilez le projet :
cd node_notifier
cargo build --release
  1. 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

🤝 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 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
Description
No description provided
Readme 245 KiB
2025-09-04 18:56:15 +00:00
Languages
Rust 100%