Blog

Script bash couteau suisse pour le monitoring

Inscrivez-vous à notre newsletter

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%)

Si cela vous intéresse, voici la source :

#!/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 et 10, par défaut, il s’agit de ens18).

Fabien

Rédacteur Wapeo

D'autres potins intéressants :

[DISPLAY_ULTIMATE_SOCIAL_ICONS]
[DISPLAY_ULTIMATE_SOCIAL_ICONS]
smartphone

Contactez-nous

Nous sommes joignable du lundi au vendredi de 9h à 13h et de 14h à 18h. 

03 20 70 76 79

Inscrivez-vous à notre Newsletter

wapeo-gradient

Pour être certain(e) de ne rater aucun potin !

Veuillez activer le javascript sur cette page pour pouvoir valider le formulaire

Nous avons bien reçu votre message, nous le traiterons dans les meilleurs délais :)