Linux:如何衡量每日/每月的网络流量?


15

我需要保留Linux机器(CentOS 5)的每日网络流量的统计信息。

有没有办法使用标准/本地工具或实用程序来做到这一点?
还是我必须为此下载专用软件?

谢谢。


1
您需要统计的准确性如何?换句话说,您是否需要足够具体的东西来重新计费带宽或平均水平是否合适?
Zypher

我需要确切地知道每天使用了多少流量,因为我不想超出某些限制。
GetFree 2010年

1
然后,您希望使用任何基于RRD的工具(仙人掌,MRTG,Munin等),RRD会对这些数字进行平均,因此您将永远无法获得确切的指标,并且随着时间的推移它实际上会变得更糟。
Zypher

Answers:


8

Zypher关于rrdtool(以及将其用作后端的任何其他内容-MRTG,Cacti等)的说法可能是正确的。RRDTool被设计为“平均”历史趋势分析工具。它以越来越不固定的增量对计数器进行平均和存储,并随着时间的推移而进一步增加。

但是,可以通过适当地设置RRA进行配置。我承认对配置这些工具一无所知,而且我个人从来没有碰到过超出我的标准设置(15分钟,8小时,1周,1个月,1年)的运气。我建议您考虑配置RRA,以期望每日输入并将其从netstat提供给带宽计数器。您将获得一些非常好的历史数据并深入了解您的使用模式。

为了解决当前的问题,请确保您没有超出每日带宽限制;我建议每天获取有关接口的netstat计数器。您可以将时间t的昨天的流量与时间t的今天的计数器进行比较,以了解转移了多少。一个简单的脚本,其带有以前值的平面文本文件存储,就足够了。然后,如果您检测到超出带宽或全天对其进行监视,则可以禁用该接口,或者在接近极限时通知管理员。

要获取OSX系统上的输入字节,可以使用以下命令集:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'

相反,可以通过以下方式获得输出:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'

您可以将相关计数器弹出到存储在某个位置的平面文件中,并与以下内容进行比较:

#!/bin/bash
set -e # exit if any error occurs

previous_days_bytes_xferred=`cat $flatfile_storage`
todays_bytes_xferred=`netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'`

if [ $((todays_bytes_xferred - previous_days_bytes_xferred)) -gt $threshold ]; then
   DO SOME STUFF
fi
echo $todays_bytes_xferred > $flatfile_storage

只需调整netstat处理以适合您的系统(因为我知道您没有运行OSX)。


25

我也建议使用VnStat

vnStat 1.6 by Teemu Toivola <tst at iki dot fi>

     -q,  --query          query database
     -h,  --hours          show hours
     -d,  --days           show days
     -m,  --months         show months
     -w,  --weeks          show weeks
     -t,  --top10          show top10
     -s,  --short          use short output
     -u,  --update         update database
     -i,  --iface          select interface (default: eth0)
     -?,  --help           short help
     -v,  --version        show version
     -tr, --traffic        calculate traffic
     -l,  --live           show transfer rate in real time


 eth0  /  monthly

   month         rx      |      tx      |   total
-------------------------+--------------+--------------------------------------
  Oct '09     225.70 GB  |   798.52 GB  |     1.00 TB   %%%%:::::::::::::
  Nov '09     138.46 GB  |   616.54 GB  |   755.01 GB   %%::::::::::

 eth0  /  daily

day         rx      |     tx      |  total
------------------------+-------------+----------------------------------------
   31.12.      6.56 GB  |   34.39 GB  |   40.95 GB   %%%::::::::::::::::
   01.01.      1.13 GB  |  746.92 MB  |    1.86 GB

4

sysstat软件包包含sar实用程序。由于缺乏更好的术语,Sar是一个可高度配置的系统“探查器”,它以预定义的时间间隔(cron)收集各种统计信息。这些文件存储在二进制文件中,每天一次,通常每周一次,但是可以配置。sar程序可用于从这些文件中提取统计信息,并且可以使用任何office程序或gnuplot(我个人的喜好)轻松绘制出这些结果的图形。

http://pagesperso-orange.fr/sebastien.godard/ <= Sar信息
http://www.gnuplot.info/ <= gnuplot信息


4

Vnstat是一个出色的控制台,它基于每日/每周/每月的流量监控。它甚至允许您方便地实时监控流量。

它也使用很少的系统资源;)



1

我使用了mrtg,这是一个非常不错的解决方案,还有其他一些工具似乎很有趣,并且提供了许多有关名为ntop的流量的信息,是一个网络探针,可在此处找到有关在CentOS上安装ntop的链接。


1

MRTG或Cacti。仙人掌很难设置,但提供了一些非常漂亮的图形。MRTG很容易建立基本的图,但是对于任何漂亮或复杂的东西,它都很难。


1

Munin是另一个很好的基于RRD的工具,易于安装;默认的网络统计信息非常基础,但是添加其他插件很容易。我已经在其中一台服务器上附加了每日和每周统计信息的副本;您还会在其他页面上获得每月和每年的统计信息。

Munin网络图


图片消失了
加拿大卢克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.