From adfe0ed282fc42e96297a3133ee7963fd72ffb3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Mon, 16 Mar 2026 22:16:39 +0100 Subject: [PATCH] correction de README --- servers/linux/monitoring/README.md | 99 ++++++++++++++---------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/servers/linux/monitoring/README.md b/servers/linux/monitoring/README.md index 98b8dae..c36fe31 100644 --- a/servers/linux/monitoring/README.md +++ b/servers/linux/monitoring/README.md @@ -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`). -* **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. +* **Moteur PHP & Sondes Hybrides :** Traitement performant des alertes en PHP, tout en gardant des sondes système simples (Bash ou PHP). +* **Alertes Intelligentes :** Envoi via **ntfy** (avec tags et priorités) ou **email**, incluant un système de **déduplication** pour éviter le spam. +* **Logs JSONL :** Centralisation au format standard `JSON Lines` dans `/var/log/monitoring/events.jsonl` pour une exploitation facile. +* **Configuration en cascade :** Système de fichiers `.local.conf.php` pour protéger vos réglages lors des mises à jour. +* **Auto-update & Audit :** Mise à jour automatique via manifeste et script d'audit pour détecter les nouvelles options de configuration manquantes. --- ## 📦 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 # 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/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). +* `/opt/monitoring/bin/` : Exécutables (sondes, moteur `alert-engine.php`, updater). +* `/opt/monitoring/lib/` : Bibliothèque partagée (`monitoring-lib.php`). +* `/opt/monitoring/conf/` : Fichiers de configuration PHP. +* `/var/log/monitoring/` : Journal des événements (`events.jsonl`). +* `/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) -Éditez le fichier local (prioritaire sur la config par défaut) : -`nano /opt/monitoring/conf/alert-engine.local.conf` +Ne modifiez pas les fichiers `.conf.php` (risques d'écrasement). Créez vos fichiers locaux : +`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_TOPIC` : Le nom de votre topic. -* `DEST` : L'adresse email de réception. +* `NTFY_TOKEN` & `NTFY_TOPIC`. +* `DEST` (votre 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 : ---- - -## 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 +```bash +php /opt/monitoring/bin/monitoring-update-config.php ``` -## 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` -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. +Le système est conçu pour être piloté par `cron`. Voici la configuration recommandée : +| 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.*