每5分钟录制一次networkingstream量峰值

我想监视我的高峰networking使用情况。 我已经使用munin在5分钟的样本中监测networkingstream量。 但是,由于我们有很多高峰的httpstream量只能持续几秒钟,我想知道在过去5分钟内每秒峰值networking使用率 ,而不是平均值。

目前我使用的是易于查看高峰使用情况的iftop 。 但是iftop只能交互式运行。 我使用屏幕来运行,并可以定期查看它。

如何使用iftop或类似的工具,每5分钟logging一次最近5分钟的networking峰值使用情况。 我只需要一个像这样的线的文件:

 2014-06-17 15:43:12 TX: 14,3 MBit/s RX: 16,2 MBit/s Sum: 29,6 MBit/s 2014-06-17 15:48:12 TX: 11,3 MBit/s RX: 12,2 MBit/s Sum: 22,3 MBit/s 

等等。

我试过ntop但是这是相当多的开销,我不能轻易地将数据导入munin。 而且它没有写出每5分钟的峰值。

有没有人知道这个工具或有效的脚本?

从Munin 2.0开始,您可以使用称为supersampling的function以1秒的分辨率收集数据点。 Munin轮询间隔仍然是5分钟,Munin插件负责主动收集和存储高分辨率的数据。 有一个示例实现 – loggingmpstat数据的multicpu1sec插件 。

现在穆宁给你的图是一个不同的故事。 Munin正在使用RRDtool进行graphics绘制,而后者能够使用不同的合并函数(CF)将多个数据点表示为graphics的单个像素。 截至目前, Munin仅能够绘制平均(AVG)数据,而且没有其他合并函数(最小,最大,总计,最后)的可configuration支持。

你可能会考虑补丁穆宁 – 这看起来不难做。 或者,您可能只需调用带有自定义参数和不同整合函数的rrdtool graph就可以满足您的需求。 只要看看你的munin-cgi-graph.log就可以开始游戏了。 如果您只是根据具体情况需要,还可以放大感兴趣的区域(这需要您在Muninconfiguration中启用dynamicgraphics ),然后查看打印出的最小/最大值图表“的传奇地区。

穆宁是一个很好的工具,我很喜欢它。 不过,我有时会发现,对于特定的使用情况,使用我自己的采样和使用rrdtool更好。

在这种情况下 – 您可能可以通过ifconfig获取所需的原始数据,并查看rx和tx字节。

这可以将其馈送到围绕DERIVE的自定义RRD构build中。

 rrdtool create netmax.rrd -s 1 DS:tx_bytes:DERIVE:5:0:U DS:rx_bytes:DERIVE:5:0:U RRA:MAX:0.5:1:84600 RRA:AVERAGE:0.5:1:84600 RRA:MAX:0.5:60:12960 RRA:AVERAGE:0.5:60:12960 

从一个简单的脚本中获取ifconfig的值,并使用以下命令将其更新到rrdtool:

 rrdtool update netmax.rrd N:12312321:341241 

(例如,tx字节,你的ifconfig中的rx字节)。

然后图表:

 rrdtool graph -e now -s end-6h netmax.png DEF:tx_max=netmax.rrd:tx_bytes:MAX DEF:rx_max=netmax.rrd:rx_bytes:MAX LINE1:tx_max#00FF00:tx_max LINE1:rx_max#0000FF:rx_max 

不需要特意为脚本创build脚本,这正是Munin在幕后所使用的。

请定义“高峰”。

由于bandwidth = dataVolume / time ,这个术语没有参考观察到峰值的时间段是没有意义的。

如果要将最小峰宽限制为1秒,那么按照定义,您必须每秒采样一次。 即使你这样做了,仅仅持续十分之一秒的强烈爆炸stream量就会比以0.1秒为间隔采样的stream量要小10倍。

换个angular度来看,“带宽”的类比将是激光的功率,其中power = energy / time 。 一个1mW的手持式激光指示器每秒钟能量为1毫焦耳(连续),被认为是非常安全的,但是如果你把这个1mJ压缩到一个纳秒,你将拥有一个兆瓦功率的脉冲激光。

会满足你的需求? 例如

 sar -n ALL 5 1 

会给你5秒1次统计。