Files
scripts-bash/servers/linux/monitoring
2026-03-17 07:52:27 +01:00
..
2026-03-17 07:46:24 +01:00
2026-03-17 07:46:24 +01:00
2026-03-16 22:14:35 +01:00
2026-03-16 13:42:53 +01:00
2026-03-17 07:52:27 +01:00
2026-03-16 22:16:39 +01:00

🛡️ 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).

# 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 :

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.