Script Bash couteau suisse pour le monitoring - Promatec Digital
Script Bash couteau suisse pour le monitoring par Promatec Digital | Temps de lecture : 2 minutes

Promatec Digital Blog Oh My Blog ! ...

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

 

Les News les plus populaires !