migration vers monitoring
This commit is contained in:
94
servers/linux/monitoring/README.md
Normal file
94
servers/linux/monitoring/README.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Lightweight Bash Monitoring System by Cédrix
|
||||
|
||||
Ce projet est une solution de monitoring légère, modulaire et auto-hébergée pour serveurs Linux. Elle permet de surveiller l'état des ressources (disque, RAM, etc.), de centraliser les logs au format JSON et d'envoyer des alertes via **ntfy** ou **email** avec un système de déduplication intelligent.
|
||||
|
||||
## 🚀 Ce que fait ce système
|
||||
|
||||
* **Sondes modulaires :** Scripts indépendants pour vérifier les ressources (ex: `check_disk.sh`).
|
||||
* **Logs JSONL :** Centralisation de tous les événements dans `/var/log/monitoring/events.jsonl` pour une analyse facile.
|
||||
* **Moteur d'alerte :** Un moteur (`alert-engine.sh`) qui lit les logs en continu, gère les seuils de priorité et évite le spam grâce à une fenêtre de déduplication.
|
||||
* **Auto-update :** Capacité de se mettre à jour automatiquement depuis un dépôt Git via un manifeste.
|
||||
* **Robuste :** Gestion des verrous (locks) pour éviter que deux instances d'un même script ne tournent en même temps.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
L'installation se fait via le script d'installation distant qui configure l'arborescence `/opt/monitoring`.
|
||||
|
||||
```bash
|
||||
# Passer en root
|
||||
sudo -s
|
||||
|
||||
# Télécharger et lancer l'installateur
|
||||
curl -sSL https://git.abonnel.fr/cedricAbonnel/scripts-bash/raw/branch/main/servers/linux/install-monitoring.sh | bash
|
||||
|
||||
```
|
||||
|
||||
### Arborescence créée :
|
||||
|
||||
* `/opt/monitoring/bin/` : Scripts exécutables (sondes, moteur, updateur).
|
||||
* `/opt/monitoring/lib/` : Bibliothèque commune (`monitoring-lib.sh`).
|
||||
* `/opt/monitoring/conf/` : Fichiers de configuration.
|
||||
* `/var/log/monitoring/` : Logs des événements.
|
||||
* `/var/lib/monitoring/` : États (offsets de lecture, déduplication).
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Configuration (Que modifier ?)
|
||||
|
||||
Après l'installation, vous devez configurer vos accès pour recevoir les alertes.
|
||||
|
||||
### 1. Alertes (ntfy / Mail)
|
||||
|
||||
Éditez le fichier local (prioritaire sur la config par défaut) :
|
||||
`nano /opt/monitoring/conf/alert-engine.local.conf`
|
||||
|
||||
Modifiez les variables suivantes :
|
||||
|
||||
* `NTFY_TOKEN` : Votre jeton d'accès ntfy.
|
||||
* `NTFY_TOPIC` : Le nom de votre topic.
|
||||
* `DEST` : L'adresse email de réception.
|
||||
|
||||
### 2. Seuils des sondes
|
||||
|
||||
Vous pouvez modifier les variables `WARNING` et `CRITICAL` directement dans les scripts du dossier `bin/` ou, mieux, les définir dans `/opt/monitoring/conf/monitoring.conf`.
|
||||
|
||||
---
|
||||
|
||||
## Programmation (Quand exécuter ?)
|
||||
|
||||
Le système repose sur `cron`. Voici la configuration recommandée à ajouter via `crontab -e` :
|
||||
|
||||
| Tâche | Fréquence | Commande |
|
||||
| --- | --- | --- |
|
||||
| **Check Disque** | Toutes les 5 min | `/opt/monitoring/bin/check_disk.sh` |
|
||||
| **Moteur d'alerte** | Toutes les 2 min | `/opt/monitoring/bin/alert-engine.sh` |
|
||||
| **Mise à jour** | Une fois par jour | `/opt/monitoring/bin/monitoring-update.sh` |
|
||||
|
||||
### Exemple de Crontab :
|
||||
|
||||
```cron
|
||||
*/5 * * * * /opt/monitoring/bin/check_disk.sh > /dev/null 2>&1
|
||||
*/2 * * * * /opt/monitoring/bin/alert-engine.sh > /dev/null 2>&1
|
||||
0 4 * * * /opt/monitoring/bin/monitoring-update.sh > /dev/null 2>&1
|
||||
|
||||
```
|
||||
|
||||
## Développer une nouvelle sonde
|
||||
|
||||
Pour créer un nouveau check (ex: `check_ram.sh`) :
|
||||
|
||||
1. Inclure la lib : `. /opt/monitoring/lib/monitoring-lib.sh`
|
||||
2. Effectuer votre mesure.
|
||||
3. Utiliser les fonctions de log : `log_info`, `log_warning` ou `log_critical`.
|
||||
4. Le moteur d'alerte détectera automatiquement le nouvel événement au prochain passage.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Licence
|
||||
|
||||
Ce projet est un logiciel libre : vous pouvez le redistribuer et le modifier selon les termes de la GNU Affero General Public License (AGPLv3) telle que publiée par la Free Software Foundation.
|
||||
|
||||
Le code source modifié doit être mis à disposition si vous utilisez ce logiciel via un réseau (usage SaaS).
|
||||
Reference in New Issue
Block a user