root / plugins / network / multibandwidth @ 1bed50bb
Historique | Voir | Annoter | Télécharger (3,07 ko)
| 1 | 26e9009d | Jose Manuel Febrer Cortés | #!/bin/sh |
|---|---|---|---|
| 2 | |||
| 3 | 1bed50bb | Jose Manuel Febrer Cortés | . "$MUNIN_LIBDIR/plugins/plugin.sh" |
| 4 | |||
| 5 | 26e9009d | Jose Manuel Febrer Cortés | : <<=cut |
| 6 | |||
| 7 | =head1 NAME |
||
| 8 | |||
| 9 | multibandwidth - Plugin to monitor the bandwidth between localhost and serveral hosts. |
||
| 10 | |||
| 11 | =head1 APPLICABLE SYSTEMS |
||
| 12 | |||
| 13 | f679a922 | Jose Manuel Febrer Cortés | All systems with “bash”, and “munin” |
| 14 | 26e9009d | Jose Manuel Febrer Cortés | |
| 15 | =head1 REQUIREMENTS |
||
| 16 | |||
| 17 | bing installed. |
||
| 18 | |||
| 19 | You can install bing by using (Ubuntu/Debian): apt-get install bing |
||
| 20 | |||
| 21 | =head1 CONFIGURATION |
||
| 22 | |||
| 23 | The following is the default configuration |
||
| 24 | |||
| 25 | [multibandwidth] |
||
| 26 | user root |
||
| 27 | env.hosts example.org example2.org example3.org |
||
| 28 | env.samples 10 |
||
| 29 | 1bed50bb | Jose Manuel Febrer Cortés | env.small_packet_size 44 |
| 30 | env.big_packet_size 108 |
||
| 31 | 26e9009d | Jose Manuel Febrer Cortés | |
| 32 | - env.hosts explanation: hostname or IP of the hosts to calculate the bandwidth. |
||
| 33 | |||
| 34 | - env.samples explanation: Reset stats after sending samples ECHO_REQUEST packets. |
||
| 35 | |||
| 36 | f679a922 | Jose Manuel Febrer Cortés | - env.small_packet_size explanation: Specifies the number of data bytes to be sent in the small |
| 37 | packets. The default and minimum value is 44. |
||
| 38 | 26e9009d | Jose Manuel Febrer Cortés | |
| 39 | f679a922 | Jose Manuel Febrer Cortés | - env.big_packet_size explanation: Specifies the number of data bytes to be sent in the big |
| 40 | packets. The default is 108. The size should be chosen so that big packet roundtrip times |
||
| 41 | are long enough to be accurately measured. |
||
| 42 | 26e9009d | Jose Manuel Febrer Cortés | |
| 43 | |||
| 44 | =head1 MAGIC MARKERS |
||
| 45 | |||
| 46 | #%# capabilities=autoconf |
||
| 47 | |||
| 48 | =head1 VERSION |
||
| 49 | |||
| 50 | 1.1.17 |
||
| 51 | |||
| 52 | =head1 AUTHOR |
||
| 53 | |||
| 54 | Jose Manuel Febrer Cortés <https://www.linkedin.com/in/jfebrer/> |
||
| 55 | f679a922 | Jose Manuel Febrer Cortés | Marco Bertola’s help <https://www.linkedin.com/in/bertolamarco/> |
| 56 | 26e9009d | Jose Manuel Febrer Cortés | |
| 57 | =head1 LICENSE |
||
| 58 | |||
| 59 | GPLv2 |
||
| 60 | |||
| 61 | =cut |
||
| 62 | |||
| 63 | |||
| 64 | |||
| 65 | case $1 in |
||
| 66 | config) |
||
| 67 | echo graph_title MultiBandwidth |
||
| 68 | 1bed50bb | Jose Manuel Febrer Cortés | echo 'graph_vlabel bps' |
| 69 | f679a922 | Jose Manuel Febrer Cortés | echo 'graph_args --base 1024 -l 0' |
| 70 | echo 'graph_scale yes' |
||
| 71 | 26e9009d | Jose Manuel Febrer Cortés | echo 'graph_category network' |
| 72 | echo 'graph_info This graph shows the bandwidth between localhost and serveral hosts' |
||
| 73 | for host in $hosts; do |
||
| 74 | 1bed50bb | Jose Manuel Febrer Cortés | fieldname="host_$(clean_fieldname "$host")" |
| 75 | echo "$fieldname.label $host" |
||
| 76 | echo "$fieldname.draw LINE2" |
||
| 77 | echo "$fieldname.info Bandwidth statistics for $host" |
||
| 78 | 26e9009d | Jose Manuel Febrer Cortés | done |
| 79 | exit 0;; |
||
| 80 | autoconf) |
||
| 81 | if hash bing 2>/dev/null; then |
||
| 82 | echo 'yes' |
||
| 83 | exit 0; |
||
| 84 | else |
||
| 85 | echo 'no (bing not installed)' |
||
| 86 | exit 0; |
||
| 87 | fi |
||
| 88 | |||
| 89 | esac |
||
| 90 | |||
| 91 | |||
| 92 | #Calculating the bandwidth |
||
| 93 | for host in $hosts; do |
||
| 94 | 1bed50bb | Jose Manuel Febrer Cortés | fieldname="host_$(clean_fieldname "$host")" |
| 95 | printf "$fieldname.value "; |
||
| 96 | f679a922 | Jose Manuel Febrer Cortés | |
| 97 | SPEED=$(timeout 6 bing localhost "$host" -n -c 1 -e "$samples" -s "$small_packet_size" -S "$big_packet_size" 2>/dev/null \ |
||
| 98 | |grep "estimated link" -A 2 \ |
||
| 99 | | grep bps \ |
||
| 100 | | awk '{print $2}' \
|
||
| 101 | | cut -d "b" -f1) |
||
| 102 | |||
| 103 | if (echo "$SPEED" | grep -q "M"); then |
||
| 104 | 1bed50bb | Jose Manuel Febrer Cortés | echo "$SPEED" | awk '{a+=$1} END{print a*1000000}'
|
| 105 | f679a922 | Jose Manuel Febrer Cortés | elif (echo "$SPEED" | grep -q "K"); then |
| 106 | echo "$SPEED" | awk '{a+=$1} END{print a*1000}'
|
||
| 107 | 1bed50bb | Jose Manuel Febrer Cortés | elif (echo "$SPEED" | grep -q "G"); then |
| 108 | echo "$SPEED" | awk '{a+=$1} END{print a*1000000000}'
|
||
| 109 | f679a922 | Jose Manuel Febrer Cortés | else |
| 110 | 1bed50bb | Jose Manuel Febrer Cortés | echo "Error: no data (timeout)" >&2 |
| 111 | f679a922 | Jose Manuel Febrer Cortés | fi |
| 112 | 26e9009d | Jose Manuel Febrer Cortés | done |
