Catégorie : Bash

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)

31 mai 2017 /

Pour un hôte Linux

Vérifier où sont situé vos scripts dans nrpe.cfg ( /usr/lib/… ou /usr/lib64/…).

 

Vérifier l’espace disque de  /data:

/usr/lib64/nagios/plugins/check_disk -w 10% -c 5% -p /data

 

Vérifier l’état d’un volume Raid:

/usr/lib/nagios/plugins/check_raid.pl -p mdstat

 

Vérifier la date de modification du fichier /ftp/texte.txt :

/usr/lib64/nagios/plugins/check_file_age -w 86400 -c 129600 -f /ftp/texte.txt

1 heure = 3600 secondes
24 heures = 86400 secondes
36 heures = 129600 secondes
7 jours = 604800 secondes
30 jours = 2592000 secondes
6 mois = 15379200 secondes

 

Vérification de processus:

/usr/lib64/nagios/plugins/check_procs -w 80 -c 95 -m CPU -C httpd
/usr/lib64/nagios/plugins/check_procs -w 1:512 -c 1:1024 -C smbd
/usr/lib64/nagios/plugins/check_procs -c 1:1 -C nmbd

-w 1:512 correspond à Warning si le nombre de processus n’est pas entre 1 et 512.
-c 1:1024 correspond à Critical si le nombre de processus n’est pas entre 512 et  1024.
-c 1:1 correspond à Critical sil n’y a pas 1 processus (au min et au max).

 

Surveillance de la Swap:

/usr/lib64/nagios/plugins/check_swap -w 80% -c 40%

 

APT:

/usr/lib64/nagios/plugins/check_apt

-u = fait un apt-get update avant le lancer le script (lancé par l’utilisateur nagios).
-t 120 = timout de 120 sec (le temps de faire un apt-get update).

 

Mysql:

/usr/lib64/nagios/plugins/check_mysql -uworkey -pworkey

 

File d’attente des courriels:

/usr/lib64/nagios/plugins/check_mailq -w 40 -c 50

 

Pour un hôte Windows

 

Charge CPU

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c CheckCPU -a warn=80 crit=90 time=1m time=5m time=15m

 

%  CPU utilisé

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:% Processor Used Total=\Processor(_Total)\% Processor Time' 'warning=value>80' 'critical=value>90' 'perf-config=*(suffix:none)'

 

% CPU Libre

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:% Processor Free Total=\Processor(_Total)\% Idle Time' 'warning=value<20' 'critical=value<10' 'perf-config=*(suffix:none)'

 

RAM utilisée en Mo

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c Check_Memory -a show-all type=physical 'warning=used>1536M' 'critical=used>1792M'

 

RAM utilisée en %

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c Check_Memory -a show-all type=physical 'warning=used>80%' 'critical=used>90%'

 

RAM libre en Mo

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c Check_Memory -a show-all type=physical 'warning=free<512M' 'critical=free<256M'

 

RAM libre en %

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c Check_Memory -a show-all type=physical 'warning=free<20%' 'critical=free<10%'

 

Performance disque Lecture en % de C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:C: % Read Time=\LogicalDisk(C:)\% Disk Read Time' 'warning=value>50' 'critical=value>75' 'perf-config=*(suffix:none)'

 

Performance disque Lecture en Bits/Sec de C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:C: Read Bytes/sec=\LogicalDisk(C:)\Disk Read Bytes/sec' 'warning=value>100' 'critical=value>500' 'perf-config=*(suffix:none)'

 

Performance disque écriture en % de C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:C: % Write Time=\LogicalDisk(C:)\% Disk Write Time' 'warning=value>50' 'critical=value>75' 'perf-config=*(suffix:none)'

 

Performance disque écriture en Bits/Sec de C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:C: Write Bytes/sec=\LogicalDisk(C:)\Disk Write Bytes/sec' 'warning=value>100' 'critical=value>500' 'perf-config=*(suffix:none)'

 

File d’attente IO sur C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:C: Queue Length=\LogicalDisk(C:)\Current Disk Queue Length' 'warning=value>10' 'critical=value>20' 'perf-config=*(suffix:none)'

 

Nombre d’IO par Seconde sur C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:C: Split IO/sec=\LogicalDisk(C:)\Split IO/sec' 'warning=value>10' 'critical=value>20' 'perf-config=*(suffix:none)'

 

