Linux : journaliser la bande passante réseau utilisée
Vous disposez sur les systèmes Linux de la commande ifstat dont l’objet est de vous fournir les données cumulées utilisées de la bande passante en réception et émission depuis le dernier boot de la machine. Son intérêt est de récupérer des données structurées au format JSON.
Le script de journalisation de la bande passante utilisée
La commande jq permet d’extraire les valeurs renvoyées par la commande ifstat au format JSON. rx et tx désignent respectivement le download (réception côté serveur ) et le upload (transmission/émission côté serveur). Comme le script semble mettre parfois plus d’une seconde, j’ai préféré une temporisation de 5 secondes à l’aide de la commande sleep 5. L’objectif de ce script est de consigner les données collectées dans le fichier /home/lan.audit, dans l’exemple ci-dessous.
#!/bin/bash while true do json=$(ifstat -p eth0 -j) dj=$(date +"%d/%m/%Y %H:%M:%S") eth0=$(echo $json|jq .kernel.eth0) rx_bytes=$(echo $json|jq .rx_bytes) tx_bytes=$(echo $json|jq .tx_bytes) rx_errors=$(echo $json|jq .rx_errors) tx_errors=$(echo $json|jq .tx_errors) rx_dropped=$(echo $json|jq .rx_dropped) tx_dropped=$(echo $json|jq .tx_dropped) echo "$dj $rx_bytes $tx_bytes $rx_errors $tx_errors $rx_dropped $tx_dropped">> /home/lan.audit sleep 5 done
Calcul de la bande passante utilisée
Afin de calculer le débit en Mbits en réception et en transmission, j’utilise la formule suivante :
(tx_bytes_ligne_courante-tx_bytes_ligne_précédente)*8/(1000^2)*((date_courante+heure_courante)-(date_précédente+heure_précédente))*86400