系统管理员的工具箱:iftop
谁占用了所有带宽?他们在做什么?使用 iftop 找出答案。
长期系统管理员经常认为他们多年来使用的工具是理所当然的,并假设其他人都听说过它们。当然,每天都有新的系统管理员加入这个领域,甚至经验丰富的系统管理员也并非都使用相同的工具。考虑到这一点,我决定撰写几篇专栏文章,重点介绍一些常见但容易被忽视的工具,这些工具使系统管理员(实际上是任何 Linux 用户)的生活更轻松。我的上一篇文章介绍了 sar,这是一款可用于收集和查看系统指标随时间变化的工具。这次,我讨论一个方便查看实时网络性能数据的程序:iftop。
任何在会议上使用过网络的人都经历过网络带宽不足时会发生什么。当您尝试查看电子邮件时,其他人正在流式传输电影和电视节目、下载发行版安装光盘、使用 p2p 网络、升级他们的发行版或在 YouTube 上观看猫咪视频。虽然尝试使用这些网络之一肯定令人沮丧,但想象一下,如果您是负责该网络的管理员,那该有多令人沮丧。无论您运行会议网络、本地办公室网络,甚至是在您家中的 Web 服务器,了解是什么占用了您所有的带宽都非常有用。
iftop 是一个 Linux 命令行程序,旨在以漂亮的图形形式为您提供有关哪些网络连接使用最多带宽的实时统计信息。正如您可能从名称中意识到的那样,iftop 从始终有用的负载故障排除工具 top 中借鉴了很多想法。与 top 一样,iftop 每隔几秒钟自动更新,并且与 top 一样,默认情况下,它会按资源使用量最多的内容对您看到的输出进行排序。top 关注进程及其使用的 CPU 和 RAM 量,而 iftop 关注网络连接及其使用的上传和下载带宽量。
即使 iftop 已针对基于 Red Hat 和 Debian 的发行版打包,它也可能不是默认安装的,因此您需要安装同名的软件包。对于基于 Red Hat 的发行版,您可能必须从第三方存储库中将其拉取下来。安装完成后,最简单的入门方法是以 root 用户身份运行 iftop。iftop 将找到它可以使用的第一个接口并开始监听流量,并显示类似于图 1 中看到的输出。要关闭程序,请按 q 退出,就像使用 top 一样。

图 1. iftop 输出—IP 地址已被涂抹以保护无辜者。
屏幕的最顶部是一个刻度,它与 iftop 可能与每个连接一起显示的条形图相对应。输出的下一行对应于一对主机之间的每个网络连接。两个主机之间是箭头,可让您了解流量的流向。最后三列分别提供过去 2 秒、10 秒和 40 秒内每个连接的平均带宽。例如,图 1 中最顶部的连接在过去 2 秒内平均约为 2.83Mb,在过去 10 秒内为 3.32Mb,在过去 40 秒内为 3.11Mb。在屏幕底部的所有传输和接收列下方,是一系列整体传输和接收流量的统计信息(分别为 TX 和 RX),包括这两者的 2 秒、10 秒和 40 秒平均值,以及最后,接口的总计。
注意:如果您的服务器有多个接口,您可能希望 iftop 监视与默认接口不同的接口。只需在启动 iftop 时添加 -i
,后跟要监视的接口即可。例如,要监视 eth2,我将键入 iftop -i eth2
。
默认情况下,当您运行 iftop 时,它会尝试将所有 IP 地址转换为主机名。如果您正在诊断本地网络上的问题,有时这可能很有用;但是,与许多其他网络诊断工具一样,解析所有这些 IP 可能会减慢程序的速度,并且还可能导致您在输出中看到的流量。解决方案是使用 -n
参数运行 iftop,这样它只会向您显示所有内容的 IP 地址(您始终可以在另一个窗口中对您感兴趣的 IP 运行 DNS 查询)。或者,如果您已经运行了 iftop,您可以按 n 禁用 DNS 查找。
当您在可能用于多种用途的服务器上运行 iftop 时,了解所有这些上行流量是否正在访问您的 Web 服务器、您的邮件服务器或其他内容可能会很有用。或者,如果您正在尝试找出是什么占用了您所有的下载带宽,那么查看顶级连接是 Web 连接还是您正在运行的某些 rsync 作业可能会很有用。为了弄清楚这一切,iftop 允许您打开和关闭端口显示。在 iftop 运行时按 p 键,它将显示所有流量的源 IP 和目标 IP 使用的端口。
显示连接的源端口和目标端口的一个主要缺点是,您会发现,在许多情况下,您只关心其中一个。例如,如果您正在运行 Web 服务器,您可能会注意到大量流量正在流向您的 Web 端口(在 iftop 中标记为 www),但是访问您的 Web 服务器的 IP 使用的所有端口都使用各种高端口。在这种情况下,您可以按 S 或 D 分别切换源端口或目标端口的显示。图 2 显示了一个 iftop 输出示例,其中我选择仅显示源端口。

图 2. iftop 仅显示源端口的输出。
对我而言,iftop 真正伟大之处在于它是一个相对简单的命令行工具。确实存在许多其他程序可以提供精美的基于 Web 的网络流量图,我认为这些程序非常适合趋势网络数据,就像它们适合趋势系统负载和其他指标一样。我喜欢 iftop 的原因与我喜欢 top 的原因相同—当出现问题时,您可以获得有关系统更新的即时实时数据,随着情况的进展而更新。