Espace libre en Go sur C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a drive=C: 'warning=free<10G' 'critical=free<5G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free} free / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace libre en % sur C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a drive=C: 'warning=free<20%' 'critical=free<10%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free_pct}% free / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace libre en Go sur tous les disques

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a 'warning=free<10G' 'critical=free<5G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free} free / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace libre en % sur tous les disques

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a 'warning=free<20%' 'critical=free<10%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free_pct}% free / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace libre en Go sur tous les disques sauf disquette et CDROM

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a "filter=type in ('fixed')" exclude='System Reserved' 'warning=free<10G' 'critical=free<5G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free} free / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace libre en % sur tous les disques sauf disquette et CDROM

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a "filter=type in ('fixed')" exclude='System Reserved' 'warning=free<20%' 'critical=free<10%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free_pct}% free / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace libre en Go sur tous les disques sauf E:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a exclude='E:\' 'warning=free<10G' 'critical=free<5G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free} free / ${size} total}' top-syntax='${status}: ${problem_list}'

(pour deux disques: exclude=’E:\’ exclude=’P:\’)

 

Espace libre en Go sur tous les disques sauf disquette, CDROM et  E:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a "filter=type in ('fixed')" exclude='System Reserved' exclude='E:\' 'warning=free<10G' 'critical=free<5G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free} free / ${size} total}' top-syntax='${status}: ${problem_list}'

(pour deux disque=> exclude=’E:\’ exclude=’P:\’)

 

Espace libre en % sur tous les disques sauf E:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a exclude='E:\' 'warning=free<20%' 'critical=free<10%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free_pct}% free / ${size} total}' top-syntax='${status}: ${problem_list}'

(pour deux disque=> exclude=’E:\’ exclude=’P:\’)

 

Espace libre en %   sur tous les disques sauf disquette, CDROM et E:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a exclude='E:\' "filter=type in ('fixed')" exclude='System Reserved' 'warning=free<20%' 'critical=free<10%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${free_pct}% free / ${size} total}' top-syntax='${status}: ${problem_list}'

(pour deux disque=> exclude=’E:\’ exclude=’P:\’)

Espace utilisé en Go sur C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a drive=C: 'warning=used>50G' 'critical=used>100G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${used} used / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace utilisé en % sur C:\

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a drive=C: 'warning=used>80%' 'critical=used>90%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${used_pct}% used / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace utilisé en Go sur tous les disques

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a 'warning=used>50G' 'critical=used>100G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${used} used / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace utilisé en Go sur tous les disques sauf disquette et cdrom

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a "filter=type in ('fixed')" exclude='System Reserved' 'warning=used>50G' 'critical=used>100G' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${used} used / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace utilisé en % sur tous les disques

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a 'warning=used>80%' 'critical=used>90%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${used_pct}% used / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Espace utilisé en % sur tous les disques sauf disquette et cdrom

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_drivesize -a "filter=type in ('fixed')" exclude='System Reserved' 'warning=used>80%' 'critical=used>90%' show-all 'perf-config=*(unit:G)' detail-syntax='{${drive_or_name} ${used_pct}% used / ${size} total}' top-syntax='${status}: ${problem_list}'

 

Nombre de fichier dans C:\Repertoire

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_files -a path='C:\\Repertoire' pattern=*.* 'warning=count>500' 'critical=count>1000' top-syntax='${status}: ${problem_count}/${count} files' 'empty-state=ok'

 

Vérifie si au moins un fichier à une taille supérieure à 500Mo dans C:\, critique si oui

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_files -a path='C:\\' pattern=*.* 'filter=size gt 500M' 'critical=count>0' 'detail-syntax=%(filename): %(size)' 'empty-state=ok'

 

Vérifie la présence du fichier C:\test (il ne doit pas être vide)

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_files -a path='C:\\' pattern='test*' max-depth=1 'critical=count<1' 'empty-state=critical'

 

Vérifier la présence du répertoire C:\Users

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_files -a file="c:\\" "max-depth=2" "filter=filename='Users'" "critical=count<1" "empty-state=CRITICAL" "empty-syntax=CRITICAL - Cannot find folder Users"

 

Vérifie que les fichiers dans C:\Repertoire ont été modifié depuis moins de deux heures

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_files -a path='C:\\Repertoire' pattern=*.* 'filter=written > -2h' 'critical=count<1' 'empty-state=critical'

 

Vérifie que les fichiers dans C:\Repertoire ont été modifié depuis plus de deux heures

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_files -a path='C:\\Repertoire' pattern=*.* 'filter=written < -2h' 'critical=count>0' top-syntax='${status}: ${problem_count}/${count} files' 'empty-state=ok'

 

Particularité « path= » et « pattern= »:

