remonter vers le haut
Script Bash couteau suisse pour le monitoring par Promatec Digital | Temps de lecture : 3 minutes
Partager sur Facebook Partager sur Twitter Partager sur Linkedin
Contactez l'Agence Web Promatec Digital

Blog de L'Agence Web Promatec Digital WordPress, WooCommerce, SEO, Optimisation ...

Il est parfois utile d’avoir un petit script en bash permettant de remonter des infos intéressantes sur un serveur. Comme par exemple la version de PHP, Apache ou bien encore des infos sur les CPUs, la RAM, l’espace disque, le réseau, les connexions etc…

Voila le résultat du script exécuté sur une Debian 10

#Architecture: Linux ns321077 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux
#PHP:  PHP 7.3.14-1~deb10u1 (cli) (built: Feb 16 2020 15:07:23) ( NTS )
#Apache:  Server version: Apache/2.4.38 (Debian) (Server built: 2019-10-15T19:53:42)
#MySQL:  mysql Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
#Postfix:  mail_version = 3.4.8 (mail_release_date = 20191124)
#Network: gateway xxx.xxx.xx.x
#Interface: ens18 62:ef:70:92:d5:aa
#Memory Usage: 516/1995MB (25.86%)
#CPU physical : 1
#vCPU : 2
#CPU load: 0.01 0.02 0.00 1/143 28770
#CPU Usage: 3%
#Connexions TCP UDP: 1  ESTABLISHED / 2  TIME_WAIT
#Last reboot: démarrage système 2020-01-21 09:55
#LVM use: yes
#Disk Usage: 22/96GB (24%)

Voici la source du script :

#!/bin/bash
echo ‘#Architecture:’ `uname -a`
echo ‘#PHP: ‘ `php -v | grep PHP -m 1`
echo ‘#Apache: ‘ `/usr/sbin/apache2 -v | grep version -m 1` ‘(‘`/usr/sbin/apache2 -v | grep built -m 1`’)’
echo ‘#MySQL: ‘ `mysql -V`
echo ‘#Postfix: ‘ `postconf -d | grep -m 1 mail_version` ‘(‘`postconf -d | grep -m 1 mail_release_date`’)’
echo “#Network:” `ifconfig | grep -m 1 “inet adr”` `cat /etc/network/interfaces | grep gateway`

IFACE=ens18
read MAC </sys/class/net/$IFACE/address
echo “#Interface:” $IFACE $MAC

free -m | awk ‘NR==2{printf “#Memory Usage: %s/%sMB (%.2f%%)\n”, $3,$2,$3*100/$2 }’
echo ‘#CPU physical :’ `cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l`
grep ^cpu\\scores /proc/cpuinfo | uniq |  awk ‘{print “#vCPU : ” $4}’
echo ‘#CPU load:’ `cat /proc/loadavg`

DELAY=${1:-2}

function getstat() {
    grep ‘cpu ‘ /proc/stat | sed -e ‘s/  */x/g’ -e ‘s/^cpux//’
}

function extract() {
    echo $1 | cut -d ‘x’ -f $2
}

function change() {
    local e=$(extract $ENDSTAT $1)
    local b=$(extract $STARTSTAT $1)
    local diff=$(( $e – $b ))
    echo $diff
}

STARTSTAT=$(getstat)

sleep $DELAY

#Record the end statistics

ENDSTAT=$(getstat)

USR=$(change 1)
SYS=$(change 3)
IDLE=$(change 4)
IOW=$(change 5)

ACTIVE=$(( $USR + $SYS + $IOW ))
TOTAL=$(($ACTIVE + $IDLE))
PCT=$(( $ACTIVE * 100 / $TOTAL ))

echo “#CPU Usage: $PCT%”
echo ‘#Connexions TCP UDP:’ `netstat -ntu | grep ESTAB | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr | wc -l` ‘ ESTABLISHED /’ `netstat -ntu | grep TIME_WAIT | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr | wc -l` ‘ TIME_WAIT’

echo ‘#Last reboot:’ `who -b`

if [ -f “/sbin/lvdisplay” ]; then
        echo “#LVM use: yes”;
else
        echo “#LVM use: no”;
fi

df -h | awk ‘$NF==”/”{printf “#Disk Usage: %d/%dGB (%s)\n”, $3,$2,$5}’


A noter, remplacez la valeur ens18 de la variable IFACE par votre interface (sous Debian 9 -10 – 11 ; par défaut, il s’agit de ens18).

Ajouter le script au monitoring Nagios

Pour aller un peut plus loin sur l’usage de ce script, si vous disposez d’un serveur Nagios pour monitorer vos VMs, il serait intéressant de remonter ces informations dans votre Nagios.

Pour ce faire, sur la VM à monitorer, modifiez le fichier nrpe.cfg :

$ nano /etc/nagios/nrpe.cfg

Ajoutez la ligne ci dessous dans la liste des commandes (votre script est placé sur ce chemin /usr/lib/nagios/plugins/check_server_infos)

command[check_server_infos]=/usr/lib/nagios/plugins/check_server_infos

Redémarrez le service Nagios

$ service nagios-nrpe-server reload

Enfin, sur le serveur Nagios, dans la partie “define service” du service, appelez la commande “check_server_infos” dans le fichier /usr/local/nagios/etc/objects/services.cfg :

define service {
  use generic-service-mail
  host xxxxxxxxx
  service_description Serveur Infos
  check_command check_nrpe!check_server_infos
}

Puis vous pouvez reloader le serveur Nagios

$ service nagios-nrpe-server reload

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *