Accueil » Supervision » Page 2
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 |
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
Voici une sonde Centreon qui permet de vérifier la présence (et l’exécution) de plusieurs processus python:
#!/bin/bash
# Liste des processus à surveiller
processes=(« processus1.py » « processus2.py » « processus3.py » « processus4.py » « processus5.py » « processus6.py » « processus7.py »)
running_count=0
total_processes=${#processes[@]}
missing_processes=() # Liste des processus manquants
# Vérification de chaque processus
for process in « ${processes[@]} »; do
if pgrep -f « $process » > /dev/null; then
((running_count++))
else
missing_processes+=(« $process »)
fi
done
# Générer l’état final
if [ $running_count -eq $total_processes ]; then
echo « OK: Tous les processus sont actifs | processes_running=$running_count;$total_processes;$total_processes;0;$total_processes »
exit 0
else
missing_list=$(IFS=,; echo « ${missing_processes[*]} ») # Convertir la liste en une chaîne de texte
echo « CRITICAL: $running_count/$total_processes processus sont actifs. Manquant: $missing_list | processes_running=$running_count;$total_processes;$total_processes;0;$total_processes »
exit 2
fi
Voici le script d’une sonde pour vérifier qu’un service est bien actif.
Exemple pour Nginx:
#!/bin/bash
a=`systemctl is-active nginx`
if [ « $a » != « active » ] ; then
echo « KO ==> service nginx DOWN »
exit 2
else
echo « OK ==> service nginx UP »
exit 0
fi
Exemple pour Postgres:
#!/bin/bash
b=`systemctl is-active postgresql.service`
if [ « $b » != « active » ] ; then
echo « KO ==> service postgresql DOWN »
exit 2
else
echo « OK ==> service postgresql UP »
exit 0
fi
Exemple pour en mettant le nom du service en argument du script ($1):
#!/bin/bash
systemctl list-units|grep -i $1 > /dev/null
if [ $? -ne 0 ]
then
echo « KO ==> service $1 introuvable »
exit 2
fi
state=`systemctl is-active $1`
if [ « $state » != « active » ] ; then
echo « KO ==> service $1 DOWN »
exit 2
else
echo « OK ==> service $1 UP »
exit 0
fi
Script pour relancer les services centengine et gorgoned de Centreon (via crontab toutes les x minutes):
#!/bin/bash
# Services à surveiller
SERVICES=(« centengine » « gorgoned »)
# Fichier de log
LOG_FILE= »/var/log/check_services_centreon.log »
# Dossier et fichiers de compteurs
COUNT_DIR= »/var/log/centreon_check_counts »
mkdir -p « $COUNT_DIR »
# Date pour le log
DATE=$(date « +%Y-%m-%d %H:%M:%S »)
for SERVICE in « ${SERVICES[@]} »; do
systemctl is-active –quiet « $SERVICE »
STATUS=$?
if [ $STATUS -ne 0 ]; then
# Incrémentation du compteur
COUNT_FILE= »$COUNT_DIR/${SERVICE}_restarts.count »
if [ ! -f « $COUNT_FILE » ]; then
echo 0 > « $COUNT_FILE »
fi
COUNT=$(cat « $COUNT_FILE »)
COUNT=$((COUNT + 1))
echo « $COUNT » > « $COUNT_FILE »
# Redémarrage du service
systemctl restart « $SERVICE »
echo « $DATE – $SERVICE inactif -> redémarré (compteur = $COUNT) » >> « $LOG_FILE »
else
echo « $DATE – $SERVICE actif » >> « $LOG_FILE »
fi
done