Si vous vouliez seulement spécifier un fichier:
path='C:\\test.txt'

Mais si il est possible que le fichier n’existe pas, on utilisera alors « pattern= ».

path='C:\\' pattern='test.txt'

 

Surveillance de la carte réseau en Bits reçu par sec

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:Bytes Received/sec=\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Received/Sec' 'warning=value>786432000' 'critical=value>943718400' 'perf-config=*(suffix:none)'

 

Surveillance de la carte réseau en Bits envoyé par sec

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:Bytes Sent/sec=\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Sent/Sec' 'warning=value>786432000' 'critical=value>943718400' 'perf-config=*(suffix:none)'

 

Nombre de paquet envoyé en erreur par la carte réseau

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:Packets Outbound Errors=\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Packets Outbound Errors' 'warning=value>0' 'critical=value>0' 'perf-config=*(suffix:none)'

 

Nombre de paquet reçu en erreur par la carte réseau

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:Packets Received Errors=\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Packets Received Errors' 'warning=value>0' 'critical=value>0' 'perf-config=*(suffix:none)'

 

Nombre de paquet envoyé en erreur par la carte réseau et jeté (discarded)

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:Packets Outbound Discarded=\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Packets Outbound Discarded' 'warning=value>0' 'critical=value>0' 'perf-config=*(suffix:none)'

 

Nombre de paquet reçu en erreur par la carte réseau et jeté (discarded)

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c check_pdh -a 'counter:Packets Received Discarded=\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Packets Received Discarded' 'warning=value>0' 'critical=value>0' 'perf-config=*(suffix:none)'

 

Version Windows de l’OS

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

 

File d’attente de l’imprimante « Microsoft XPS Document Writer »

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -c CheckCounter -a 'Counter:XPS Document Writer=\Print Queue(Microsoft XPS Document Writer)\Jobs' MaxWarn=5 MaxCrit=15 ShowAll

 

Uptime, critique si plus d’un jour

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c Check_Uptime -a show-all 'warning=uptime>1d' 'critical=uptime>1d'

 

Uptime, critique si moins d’un jour

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c CheckUpTime -a MinCrit=1d

 

Surveillance de l’activité du service Spooler, critique si il n’est pas démarré

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_service -a 'service=spooler'

 

Surveillance de l’arrêt du service Spooler, critique si il est  démarré

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_service -a 'service=spooler' "ok= state = 'stopped'" "warning=not state = 'stopped'" "critical=not state = 'stopped'" "perf-config=*(ignored:true)"

 

Vérifie si tous les services activés au demarrage sont bien démarré

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_service

 

Vérifie si les services activé au demarrage sont bien démarré, sauf le service spooler

/usr/local/nagios/libexec/check_nrpe -H 10.148.14.212 -t 30 -c check_service -a exclude=Spooler

3 janvier 2017 /

Je reprend l’exemple d’un fichier texte contenant une multitude d’identifiants.
Des identifiants qui commencent par 4 chiffres puis 2 lettres (exemple: 1502KQ) respecte le standard voulu, les autres non.

Nous souhaitons donc isoler les identifiants ne correspondant pas à ce standard.

Pour cela, crée un fichier, test.txt par exemple, et on y inscrit cette liste d’identifiants:

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
ADMIN01
ADMIN26
BIZOT
4569DF
BOURGAINET
CHACONNI
4126NR
4685ET
D?ALES
5016NW
DESOUSASSE06
FITGERERT
FRANCINETTE

Pour afficher les occurrences qui correspondent à notre expression régulière, [0-9]{4}[a-zA-Z]{2} (pour 4 chiffres et 2 lettres en minuscule ou majuscule):

egrep "[0-9]{4}[a-zA-Z]{2}" test.txt

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
4569DF
4126NR
4685ET
5016NW

Pour afficher au contraire les occurrences qui correspondent pas à notre expression régulière, on rajoute l’option « -v »:

egrep -v "[0-9]{4}[a-zA-Z]{2}" test.txt

ADMIN01
ADMIN26
BIZOT
BOURGAINET
CHACONNI
D?ALES
DESOUSASSE06
FITGERERT
FRANCINETTE

Note: On peut également utiliser grep avec l’option « -E » qui forcer grep à se comporter comme egrep:

grep -E "[0-9]{4}[a-zA-Z]{2}" test.txt

Autres exemples:

Recherche les mots dont b n’est pas suivi de o:

egrep "b[^o]" test.txt

Recherche toute ligne qui commence par « De: », « Sujet: » ou « Date: »:

