Linux主机网络流量监控ifstat

Linux主机网络流量监控ifstat

本监测方案是用ifstat。安装方法参考:

1、下载
(官网) wget

来自:
也可以通过浏览器下载,然后用secureCRT上传;
2、安装
tar -xzvfifstat-1.1.tar.gz,configure、make、make install
3、编写脚本

  1. [[email protected]
    tools]# cat nic.sh
  2. #!/bin/bash
  3. start(){
  4. /opt/tools/ifstat_install/bin/ifstat -i eth1
    -t >/opt/tools/nic.log &
  5. while [ 1 -eq 1 ]
  6. do
  7. date +%F\ %T >>/opt/tools/nic.log
  8. sleep 86400
  9. done
  10. }
  11. stop(){
  12. # if stay here,kill ifstat,sleep not execute.
  13. #echo ‘kill nic.sh:’
  14. #ps -ef |grep nic |grep -v grep |awk ‘{print $2}’ |while read
    pid1
  15. #do
  16. #kill -9 $pid1
  17. #echo $pid1
  18. #done
  19. echo ‘kill ifstat:’
  20. ps -ef |grep ifstat |grep -v grep |awk ‘{print $2}’ |while read
    pid2
  21. do
  22. kill -9 $pid2
  23. echo $pid2
  24. done
  25. echo ‘kill sleep:’
  26. ps -ef |grep sleep |grep -v grep |awk ‘{print $2}’ |while read
    pid3
  27. do
  28. kill -9 $pid3
  29. echo $pid3
  30. done
  31. echo ‘kill nic.sh:’
  32. ps -ef |grep nic |grep -v grep |awk ‘{print $2}’ |while read pid1
  33. do
  34. kill -9 $pid1
  35. echo $pid1
  36. done
  37. }
  38. case $1 in
  39. start)
  40. start
  41. ;;
  42. stop)
  43. stop
  44. ;;
  45. *)
  46. printf ‘please input start|stop!\n’
  47. exit 1
  48. ;;
  49. esac
  50. #select process:
  51. #ps -ef |awk ‘/nic/||/ifstat/||/sleep/{print}’
  52. [[email protected]
    tools]#./nic.sh start &

执行了三次,查看进程:

  1. [[email protected]
    ~]$ ps -ef |awk ‘/nic/||/ifstat/||/sleep/{print}’
  2. mcbadm 13472 12803 0 15:08 pts/1 00:00:00 /bin/bash ./nic.sh start
  3. mcbadm 13473 13472 0 15:08 pts/1 00:00:00
    /opt/proxy_security/ifstat_install/bin/ifstat -i eth0 -t
  4. mcbadm 13475 13472 0 15:08 pts/1 00:00:00 sleep 8640
  5. mcbadm 13476 12803 0 15:08 pts/1 00:00:00 /bin/bash ./nic.sh start
  6. mcbadm 13477 13476 0 15:08 pts/1 00:00:00
    /opt/proxy_security/ifstat_install/bin/ifstat -i eth0 -t
  7. mcbadm 13479 13476 0 15:08 pts/1 00:00:00 sleep 8640
  8. mcbadm 13480 12803 0 15:08 pts/1 00:00:00 /bin/bash ./nic.sh start
  9. mcbadm 13481 13480 0 15:08 pts/1 00:00:00
    /opt/proxy_security/ifstat_install/bin/ifstat -i eth0 -t
  10. mcbadm 13483 13480 0 15:08 pts/1 00:00:00 sleep 8640
  11. mcbadm 13485 12803 0 15:08 pts/1 00:00:00 awk
    /nic/||/ifstat/||/sleep/{print}
  12. [[email protected]
    ~]$

不知道为啥,需要执行两次stop,才能关闭所有进程,不然会剩下几个sleep进程,这些sleep的父进程id与ifstat的一样。

#一天是86400秒,因为默认的ifstat -t
只能显示时、分、秒,不能显示日期,因为我想看到具体的时间所以就这么弄了。
然后定期可以去分析nic.log文件,查看该网卡的流量情况。
关于kill也可以写while的方式:#ps -ef |grep nic |grep -v grep |awk
‘{print $2}’ |xargs -i kill -9 {}
有一个很怪的现象:当我把kill
nic的语句写在前面的时候,执行stop就只能执行kill
nic的语句块,后面两个kill ifstat和kill sleep就无法执行,如果删除了kill
nic,后面两个就可以正常执行,通过打印pid发现,kill
nic放前面的话,输出的有两个无效的pid,最后选择把kill nic放到了kill
ifstat和kill sleep后面就可以。

本监测方案是用ifstat。安装方法参考:
1、下载 (官网)…