Suite à la demande de Vivien (
https://lafibre.info/1gb-free/serveur-iperf3-chez-free/msg720432/#msg720432), j'ai bricolé un petit truc pour tracer les graphes iperf via munin.
Comme je ne désire pas tester les performances toutes les 5 mn, le script est coupé en 2 :
- une partie fait le test de vitesse et écrit le résultat toutes les 30 mn,
- l'autre partie est gérée par munin.
Partie 1 : Test de vitesse :
iperf_munin.sh
#!/bin/bash
sleep $[ ( $RANDOM % 20 ) + 15 ]s
down=`iperf3 -f m -c bouygues.iperf.fr -p 5206 -6 -R -P8 -O 2 -t 8\
| grep Mbits \
| cut -d ' ' -f 14 \
| sed '{$!d;}'`
if [ "$down" = "" ]
then
exit
else
echo "down.value $down" > /etc/munin/iperf.down
fi
up=`iperf3 -f m -c bouygues.iperf.fr -p 5206 -6 -P4 -O 2 -t 10\
| grep Mbits \
| cut -d ' ' -f 13 \
| sed '{$!d;}'`
if [ "$up" = "" ]
then
exit
else
echo "up.value $up" > /etc/munin/iperf.up
fi
Ce dernier est placé dans un cron pour être lancé toutes les 30 mn :
7,37 * * * * /usr/bin/iperf_munin.sh > /dev/null 2>&1
Partie 2 : Munin
Il faut ensuite ajouter le script suivant à Munin :
#!/bin/bash
#
# iperf_ munin grabber script
# use it with iperf_munin.sh and set it with a 30mn cronjob
# 2019 moondark
if [ "$1" = "config" ]; then
echo "graph_title iperf to bouygues.iperf.fr"
echo 'graph_vlabel Mbits/sec'
echo 'graph_args --base 1000 --lower-limit 0 --upper-limit 1000 --rigid --units-exponent 2'
echo 'graph_category network'
echo 'graph_period second'
echo "graph_info This instance of iperf measures the transmit speed to bouygues.iperf.fr"
echo 'down.label DownSpeed'
echo 'down.draw AREA'
echo 'up.label UpSpeed'
echo 'up.draw LINE1'
else
echo "$(</etc/munin/iperf.down)"
echo "$(</etc/munin/iperf.up)"
fi
L'avantage de séparer en deux, c'est que le test n'est pas fait directement par munin.
C'est également disponible sur
GithubSi vous savez/voyez comment améliorer ça, je suis preneur.