correction de README

This commit is contained in:
2026-03-16 22:16:39 +01:00
parent ae0c8f95cb
commit adfe0ed282

View File

@@ -1,20 +1,20 @@
# Lightweight Bash Monitoring System by Cédrix # 🛡️ PHP 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 projet est une solution de monitoring **légère**, **modulaire** et **auto-hébergée** pour serveurs Linux. Elle combine la simplicité de sondes Bash avec la puissance d'un moteur de traitement PHP pour centraliser les logs et envoyer des alertes intelligentes via **ntfy** ou **email**.
## 🚀 Ce que fait ce système ## 🚀 Fonctionnalités clés
* **Sondes modulaires :** Scripts indépendants pour vérifier les ressources (ex: `check_disk.sh`). * **Moteur PHP & Sondes Hybrides :** Traitement performant des alertes en PHP, tout en gardant des sondes système simples (Bash ou PHP).
* **Logs JSONL :** Centralisation de tous les événements dans `/var/log/monitoring/events.jsonl` pour une analyse facile. * **Alertes Intelligentes :** Envoi via **ntfy** (avec tags et priorités) ou **email**, incluant un système de **déduplication** pour éviter le spam.
* **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. * **Logs JSONL :** Centralisation au format standard `JSON Lines` dans `/var/log/monitoring/events.jsonl` pour une exploitation facile.
* **Auto-update :** Capacité de se mettre à jour automatiquement depuis un dépôt Git via un manifeste. * **Configuration en cascade :** Système de fichiers `.local.conf.php` pour protéger vos réglages lors des mises à jour.
* **Robuste :** Gestion des verrous (locks) pour éviter que deux instances d'un même script ne tournent en même temps. * **Auto-update & Audit :** Mise à jour automatique via manifeste et script d'audit pour détecter les nouvelles options de configuration manquantes.
--- ---
## 📦 Installation ## 📦 Installation
L'installation se fait via le script d'installation distant qui configure l'arborescence `/opt/monitoring`. L'installation se fait via un script Bash qui configure l'environnement et installe les dépendances nécessaires (PHP, curl).
```bash ```bash
# Passer en root # Passer en root
@@ -25,70 +25,65 @@ curl -sSL https://git.abonnel.fr/cedricAbonnel/scripts-bash/raw/branch/main/serv
``` ```
### Arborescence créée : ### Structure du système :
* `/opt/monitoring/bin/` : Scripts exécutables (sondes, moteur, updateur). * `/opt/monitoring/bin/` : Exécutables (sondes, moteur `alert-engine.php`, updater).
* `/opt/monitoring/lib/` : Bibliothèque commune (`monitoring-lib.sh`). * `/opt/monitoring/lib/` : Bibliothèque partagée (`monitoring-lib.php`).
* `/opt/monitoring/conf/` : Fichiers de configuration. * `/opt/monitoring/conf/` : Fichiers de configuration PHP.
* `/var/log/monitoring/` : Logs des événements. * `/var/log/monitoring/` : Journal des événements (`events.jsonl`).
* `/var/lib/monitoring/` : États (offsets de lecture, déduplication). * `/var/lib/monitoring/` : Index (offsets de lecture, états de déduplication).
--- ---
## Configuration (Que modifier ?) ## ⚙️ Configuration
Après l'installation, vous devez configurer vos accès pour recevoir les alertes. Le système utilise des fichiers PHP pour la configuration afin de permettre une logique dynamique.
### 1. Alertes (ntfy / Mail) ### 1. Alertes (ntfy / Mail)
Éditez le fichier local (prioritaire sur la config par défaut) : Ne modifiez pas les fichiers `.conf.php` (risques d'écrasement). Créez vos fichiers locaux :
`nano /opt/monitoring/conf/alert-engine.local.conf` `cp /opt/monitoring/conf/alert-engine.conf.php /opt/monitoring/conf/alert-engine.local.conf.php`
Modifiez les variables suivantes : Éditez le fichier local pour renseigner :
* `NTFY_TOKEN` : Votre jeton d'accès ntfy. * `NTFY_TOKEN` & `NTFY_TOPIC`.
* `NTFY_TOPIC` : Le nom de votre topic. * `DEST` (votre email de réception).
* `DEST` : L'adresse email de réception.
### 2. Seuils des sondes ### 2. Audit de configuration
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.local.conf`. Après une mise à jour, lancez l'outil d'audit pour vérifier si de nouvelles options sont disponibles :
--- ```bash
php /opt/monitoring/bin/monitoring-update-config.php
## 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`) : ## 🕒 Planification (Crontab)
1. Inclure la lib : `. /opt/monitoring/lib/monitoring-lib.sh` Le système est conçu pour être piloté par `cron`. Voici la configuration recommandée :
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.
| Tâche | Fréquence | Commande |
| --- | --- | --- |
| **Sondes (ex: Disque)** | Toutes les 5 min | `php /opt/monitoring/bin/check_disk.php` |
| **Moteur d'alerte** | Chaque minute | `php /opt/monitoring/bin/alert-engine.php` |
| **Mise à jour** | 1x par jour | `php /opt/monitoring/bin/monitoring-update.php` |
--- ---
## Licence ## 🛠️ Développer une nouvelle sonde
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 système est agnostique. Pour ajouter un check :
Le code source modifié doit être mis à disposition si vous utilisez ce logiciel via un réseau (usage SaaS). 1. Créez un script qui écrit une ligne JSON dans `/var/log/monitoring/events.jsonl`.
2. Format attendu : `{"time":"...", "level":"ERROR", "app":"my_app", "event":"disk_full", "msg":"..."}`.
3. Le moteur PHP `alert-engine.php` traitera l'alerte automatiquement au prochain passage.
---
## ⚖️ Licence
Ce projet est distribué sous licence **GNU Affero General Public License (AGPLv3)**.
*Note : Si vous modifiez ce code pour l'utiliser via un réseau (SaaS), vous devez rendre vos modifications publiques.*