90 lines
3.5 KiB
Markdown
90 lines
3.5 KiB
Markdown
# 🛡️ 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 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**.
|
|
|
|
## 🚀 Fonctionnalités clés
|
|
|
|
* **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 un script Bash qui configure l'environnement et installe les dépendances nécessaires (PHP, curl).
|
|
|
|
```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
|
|
|
|
```
|
|
|
|
### Structure du système :
|
|
|
|
* `/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
|
|
|
|
Le système utilise des fichiers PHP pour la configuration afin de permettre une logique dynamique.
|
|
|
|
### 1. Alertes (ntfy / Mail)
|
|
|
|
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`
|
|
|
|
Éditez le fichier local pour renseigner :
|
|
|
|
* `NTFY_TOKEN` & `NTFY_TOPIC`.
|
|
* `DEST` (votre email de réception).
|
|
|
|
### 2. Audit de configuration
|
|
|
|
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
|
|
|
|
```
|
|
|
|
---
|
|
|
|
## 🕒 Planification (Crontab)
|
|
|
|
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` |
|
|
|
|
---
|
|
|
|
## 🛠️ Développer une nouvelle sonde
|
|
|
|
Le système est agnostique. Pour ajouter un check :
|
|
|
|
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.*
|