Catégorie : Supervision

16 décembre 2025 /

Script de sauvegarde postgres:

#!/bin/bash
set -o pipefail

LOG= »/var/log/backup_postgres.log »
DATE=$(date ‘+%Y-%m-%d’)
DATE_LOG=$(date ‘+%Y-%m-%d %H:%M:%S’)
FICHIER= »/home/projet/dump/postgres_${DATE}.sql.gz »

# Purge des sauvegardes de plus de 4 jours
find /home/projet/dump -type f -name ‘postgres_*.sql.gz’ -mtime +4 -delete

# Sauvegarde complète compressée
pg_dumpall | gzip > « $FICHIER »
RESULT=$?

# Vérification et écriture dans le log
if [ « $RESULT » -eq 0 ]; then
echo « [$DATE_LOG] Sauvegarde OK » >> « $LOG »
else
echo « [$DATE_LOG] Sauvegarde ÉCHEC (code=$RESULT) » >> « $LOG »
rm -f « $FICHIER »
fi

Sonde Centreon qui vérifie qu’une sauvegarde a bien eu lieu la veille:

#!/bin/bash

LOG= »/var/log/backup_postgres.log »
HIER=$(date -d « yesterday » ‘+%F’)

if grep -q « \[$HIER » « $LOG » && grep « \[$HIER » « $LOG » | grep -q « Sauvegarde OK »; then
echo « OK – Sauvegarde PostgreSQL du $HIER trouvée dans le log »
exit 0
else
echo « CRITICAL – Aucune sauvegarde PostgreSQL OK trouvée pour le $HIER »
exit 2
fi

16 décembre 2025 /

#!/bin/bash

# Liste des conteneurs Docker à surveiller
CONTENEURS=(« conteneur-1 » « conteneur-2 »)

# Compteur de conteneurs en cours d’exécution
NB_CONTENEURS_ACTIFS=0

# Vérification de l’état de chaque conteneur
for conteneur in « ${CONTENEURS[@]} »; do
if docker ps –format ‘{{.Names}}’ | grep -q « ^${conteneur}$ »; then
((NB_CONTENEURS_ACTIFS++))
fi
done

# Analyse du résultat pour Centreon
if [[ $NB_CONTENEURS_ACTIFS -eq ${#CONTENEURS[@]} ]]; then
echo « OK – Tous les conteneurs sont en cours d’exécution. »
exit 0
elif [[ $NB_CONTENEURS_ACTIFS -gt 0 ]]; then
echo « WARNING – Seulement $NB_CONTENEURS_ACTIFS/${#CONTENEURS[@]} conteneur(s) en cours d’exécution. »
exit 1
else
echo « CRITICAL – Aucun des conteneurs n’est en cours d’exécution ! »
exit 2
fi

16 décembre 2025 /

Pour un seul processus python:

#!/bin/bash

# Nombre de processus Python
NOMBRE_PROCESSUS=$(pgrep -fc python)

# Vérification : un seul processus attendu
if [ « $NOMBRE_PROCESSUS » -eq 1 ]; then
echo « OK – 1 seul processus Python actif »
exit 0
else
echo « CRITICAL – $NOMBRE_PROCESSUS processus Python actifs (1 attendu) »
exit 2
fi

Nombre de processus Python État Code
1 OK 0
0 ou > 1 CRITICAL 2

Pour plusieurs processus python (égal ou supérieur à 2):

#!/bin/bash

# Compte le nombre de processus « python »
nb_processus=$(pgrep -fc python)

if [ « $nb_processus » -le 1 ]; then
echo « CRITICAL – Seulement $nb_processus processus Python actifs »
exit 2
else
echo « OK – $nb_processus processus Python actifs »
exit 0
fi

Nombre de processus Python État Code
0 ou 1 CRITICAL 2
≥ 2 OK 0

Points à surveiller:
Si tu as python3 + un module Python cela te fera au moins 2 processus et si le script Python lance des sous-processus tu auras surement des faux positifs possibles

16 décembre 2025 /

Cette sonde Bash sert à surveiller le nombre de fichiers .dat présents dans un répertoire donné:

#!/bin/bash

# Définition des seuils
SEUIL_AVERTISSEMENT=5
SEUIL_CRITIQUE=8

# Définition du répertoire à surveiller
REPERTOIRE= »/home/data/D_IMPORT »

# Vérification de l’existence du répertoire
if [ ! -d « $REPERTOIRE » ]; then
echo « CRITICAL: Répertoire $REPERTOIRE introuvable »
exit 2
fi

# Comptage des fichiers .dat
NOMBRE_FICHIERS=$(find « $REPERTOIRE » -maxdepth 1 -type f -name « *.dat » | wc -l)

# Vérification des seuils
if [ « $NOMBRE_FICHIERS » -gt « $SEUIL_CRITIQUE » ]; then
echo « CRITICAL: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 2
elif [ « $NOMBRE_FICHIERS » -gt « $SEUIL_AVERTISSEMENT » ]; then
echo « WARNING: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 1
else
echo « OK: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 0
fi

Nombre de fichiers .dat État Code
0 à 5 OK 0
6 à 8 WARNING 1
> 8 CRITICAL 2

Et en inversant la logique des seuils:

#!/bin/bash

# Définition des seuils
SEUIL_CRITIQUE=5
SEUIL_AVERTISSEMENT=8

# Définition du répertoire à surveiller
REPERTOIRE= »/home/data/D_IMPORT »

# Vérification de l’existence du répertoire
if [ ! -d « $REPERTOIRE » ]; then
echo « CRITICAL: Répertoire $REPERTOIRE introuvable »
exit 2
fi

# Comptage des fichiers .dat
NOMBRE_FICHIERS=$(find « $REPERTOIRE » -maxdepth 1 -type f -name « *.dat » | wc -l)

# Vérification des seuils (logique inversée)
if [ « $NOMBRE_FICHIERS » -le « $SEUIL_CRITIQUE » ]; then
echo « CRITICAL: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 2
elif [ « $NOMBRE_FICHIERS » -le « $SEUIL_AVERTISSEMENT » ]; then
echo « WARNING: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 1
else
echo « OK: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 0
fi

Nombre de fichiers .dat État Code
0 à 5 CRITICAL 2
6 à 8 WARNING 1
> 8 OK 0
16 décembre 2025 /

Voici une sonde pour afficher la version d’un paquet installé (ici sentinelone) qui affichera un etat OK en permanence:

#!/bin/bash

# Commande pour récupérer la version de SentinelOne
SENTINELONE_VERSION=$(dpkg -l | grep sentinel | awk ‘{print $3}’)

# Vérification si la commande a bien retourné une version
if [[ -z « $SENTINELONE_VERSION » ]]; then
echo « Impossible de récupérer la version de SentinelOne »
else
echo « SentinelOne version $SENTINELONE_VERSION »
fi

# Retour toujours en OK
exit 0