Publié le: 2014-02-26

FreeBSD socket sensor

Sur certains serveurs extrêmement sollicités en terme de réseau, il peut être intéressant de monitorer le nombre de sockets ouverts. Vous trouverez une sonde fonctionnant sous FreeBSD permettant de vérifier que le nombre de sockets ouverts ne dépasse pas la limite du système.

Sonde

#! /bin/sh
# states
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

CUR_SOCKET_NB=$(/sbin/sysctl kern.ipc.numopensockets|awk '{print $2}')
MAX_SOCKET_NB=$(/sbin/sysctl kern.ipc.maxsockets|awk '{print $2}')

SOCKET_PCT=$(echo "$CUR_SOCKET_NB*100/$MAX_SOCKET_NB"|/usr/bin/bc)

if [ "$SOCKET_PCT" -gt 90 ];
then
        echo "Many sockets are opened ($CUR_SOCKET_NB/$MAX_SOCKET_NB) ! Please increase kern.ipc.maxsockets to support charge"
        return $STATE_CRITICAL
elif [ "$SOCKET_PCT" -gt 80 ];
then
        echo "Lot of opened sockets ($CUR_SOCKET_NB/$MAX_SOCKET_NB) ! Be careful the server is charged"
        return $STATE_WARNING
else
        echo "Opened sockets are correct. ($CUR_SOCKET_NB/$MAX_SOCKET_NB)"
        return $STATE_OK
fi

Solution

Augmentez la valeur de kern.ipc.maxsockets avec sysctl. (Attention à la RAM)

sysctl kern.ipc.maxsockets=150000

Pour rendre cette modification permanente, ajoutez la au fichier /etc/sysctl.conf.