我们在两个站点之间有一条国际线路,带宽有限。我想监控两个站点之间的带宽使用情况,并了解哪种类型的流量消耗最多。
理想情况下,我希望对每个 TCP 和 UDP 端口到达“终端”站点的数据量进行“每秒”细分 - 这样我就可以看到我们的哪个应用程序使用最多。我真的不需要漂亮的图表,一个简单的文本文件就足够了。
我可以访问连接到链路路由器的 Cisco 2960(但不能访问路由器本身),设法从交换机中提取数据是理想的,因为它是唯一的入口点。
另一种选择是在通过链接发送数据的每个 Linux 服务器上执行相同的操作。
我还没有找到可以帮助我解决这个问题的工具 - 有很多东西(netstat,iftop),但它们似乎无法每秒输出一个“每个端口”的分割...
有人能想到一个(轻量级)特定的工具和方法来实现这一点吗?
编辑:我已经使用 MRTG 大致了解了链接上的流量,但它不够精确。它每 5 分钟(而不是每秒)探测一次链接,并且不区分 TCP/UDP 端口。
答案1
我不知道有任何轻量级的方法可以做到这一点。恩夫森或 cflowd,但我不认为它们“轻量级”,并且设备/iOS 版本必须支持奈特洛。
我在我们的边界路由器和内部防火墙中捕获网络流,并主要使用它们来“回溯”以调试安全事件。当我在 ISP 环境中工作时,我使用网络流来计算客户带宽使用情况。
另一种方法是嗅探监控端口,这对于所涉及的服务器来说更耗费 CPU,不建议用于(非常)高速的链接。您可以使用ntop为此。虽然 ntop 可以为您提供非常有趣的流量概要,但它无法为您提供比 NetFlow 信息更详细的信息,至少在没有插件的情况下是这样。
您也有 Linux 软件可以通过流量嗅探生成 Netflow(内核模块?),但我对它们并不熟悉。同样,它们比使用 NetFlow 占用更多的 CPU 资源。
更简单的方法是要求 Cisco 2960 管理员配置一个到您自己的本地 IP 地址/服务器的 netflow 馈送。
PS 还有一些非常有趣的用于网络流收集的商业产品,包括思科的产品;它们通常价格昂贵。