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

Journaliser la bande passante réseau utilisée

Réseau  / Formateur Linux