加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

利用Shell配合绘图工具GnuPlot图形化监控网络流量

发布时间:2016-09-20 20:25:34 所属栏目:Linux 来源:站长网
导读:网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以

网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还有Nagios这样的监控主机状态的工具,不仅能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。还能在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知等功能。除此之外Nagios简单地插件设计使得用户可以方便地扩展自己服务的检测方法。也正是这一点,让Nagios几乎无所不能。我们也经常利用这个特性,使用Shell编写各类插件配合Ngios的使用。

Nagios虽然强大,但无法像Cacti那样图形化监控网络流量。因此Nagios+Cacti通过NPC整合在一起,强强联手成为了一种经常被使用的组合。关于这方面的知识,我会在后续的博客中有所描述,此处暂略过。只为图形化流量使用情况就要在学习Cacti的同时,还要将Nagios与Cacti进行整合,成本未免太高。有没有一种方式可以自定义网络流量监控并以图形化的方式显示出来呢?本文就是利用Shell配合绘图工具GnuPlot将网络流量图形化的展示出来,大家可以将他嵌入到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)

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

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 #将当前网卡流量减去之前统计的网

卡流量总和得到这一分钟内网卡的流量并将其输出重定向到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

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读