egrep "^(De|Sujet|Date):" test.txt

Recherche et affiche chaque ligne du fichier test.txt qui contient l’occurence bonjour ou Bonjour, les numéros de ligne sont également affichés (option -n):

egrep -n "[bB]onjour" test.txt

Liste toute les lignes du fichier test.txt commençant avec le caractère $:

egrep "^\\$" test.txt

Liste tous les fichiers et répertoires dans le répertoire courant qui ne se terminent pas avec .txt:

ls -l | egrep "[^.txt]$"

Liste tous les fichiers et répertoires dans le répertoire courant qui se terminent avec .txt:

ls -l | egrep "[.txt]$"

Affiche uniquement les lignes dont le numéro de téléphone commence par un 1:

egrep "^1" test.txt

Recherche les lignes avec un 2 à la seconde position et n’importe quel caractère en première position:

egrep "^.2" test.txt

Recherche les lignes dont le premier caractère est différent de 1:

egrep "^[^1]" test.txt

19 octobre 2016 /

Voici méthode qui consiste à démarrer non pas init comme premier processus, mais un shell.

Tout d’abord, au démarrage, quand le menu de grub apparaît (appuyez sur echap si il n’apparaît pas), sélectionnez la ligne de boot sur lequel le système démarre habituellement:

screenshot_centos7-0_starmate_2016-10-15_191840

On va maintenant modifier la ligne de démarrage du système en appuyant sur la touche « e« :

screenshot_centos7-0_starmate_2016-10-15_192623

Sur la ligne commençant par « linux16 /vmlinux….. », nous allons ajouter à la fin « init=/bin/sh » et supprimer « rhgb quiet » :

screenshot_centos7-0_starmate_2016-10-15_194047

On valide les paramètres et on boot en appuyant sur les touches « Ctrl-x » ou bien avec la touche F10.

On arrive très vite dans un shell simple sans mot de passe et avec les droits root:

screenshot_centos7-0_starmate_2016-10-15_193200

On va tout d’abord charger la politique SELinux existante avec cette commande (le -i correspond à « initial policy load ») :

/usr/sbin/load_policy -i

Ensuite, on va remonter « / » en lecture-écriture car il est monté en lecture seule :

mount -o remount,rw /

On peut maintenant passer à la modification du mot de passe root :

passwd root

On ré-étiquette le système (SELinux) pour le prochain redémarrage :

touch /.autorelabel

Il ne reste plus qu’a redémarrer votre CentOS7/RedHat7 pour avoir vous connecter avec le nouveau mot de passe:

exec /sbin/init

12 octobre 2016 /

Un processus zombie est un processus qui a été lancé par un processus parent et qui s’est terminé sans que le processus père ne soit mis au courant.

Le système a donc vidé la mémoire et les ressources utilisées par le processus zombie.
La table des processus garde cependant une trace de celui-ci, (attendant simplement le moment où le processus parent demandera au système d’exploitation l’état de son processus fils) cela crée un processus zombie.

Trop de processus zombies provoque un gaspillage énorme de ressources et peut aussi amener à ne plus pouvoir lancer de nouveaux programmes si le nombre de processus max est atteint au sein du système.

Vous pouvez identifier le nombre maximal de processus:

cat /proc/sys/kernel/pid_max

32768

Généralement, c’est la valeur 32768 qui apparaît.

Pour éviter ce genre de situation, tout processus bien écrit ne devrait pas créer de zombie et par extension, il n’est donc pas normal d’en trouver.
Pour supprimer un zombie, vous devez tuer le processus père.

Attention tout de même, le fait de tuer un processus parent peut rendre votre système instable et vous obliger à redémarrer.

Pour vérifier l’état des processus, on va utiliser la commande ps:

ps aux | grep Z

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
starmate 7294 0.0 0.0 0 0 pts/9 Z 20:47 0:00 [08_zombie]
starmate 7282 0.0 0.0 11812 2316 pts/9 S+ 20:48 0:00 grep --colour=auto Z

La colonne STAT (en gras) affiche un Z si le processus est dans l’état zombie.
C’est le cas du processus qui a le PID 7294.

Pour connaître le processus père, il suffit d’utiliser la commande pstree:

pstree -p -s 7294

init(1)───mdm(1354)───mdm(1381)───init(2525)───entropia(3509)───bash(3682)───08_zombie(7293)───08_zombie(7294)

On peut voir que le processus père est le programme 08_zombie dont le PID est 7293.
Pour tuer ce programme, on utilise la commande kill:

kill -9 7293

Bravo, vous avez tué votre premier zombie.