我想监控我的峰值网络使用情况。我已经习惯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 分钟写出峰值。
有人知道这个工具或有效的脚本吗?
答案1
从 Munin 2.0 开始,你可以使用名为超采样以 1 秒的精度收集数据点。Munin 轮询间隔仍为 5 分钟,相应的 Munin 插件负责主动收集和存储高分辨率数据。这里有一个示例实现 -插件multicpu1sec
正在记录mpstat
数据。
现在 Munin 呈现给你的图表是另一回事。Munin 使用RRD工具用于绘图,而绘图又能够使用不同的合并函数 (CF) 将多个数据点表示到图形的单个像素中。截至目前,Munin 只能绘制平均值(AVG)数据并且没有对其他合并函数(最小值、最大值、总计、最后值)的可配置支持。
您可能会考虑相应地修补 Munin - 这看起来并不太难。或者,您可能只是使用rrdtool graph
自定义参数和不同的合并函数来调用,因为它适合您的需求。只需查看您的munin-cgi-graph.log
以获取开始试用的起点。如果您只是根据具体情况需要它,您也可以放大感兴趣的区域(这需要您拥有动态图表在 Munin 配置中启用)并查看图表图例区域中打印的最小/最大值。
答案2
Munin 是一款不错的工具,我非常喜欢它。但是我有时发现,对于特定用例,自己进行采样并使用rrdtool
效果会更好。
在这种情况下 - 您可能可以通过 ifconfig 获取所需的原始数据,并查看 rx 和 tx 字节。
您可以将其输入到围绕其构建的自定义 RRD 中DERIVE
。
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
(例如来自 ifconfig 的 tx 字节、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
围绕它构建一个用于临时使用的脚本并不太难,这正是 Munin 在幕后所使用的。
答案3
请定义“峰值”。
由于bandwidth = dataVolume / time
,如果不参考观察到峰值的时期,该术语就毫无意义。
如果您想将最小峰值宽度限制为 1 秒间隔,这没问题,但根据定义,您必须每秒采样一次。即使您这样做,仅持续 1/10 秒的强烈流量爆发也会比以 0.1 秒间隔采样时小 10 倍。
换个角度想,“带宽”可以类比为激光的功率,其中power = energy / time
。1 mW 手持激光笔每秒产生 1 毫焦耳(连续)能量,被认为是完全安全的,但如果将 1 mJ 压缩到一纳秒内,就会产生 1 毫焦耳的脉冲激光兆瓦力量。
答案4
sar 能满足你的需求吗?例如
sar -n ALL 5 1
将为您提供 1 次 5 秒的统计数据。