shell图形化监控网络流量

网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还有Nagios这样的监控主机状态的工具,不仅能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。还能在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知等功能。shell图形化监控网络流量,除此之外Nagios简单地插件设计使得用户可以方便地扩展自己服务的检测方法。也正是这一点,让Nagios几乎无所不能。我们也经常利用这个特性,使用Shell编写各类插件配合Ngios的使用。
Nagios虽然强大,但无法像Cacti那样图形化监控网络流量。因此Nagios+Cacti通过NPC整合在一起,强强联手成为了一种经常被使用的组合。shell图形化监控网络流量关于这方面的知识,我会在后续的博客中有所描述,此处暂略过。只为图形化流量使用情况就要在学习Cacti的同时,还要将Nagios与Cacti进行整合,成本未免太高。有没有一种方式可以自定义网络流量监控并以图形化的方式显示出来呢?本文就是利用Shell配合绘图工具GnuPlot将网络流量图形化的展示出来即shell图形化监控网络流量,大家可以将他嵌入到Nagios或者干脆单独使用。
首先我们需要获得网络流量。运行ifconfig命令

eth0 Link encap:Ethernet HWaddr 00:0C:29:58:A5:D5
inet addr:192.168.0.15 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe58:a5d5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:496 (496.0 b) TX bytes:2452 (2.3 KiB)
Interrupt:193 Base address:0x2000

其中 RX Bytes、TX Bytes:为总传送、接收的字节总量(红色标注部分)。我们将其取出并相加。命令如下:

ifconfig | awk -F ":" 'NR==8{print $2+$3}' (本例获得结果为2948,单位为byte)

shell图形化监控网络流量,我们将以分钟为单位取得该值并与之前取得值的总和相减得到每分钟的网卡流量并导入到文本文件中。文件的格式如下:

06:01:00 2948
06:02:00 1948
06:03:00 2948
06:04:00 3948
06:05:00 1948
06:06:00 3948
........

echo -n `date +%H:%M:%S` " " >> result;echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `] >>result

echo -n `date +%H:%M:%S` " " >> 1; #以小时:分钟:秒为格式获取当前系统时间并输出重定向到result文件中,-n选项为不输出换行符。
awk '{sum+=$2}END{print sum}' result #为获得result文件中第二列所有值的和
echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `]>>result #shell图形化监控网络流量将当前网卡流量减去之前统计的网

卡流量总和得到这一分钟内网卡的流量并将其输出重定向到result文件中。

#! /bin/bash
while true;do
echo -n `date +%H:%M:%S` " " >> result;echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `]>>result
sleep 60
done

reslut文件内容如下:
06:31:01 2948
06:32:01 1948
06:33:01 2948
06:34:01 3948
06:35:01 1948
06:36:01 3948
06:37:01 2680
06:38:01 3127
06:39:01 4162
06:40:01 5137
06:41:01 1348
06:42:01 1872
06:43:01 2882
06:44:01 1972
06:45:01 5689
06:46:01 1952
06:47:01 2371
06:48:01 3333
06:49:01 4523
06:50:01 1346
06:51:01 7864
06:52:01 3256
06:53:01 5742
06:54:01 1234
06:55:01 4328
06:56:01 2651
06:57:01 1463
06:58:01 2813
06:59:01 1111
07:00:01 2134
07:01:01 1687
07:02:01 3383
07:03:01 2345

现在我们就可以通过GnuPlot进行绘图。
set terminal png small color picsize 600 400 #以png格式,坐标字体为小字体,大小为600*400输出绘图
set output "eth0.png" #输出图片的名称为eth0.png
set xdata time #设定X坐标的类型为时间类型
set timefmt "%H:%M:%S" #设定时间类型的格式
set grid #设定网格为输出图片背景
set style data linespoints #设定绘图使用点线方式
set xtic rotate by 90 #将X坐标以90旋转
plot "result" using 1:2 title "eth0" pointtype 3 linetype 2#以result文件的一列为X坐标绘制第二列的内容,图片右上角标示为eth0

将以上内容保存为文件eth0
cat eth0 | gnuplot #执行绘图

shell图形化监控网络流量本例输出的图片如下:

完整shell脚本如下:

#! /bin/bash
while true;do
echo -n `date +%H:%M:%S` " " >> result;echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `]>>result
cat eth0 | gnuplot #由于每次生成的图片会覆盖原来的图片,所以不用进行删除操作
sleep 60
done

