Catégorie : Supervision

16 décembre 2025 /

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

16 décembre 2025 /

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

16 décembre 2025 /

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

6 juin 2017 /

Nous  allons voir comment permettre à un serveur Centreon de surveiller des ESXi avec le script check_vmware_api.pl.

Installation des dépendances

yum install -y openssl-devel perl-Archive-Zip perl-Class-MethodMaker uuid-perl perl-SOAP-Lite perl-XML-SAX perl-XML-NamespaceSupport perl-XML-LibXML perl-MIME-Lite perl-MIME-Types perl-MailTools perl-TimeDate uuid libuuid perl-Data-Dump perl-UUID cpan libxml2-devel perl-libwww-perl perl-Test-MockObject perl-Test-Simple perl-Monitoring-Plugin perl-Class-Accessor perl-Config-Tiny gcc python perl-Nagios-Plugin

Installation du VMware vSphere Perl SDK

L’installation du « VMware vSphere Perl SDK » est indispensable.
Vous pourrez le télécharger après vous êtes créé un compte VMware.

vSphere SDK for Perl 5.5U2

https://my.vmware.com/web/vmware/details?downloadGroup=SDKPERL552&productId=353

vSphere SDK for Perl 6.0U2

https://my.vmware.com/web/vmware/details?downloadGroup=PERLSDK60U2&productId=610

vSphere Perl SDK 6.5

https://my.vmware.com/web/vmware/details?downloadGroup=VS-PERL-SDK65&productId=614

Une fois téléchargé, on décompresse l’archive et on installe le SDK:

tar xvf VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.tar.gz
cd vmware-vsphere-cli-distrib/
perl vmware-install.pl

Installation des module Perl

Perl aura besoin de plusieurs module pour pouvoir exécuter le script check_vmware_api.pl.

Si vous êtes derrière un proxy, il faudra le déclarer avant d’installer les modules:

perl -MCPAN -e shell
o conf init /proxy/
Your ftp_proxy?  http://IP:PORT/
Your http_proxy?  http://IP:PORT/
Your no_proxy?  http://IP:PORT/
Your proxy user id?
o conf commit

On peut maintenant installer nos modules:

perl -MCPAN -e 'install Params::Validate'
perl -MCPAN -e 'install Nagios::Plugin'
perl -MCPAN -e 'install Monitor::Plugin'
perl -MCPAN -e 'install Monitoring::Plugin'
perl -MCPAN -e 'install Math::Calc::Units'
perl -MCPAN -e 'install Config::Tiny'

Installation de la commande check_vmware_api.pl

https://github.com/op5/check_vmware_api

cd /tmp
wget https://github.com/op5/check_vmware_api/archive/master.zip
unzip master.zip
cd check_vmware_api-master/
mv check_vmware_api.pl /usr/lib/nagios/plugins/

Test du script

/usr/lib/nagios/plugins/check_vmware_api.pl

Usage: check_vmware_api.pl -D <data_center> | -H <host_name> [ -C <cluster_name> ] [ -N <vm_name> ]
-u <user> -p <pass> | -f <authfile>
-l <command> [ -s <subcommand> ] [ -T <timeshift> ] [ -i <interval> ]
[ -x <black_list> ] [ -o <additional_options> ]
[ -t <timeout> ] [ -w <warn_range> ] [ -c <crit_range> ]
[ -V ] [ -h ]

Missing argument: command

Le script fonctionne, nous pouvons donc essayer d’interroger notre ESXi:

/usr/local/nagios/libexec/check_vmware_api.pl -H 192.168.122.64 -u utilisateur -p mot_de_passe -l cpu -s usage

Commandes à configurer dans Centreon

check_esx_vmfs

$USER1$/check_vmware_api.pl -D $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$  -l vmfs -o used -s $_SERVICEDATASTORENAME$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie le niveau d’utilisation du datastore

check_esx_cpu

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l cpu -s usage -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge CPU de l’ESXi – Argument : niveau WARNING et CRITICAL (en %)

check_esx_health

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l runtime -s health

Vérifie la santé du serveur ESXi

check_esx_issues

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l runtime -s issues

Vérifie les problèmes du serveur ESXi

check_esx_status

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l runtime -s status

Vérifie l’état du serveur ESXi

check_esx_mem

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l mem -s usage -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge mémoire de l’ESXi

check_esx_swap

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l mem -s swap -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge mémoire de l’ESXi

check_esx_io_read

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l io -s read -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie les entrées/sorties en lecture de l’ESXi

check_esx_io_write

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l io -s write -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie les entrées/sorties en écriture de l’ESXi

check_esx_net

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l net -s usage -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge réseaux de l’ESXi – Argument : niveau WARNING et CRITICAL (en Kbps)

2 juin 2017 /

Pour utiliser la commande check_nrpe du serveur Centreon sur un poste Windows, nous devons installer NSCLIENT++ avec la configuration op5.

 

 

On lance l’installation sur l’hôte Windows à monitorer

 

On va donc choisir « op5 » à la place de « Generic », puis on clique sur « Next »

 

 

On choisit « Complete » puis on clique sur « Next »

 

 

On clique sur « Next »

 

 

On autorise l’adresse ip du serveur Centreon, puis on clique sur « Next »

 

On clique sur « Install »

 

 

On clique sur « FInish »

 

Une fois terminée, la commande check_nrpe du serveur Centreon marchera sur le client Windows.

On peut le vérifier avec cette commande:

/usr/local/nagios/libexec/check_nrpe -H 192.168.122.174

I (0.5.0.62 2016-09-14) seem to be doing fine...

Il faudra toutefois adapter la commande qui sera lancée par check_nrpe pour qu’elle soit « Windows friendly« .

/usr/local/nagios/libexec/check_nrpe -H 192.198.122.174  -c Check_OS_Version -a 'perf-config=*(ignored:true)'

OK: Windows Server 2016 Technical Preview (10.0.14393)