如果要在你的系统上监控网络,那么使用命令行工具是非常实用的,并且对于 Linux 用户来说,有着许许多多现成的工具可以使用,如:nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed 以及 speedometer。
鉴于世上有着许多的 Linux 专家和开发者,显然还存在其他的网络监控工具,但在这篇教程中,我不打算将它们所有包括在内。
上面列出的工具都有着自己的独特之处,但归根结底,它们都做着监控网络流量的工作,只是通过各种不同的方法。
例如 nethogs 可以被用来展示每个进程的带宽使用情况,以防你想知道究竟是哪个应用在消耗了你的整个网络资源;iftop 可以被用来展示每个套接字连接的带宽使用情况,而像 nload 这类的工具可以帮助你得到有关整个带宽的信息。
nethogs 是一个免费的工具,当要查找哪个 PID (注:即 process identifier,进程 ID) 给你的网络流量带来了麻烦时,它是非常方便的。它按每个进程来分组带宽,而不是像大多数的工具那样按照每个协议或每个子网来划分流量。它功能丰富,同时支持 IPv4 和 IPv6,并且我认为,若你想在你的 Linux 主机上确定哪个程序正消耗着你的全部带宽,它是来做这件事的最佳的程序。
一个 Linux 用户可以使用 nethogs 来显示每个进程的 TCP 下载和上传速率,可以使用命令 nethogs eth0 来监控一个指定的设备,上面的 eth0 是那个你想获取信息的设备的名称,你还可以得到有关正在传输的数据的传输速率信息。
对我而言, nethogs 是非常容易使用的,或许是因为我非常喜欢它,以至于我总是在我的 Ubuntu 12.04 LTS 机器中使用它来监控我的网络带宽。
例如要想使用混杂模式来嗅探,可以像下面展示的命令那样使用选项 -p:
69492632b2ec566d0f.png (3.71 KB, 下载次数: 223) 2022-9-21 23:33 上传 nload 是一个控制台应用,可以被用来实时地监控网络流量和带宽使用情况,它还通过提供两个简单易懂的图表来对流量进行可视化。这个绝妙的网络监控工具还可以在监控过程中切换被监控的设备,而这可以通过按左右箭头来完成。
6647632b2f2aa8ce3.png (105.19 KB, 下载次数: 212) 2022-9-21 23:35 上传 正如你在上面的截图中所看到的那样,由 nload 提供的图表是非常容易理解的。nload 提供了有用的信息,也展示了诸如被传输数据的总量和最小/最大网络速率等信息。 而更酷的是你只需要直接运行 nload 这个工具就行,这个命令是非常的短小且易记的:
95494632b2f5c80bf4.png (2.54 KB, 下载次数: 213) 2022-9-21 23:35 上传 slurm 是另一个 Linux 网络负载监控工具,它以一个不错的 ASCII 图来显示结果,它还支持许多按键用以交互,例如 c 用来切换到经典模式, s 切换到分图模式, r 用来重绘屏幕, L 用来启用 TX/RX 灯(注:TX,发送流量;RX,接收流量) ,m 用来在经典分图模式和大图模式之间进行切换, q 退出 slurm。
24362632b30c50d315.png (88.9 KB, 下载次数: 223) 2022-9-21 23:41 上传 在网络负载监控工具 slurm 中,还有许多其它的按键可用,你可以很容易地使用下面的命令在 man 手册中学习它们。
65045632b30f05ab6b.png (3.03 KB, 下载次数: 218) 2022-9-21 23:42 上传 slurm 在 Ubuntu 和 Debian 的官方软件仓库中可以找到,所以使用这些发行版本的用户可以像下面展示的那样,使用 apt-get 安装命令来轻松地下载它:
9612632b311392225.png (3.59 KB, 下载次数: 216) 2022-9-21 23:43 上传 当你想显示连接到网卡上的各个主机的带宽使用情况时,iftop 是一个非常有用的工具。根据 man 手册,iftop 在一个指定的接口或在它可以找到的第一个接口(假如没有任何特殊情况,它应该是一个对外的接口)上监听网络流量,并且展示出一个表格来显示当前的一对主机间的带宽使用情况。 通过在虚拟终端中使用下面的命令,Ubuntu 和 Debian 用户可以在他们的机器中轻易地安装 iftop:
18070632b3250f31c8.png (3.59 KB, 下载次数: 220) 2022-9-21 23:48 上传 在你的机器上,可以使用下面的命令通过 yum 来安装 iftop:
33407632b3267a0a7f.png (3.51 KB, 下载次数: 222) 2022-9-21 23:48 上传 collectl 可以被用来收集描述当前系统状态的数据,并且它支持如下两种模式: ●记录模式 ●回放模式 记录模式 允许从一个正在运行的系统中读取数据,然后将这些数据要么显示在终端中,要么写入一个或多个文件或一个套接字中。 回放模式 根据 man 手册,在这种模式下,数据从一个或多个由记录模式生成的数据文件中读取。 Ubuntu 和 Debian 用户可以在他们的机器上使用他们默认的包管理器来安装 colletcl。下面的命令将为他们做这个工作:
16131632b329de8a01.png (3.56 KB, 下载次数: 222) 2022-9-21 23:49 上传 还可以使用下面的命令来安装 collectl, 因为对于这些发行版本(注:这里指的是用 yum 作为包管理器的发行版本),在它们官方的软件仓库中也含有 collectl:
60309632b32b5413fe.png (3.25 KB, 下载次数: 217) 2022-9-21 23:50 上传 netload 命令只展示一个关于当前网络荷载和自从程序运行之后传输数据总的字节数目的简要报告,它没有更多的功能。它是 netdiag 软件的一部分。 我们可以在 fedora 中使用 yum 来安装 Netload,因为它在 fedora 的默认软件仓库中。但假如你运行的是 CentOS 或 RHEL,则我们需要安装 rpmforge 软件仓库。
61650632b33404834c.png (4.62 KB, 下载次数: 222) 2022-9-21 23:52 上传 为了运行 netload,我们需要确保选择了一个正在工作的网络接口的名称,如 eth0, eh1, wlan0, mon0等,然后在 shell 或虚拟终端中运行下面的命令:
3551632b33785ac1e.png (3.6 KB, 下载次数: 235) 2022-9-21 23:53 上传 注意:请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 ip link show 命令。 Nagios 是一个领先且功能强大的开源监控系统,它使得网络或系统管理员可以在服务器的各种问题影响到服务器的主要事务之前,发现并解决这些问题。 有了 Nagios 系统,管理员便可以在一个单一的窗口中监控远程的 Linux 、Windows 系统、交换机、路由器和打印机等。它会显示出重要的警告并指出在你的网络或服务器中是否出现某些故障,这可以间接地帮助你在问题发生前就着手执行补救行动。 Nagios 有一个 web 界面,其中有一个图形化的活动监视器。通过浏览网页 http://localhost/nagios/ 或 http://localhost/nagios3/ 便可以登录到这个 web 界面。假如你在远程的机器上进行操作,请使用你的 IP 地址来替换 localhost,然后键入用户名和密码,我们便会看到如下图所展示的信息:
20417632b33d37669c.png (119.92 KB, 下载次数: 220) 2022-9-21 23:54 上传 EtherApe 是一个针对 Unix 的图形化网络监控工具,它仿照了 etherman 软件。它支持链路层、IP 和 TCP 等模式,并支持以太网, FDDI, 令牌环, ISDN, PPP, SLIP 及 WLAN 设备等接口,以及一些封装格式。主机和连接随着流量和协议而改变其尺寸和颜色。它可以过滤要展示的流量,并可从一个文件或运行的网络中读取数据包。 在 CentOS、Fedora、RHEL 等 Linux 发行版本中安装 etherape 是一件容易的事,因为在它们的官方软件仓库中就可以找到 etherape。我们可以像下面展示的命令那样使用 yum 包管理器来安装它:
38638632b3405a523d.png (3.81 KB, 下载次数: 212) 2022-9-21 23:55 上传 在 EtherApe 安装到你的系统之后,我们需要像下面那样以 root 权限来运行 etherape: 然后, etherape 的 图形用户界面 便会被执行。接着,在菜单上面的 捕捉 选项下,我们可以选择 模式(IP,链路层,TCP) 和 接口。一切设定完毕后,我们需要点击 开始 按钮。接着我们便会看到类似下面截图的东西:
72208632b348317f91.png (112.88 KB, 下载次数: 215) 2022-9-21 23:57 上传 tcpflow 是一个命令行工具,它可以捕捉 TCP 连接(流)的部分传输数据,并以一种方便协议分析或除错的方式来存储数据。它重构了实际的数据流并将每个流存储在不同的文件中,以备日后的分析。它能识别 TCP 序列号并可以正确地重构数据流,不管是在重发还是乱序发送状态下。 我们可以使用下面的命令通过 yum 包管理器在 Fedora 、CentOS 、RHEL 及它们的衍生发行版本中安装 tcpflow:
14458632b34e881caf.png (3.86 KB, 下载次数: 223) 2022-9-21 23:59 上传 假如你运行 64 位的 PC:
13698632b35569a3d4.png (7.05 KB, 下载次数: 219) 2022-9-22 00:01 上传 我们可以使用 tcpflow 来捕捉全部或部分 tcp 流量,并以一种简单的方式把它们写到一个可读的文件中。下面的命令就可以完成这个事情,但我们需要在一个空目录中运行下面的命令,因为它将创建诸如 x.x.x.x.y-a.a.a.a.z 格式的文件,运行之后,只需按 Ctrl-C 便可停止这个命令。
63805632b357384f42.png (4.02 KB, 下载次数: 217) 2022-9-22 00:01 上传 注意:请将上面的 eth0 替换为你想捕捉的网卡接口名称。 IPTraf 是一个针对 Linux 平台的基于控制台的网络统计应用。它生成一系列的图形,如 TCP 连接的包/字节计数、接口信息和活动指示器、 TCP/UDP 流量故障以及局域网内设备的包/字节计数。 在默认的软件仓库中可以找到 IPTraf,所以我们可以使用下面的命令通过 apt 包管理器轻松地安装 IPTraf:
39050632b35a2ea058.png (3.88 KB, 下载次数: 215) 2022-9-22 00:02 上传 我们可以使用下面的命令通过 yum 包管理器轻松地安装 IPTraf:
56096632b35be4992e.png (3.49 KB, 下载次数: 219) 2022-9-22 00:03 上传 我们需要以管理员权限来运行 IPTraf,并带有一个有效的网络接口名。这里,我们的网络接口名为 wlan2,所以我们使用 wlan2 来作为参 71750632b36a9c10ee.png (3.74 KB, 下载次数: 217) 2022-9-22 00:07 上传 73054632b36c16315b.png (280.2 KB, 下载次数: 221) 2022-9-22 00:07 上传 71311632b36dadb5d4.png (3.24 KB, 下载次数: 229) 2022-9-22 00:07 上传 39337632b36f17da0f.png (3.27 KB, 下载次数: 219) 2022-9-22 00:08 上传 93333632b3703ec5a0.png (3.62 KB, 下载次数: 206) 2022-9-22 00:08 上传 27763632b372647d8c.png (3.95 KB, 下载次数: 221) 2022-9-22 00:09 上传 Speedometer 是一个小巧且简单的工具,它只用来绘出一幅包含有通过某个给定端口的上行、下行流量的好看的图。 在默认的软件仓库中可以找到 Speedometer ,所以我们可以使用下面的命令通过 yum 包管理器轻松地安装 Speedometer:
74368632b37643b371.png (4.35 KB, 下载次数: 219) 2022-9-22 00:10 上传 Speedometer 可以简单地通过在 shell 或虚拟终端中执行下面的命令来运行:
73475632b37c328258.png (108.16 KB, 下载次数: 213) 2022-9-22 00:11 上传 Netwatch 是 netdiag 工具集里的一部分,它也显示当前主机和其他远程主机的连接情况,以及在每个连接中数据传输的速率。 我们可以使用 yum 在 fedora 中安装 Netwatch,因为它在 fedora 的默认软件仓库中。但若你运行着 CentOS 或 RHEL , 我们需要安装 rpmforge 软件仓库。 Trafshow 同 netwatch 和 pktstat 一样,可以报告当前活动的连接里使用的协议和每个连接中数据传输的速率。它可以使用 pcap 类型的过滤器来筛选出特定的连接。 我们可以使用 yum 在 fedora 中安装 trafshow ,因为它在 fedora 的默认软件仓库中。但若你正运行着 CentOS 或 RHEL , 我们需要安装 rpmforge 软件仓库。 为了使用 trafshow 来执行监控任务,我们需要在虚拟终端或 shell 中执行下面的命令:
19106632b387ec5bc6.png (317.68 KB, 下载次数: 226) 2022-9-22 00:14 上传 为了专门监控 tcp 连接,如下面一样添加上 tcp 参数:
16277632b38a60563a.png (314.15 KB, 下载次数: 223) 2022-9-22 00:15 上传 与大多数的其他工具相比,Vnstat 有一点不同。实际上它运行着一个后台服务或守护进程,并时刻记录着传输数据的大小。另外,它可以被用来生成一个网络使用历史记录的报告。 我们需要开启 EPEL 软件仓库,然后运行 yum 包管理器来安装 vnstat。
55155632b39a843950.png (3.32 KB, 下载次数: 226) 2022-9-22 00:19 上传 不带有任何选项运行 vnstat 将简单地展示出从该守护进程运行后数据传输的总量。
77888632b39e56a9a9.png (55.65 KB, 下载次数: 215) 2022-9-22 00:20 上传 为了实时地监控带宽使用情况,使用 ‘-l’ 选项(live 模式)。然后它将以一种非常精确的方式来展示上行和下行数据所使用的带宽总量,但不会显示任何有关主机连接或进程的内部细节。
24022632b3a055a3ce.png (3.17 KB, 下载次数: 221) 2022-9-22 00:21 上传
2737632b3a12be28d.png (27.2 KB, 下载次数: 172) 2022-9-22 00:21 上传 完成了上面的步骤后,按 Ctrl-C 来停止,这将会得到如下类型的输出:
3) slurm
10) tcpflow