Files
scripts-bash/servers/linux/monitoring
2026-03-16 15:15:43 +01:00
..
2026-03-16 15:15:43 +01:00
2026-03-16 14:28:56 +01:00
2026-03-16 14:24:53 +01:00
2026-03-16 13:42:53 +01:00
2026-03-16 15:15:43 +01:00

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.

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

*/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).