我想监控我的峰值网络使用情况。我已经用munin
一个 5 分钟的示例来监控网络流量。但是由于我们有很多只持续几秒钟的 http 流量峰值,我想知道过去 5 分钟内每秒的峰值网络使用量,而不是平均值。
目前我使用iftop
的是很容易看到峰值使用量的。但iftop
只能交互运行。我使用屏幕让它运行,并且可以定期查看它。
我如何使用iftop
或类似的工具每 5 分钟写出最后 5 分钟的峰值网络使用量。我只需要一个像这样行的文件:
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 开始,您可以使用称为超级采样的功能以 1 秒的分辨率收集数据点。Munin 的轮询间隔仍然是 5 分钟,各个 Munin 插件负责主动收集和存储高分辨率数据。有一个示例实现 -记录数据的
multicpu1sec
插件。mpstat
现在穆宁给你的图表是一个不同的故事。Munin 正在使用RRDtool进行绘图,而 RRDtool 又能够使用不同的合并函数 (CF) 将多个数据点表示为图形的单个像素。截至目前,Munin 只能绘制平均 (AVG) 数据,并且没有对其他合并功能(最小、最大、总计、最后)的可配置支持。
您可能会考虑相应地修补 Munin - 这看起来并不难。或者,您可以
rrdtool graph
根据需要使用自定义参数和不同的合并函数进行调用。只需查看您的munin-cgi-graph.log
内容即可获得玩耍的起点。如果您只需要逐个案例,您也可以放大感兴趣的区域(这需要您在 Munin 配置中启用动态图表)并查看打印在图表的图例区域。Munin 是一个很好的工具,我非常喜欢它。但是,我有时会发现,对于特定的用例,我自己的采样和使用
rrdtool
效果更好。在这种情况下 - 您可能可以通过 ifconfig 获得所需的原始数据,并查看 rx 和 tx 字节。
您可以将此输入到围绕
DERIVE
.在一个简单的脚本中从 ifconfig 中获取值,并使用以下命令将其更新到 rrdtool:
(例如,您的 ifconfig 中的 tx 字节、rx 字节)。
然后绘制它:
围绕它构建一个临时使用的脚本并不难,这正是 Munin 在幕后使用的。
sar 能满足你的需要吗?例如
会给你统计 5 秒 1 次。
请定义“峰值”。
因为
bandwidth = dataVolume / time
,如果不参考观察到峰值的时间段,该术语是没有意义的。如果您想将最小峰宽限制为 1 秒的间隔,那很好,但根据定义,您必须每秒采样一次。即使你这样做了,只持续 1/10 秒的强烈流量爆发看起来比你以 0.1 秒间隔进行采样时的流量小 10 倍。
换一种说法,“带宽”的类比是激光的功率,其中
power = energy / time
. 一个 1 mW 的手持式激光指示器是每秒 1 毫焦耳(连续)能量,被认为是非常安全的,但如果你将 1 mJ 压缩到一个纳秒内,你将拥有一个 1兆瓦功率的脉冲激光。