Files
scripts-bash/servers/linux/monitoring/README.md
2026-03-16 13:52:39 +01:00

95 lines
3.6 KiB
Markdown

# 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/monitoring/bin/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).