net-stats.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/usr/bin/env bash
  2. #
  3. # Reports network statistics
  4. #
  5. set -e
  6. [[ $(uname) == Linux ]] || exit 0
  7. cd "$(dirname "$0")"
  8. # shellcheck source=scripts/configure-metrics.sh
  9. source configure-metrics.sh
  10. packets_sent=0
  11. packets_sent_diff=0
  12. packets_received=0
  13. packets_received_diff=0
  14. receive_errors=0
  15. receive_errors_diff=0
  16. receive_buffer_errors=0
  17. receive_buffer_errors_diff=0
  18. send_buffer_errors=0
  19. send_buffer_errors_diff=0
  20. rcvbuf_errors=0
  21. rcvbuf_errors_diff=0
  22. in_octets=0
  23. in_octets_diff=0
  24. out_octets=0
  25. out_octets_diff=0
  26. update_netstat() {
  27. declare net_stat
  28. net_stat=$(netstat -suna)
  29. declare stats
  30. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /packets sent/ {tmp_var = $1} END { print tmp_var }')
  31. packets_sent_diff=$((stats - packets_sent))
  32. packets_sent="$stats"
  33. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /packets received/ {tmp_var = $1} END { print tmp_var }')
  34. packets_received_diff=$((stats - packets_received))
  35. packets_received="$stats"
  36. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /packet receive errors/ {tmp_var = $1} END { print tmp_var }')
  37. receive_errors_diff=$((stats - receive_errors))
  38. receive_errors="$stats"
  39. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /receive buffer errors/ {tmp_var = $1} END { print tmp_var }')
  40. receive_buffer_errors_diff=$((stats - receive_buffer_errors))
  41. receive_buffer_errors="$stats"
  42. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /send buffer errors/ {tmp_var = $1} END { print tmp_var }')
  43. send_buffer_errors_diff=$((stats - send_buffer_errors))
  44. send_buffer_errors="$stats"
  45. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /RcvbufErrors/ {tmp_var = $2} END { print tmp_var }')
  46. rcvbuf_errors_diff=$((stats - rcvbuf_errors))
  47. rcvbuf_errors="$stats"
  48. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /InOctets/ {tmp_var = $2} END { print tmp_var }')
  49. in_octets_diff=$((stats - in_octets))
  50. in_octets="$stats"
  51. stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /OutOctets/ {tmp_var = $2} END { print tmp_var }')
  52. out_octets_diff=$((stats - out_octets))
  53. out_octets="$stats"
  54. }
  55. update_netstat
  56. while true; do
  57. update_netstat
  58. report="packets_sent=$packets_sent_diff,packets_received=$packets_received_diff,receive_errors=$receive_errors_diff,receive_buffer_errors=$receive_buffer_errors_diff,send_buffer_errors=$send_buffer_errors_diff,rcvbuf_errors=$rcvbuf_errors_diff,in_octets=$in_octets_diff,out_octets=$out_octets_diff"
  59. echo "$report"
  60. ./metrics-write-datapoint.sh "net-stats,hostname=$HOSTNAME $report"
  61. sleep 1
  62. done
  63. exit 1