shell图形化监控网络流量生成好的图片可以放置在Apache中或者整合Nagios。 篇幅有限,未尽之处,还请见谅,希望大家批评指教,提出更好的建议。谢谢

Shell图形化监控网络流量相关推荐

  1. shell图形化监控网络流量 网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  2. 基于linux网络流量监控与分析软件的设计与实现shell,Shell图形化监控网络流量

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  3. 【转载】Shell图形化监控网络流量

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  4. 运用Ntop监控网络流量(视频Demo)

    运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量 ...

  5. 运用 Ntop 监控网络流量

    运用Ntop监控网络流量 ____ 网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降. 网络性能降低.通过 ...

  6. 运用Ntop监控网络流量

    2019独角兽企业重金招聘Python工程师标准>>> 运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流 ...

  7. 使用snmp对DNS服务器进行图形化监控

    通常情况下如果需要了解DNS服务器的工作状态往往需要telnet或ssh到服务器上以命令的方式来获取.该方式不但麻烦而且不直观.本文介绍一种通过SNMP来对DNS服务器进行图形化监控的方法. 该系统主 ...

  8. 在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用

    摘要:如果你想在命令行界面监控网络吞吐量,nload应用程序是个不错的选择.它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量.最小/ ...

  9. 使用Sniffer Pro监控网络流量

    随着互联网多层次性.多样性的发展,网吧已由过去即时通信.浏览网页.电子邮件等简单的应用,扩展成为运行大量在线游戏.在线视频音频.互动教学.P2P等技术应用.应用特点也呈现出多样性和复杂性,因此,这些应 ...

最新文章

  1. emoji mysql 转 unicode_unicode和emoji编码
  2. 子站间 携带cookie_JavaScript cookie 不同子域名之间共享
  3. js 数字递增递减_数字推理满分技巧 !不是干货,请批我!
  4. android游戏加载,Android 游戏引擎libgdx 资源加载进度百分比显示案例分析
  5. 超详细!百度富媒体检索比对系统的关键技术
  6. Vue warn Failed to mount component: template or render function not defined
  7. iview 级联选择组件_使用 element-ui 级联插件遇到的坑
  8. 使用ANNdotNET GUI工具创建CIFAR-10深度学习模型
  9. java 判断字符串是否汉子_java判断 字符串 是否有汉字
  10. S.Finance已上线收益稳定币UU
  11. 如何解决mac上不了网的问题
  12. webstorm主题配置
  13. Vue报错:contains both .browserslistrc and package.json with browsers
  14. 【暴躁版】Java如何用IO流读取一个文本,按行输出到控制台?
  15. 全球运输工业的升级会带来什么
  16. 持续测试(Continuous Testing)
  17. 规划Autovue的安装
  18. 拉马努金,天才之超越
  19. 蓄能空调系统技术特点及应用实训QY-ZLR23
  20. 《惢客创业日记》2019.04.29(周一)与幽门螺旋杆菌的博弈

热门文章

  1. Spring模板对象之RedisTemplate(Spring整合jedis)
  2. 使用SearchView报错java.lang.UnsupportedOperationException: Failed to resolve ...
  3. ACwing 245. 你能回答这些问题吗(线段树区间子段最大值+单点修改)
  4. Python基础学习----参数和返回值
  5. Spring的事务传播性
  6. 深度模拟java动态代理实现机制系类之三
  7. SCNCHECKPOINT
  8. 错误/异常:java.io.FileNotFoundException: .\src\db.properties (系统找不到指定的路径。);的解决方法...
  9. Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器
  10. HDU 3938 Portal