Contents

Linux中的监视网络使用

1. 概述

在本文中,我们将研究用于监控 Linux 中网络使用情况的不同工具。特别是,我们将探索以下网络监控工具:

  • nload
  • speedometer
  • iftop
  • nethogs

2. 网络监控工具

我们可以使用大量工具来监控 Linux 中的网络使用情况。我们可以根据这些工具在系统中显示网络使用情况的详细程度来粗略地对其进行分类。

一方面,有一些工具可以将每个接口的网络使用情况报告为一个数字。它们只是汇总网络接口中的所有网络流量。

另一方面,有一些工具可以根据每个套接字或每个进程对网络使用情况进行分组。它们将不同的网络流量分组到各自的套接字或进程 ID 中。因此,这提供了有关网络带宽消耗的更详细信息。

让我们来看看 Linux 中的这些工具以及如何使用它们。

3. nload

nload 是一个命令行工具,可以显示系统上的网络使用情况。它属于Linux中网络监控工具的范畴,简单总结网络接口上的所有网络流量。

3.1. 安装

对于基于 Debian 的 Linux,我们可以使用apt-get 安装它:

$ apt-get install -y nload

另一方面,我们将为基于 RHEL 的 Linux 使用yum

$ yum install -y epel-release
$ yum install -y nload

3.2. 基本用法

在最简单的形式中,可以在不带任何参数的情况下调用nload

$ nload

该命令启动一个交互式屏幕:

Device eth0 [172.17.0.2] (1/4):
============================================================Incoming:
                                          Curr: 1.09 kBit/s
                                          Avg: 760.00 Bit/s
                                          Min: 0.00 Bit/s
                                          Max: 1.09 kBit/s
                                          Ttl: 16.98 MByte
Outgoing:
                                          Curr: 1.09 kBit/s
                                          Avg: 760.00 Bit/s
                                          Min: 0.00 Bit/s
                                          Max: 1.09 kBit/s
                                          Ttl: 361.65 kByte

显示屏顶部是我们当前正在监控的设备。使用左右箭头键,我们可以在系统可用的不同网络接口之间循环。 屏幕的其余部分显示传入和传出网络流量的网络使用情况。此外,它还提供了一个基本的统计数字,例如平均值、最小值和最大值。

3.2. 更改刷新间隔

默认情况下,网络使用情况每 500 毫秒更新一次。要更改刷新间隔,我们可以传递标志-t*后跟一个以毫秒为单位的整数值*。

例如,每 2000 毫秒刷新一次:

$ nload -t 2000

生成的屏幕将每 2 秒更新一次。

3.3. 设置单位

要更改网络流量速率的单位,我们可以使用标志-u:**

$ nload -u m

上面的命令运行nload程序并显示以每秒兆比特为单位的网络流量速率。 标志*-u*接受以下值:

  • b(对于位)或B(对于字节)
  • k(千位)或K(千字节)
  • m(兆位)或M(兆字节)
  • g(千兆位)或G(千兆字节)

此外,我们可以使用标志-U*更改传输数据总量的单位*。该标志还接受与标志*-u*相似的值。

3.4. 显示所有设备

我们可以使用标志-mnload*在一个屏幕上显示所有网络接口*。

$ nload -m

在这种模式下,我们可以在一个屏幕上查看所有接口的网络使用情况。但是,不会显示网络流量图。

4. speedometer

speedometer 是一款网络监控工具。与nload类似,它不会按套接字或进程区分网络接口上的网络流量。

然而,它与nload的区别在于speedometer的显示更加可定制

4.1. 安装

在基于 Debian 的 Linux 上,我们将使用apt-get安装speedometer

$ apt-get install -y speedometer

不幸的是,speedometeryum包管理器中不可用。

4.2. 基本用法

让我们监控网络接口eth0的传出网络流量速率:

$ speedometer -t eth0

/uploads/monitor_network_usage/1.png

运行该命令会在控制台输出中显示一个图表。此外,监控接口eth0speedometer实例会不断更新此图。

然后,我们可以在图表底部看到其他信息。

从左边开始,标签TX: eth0表示这是网络接口eth0的传输速率图。然后,标签右侧有 3 个数字。

第一个数字代表最后的采样率。接下来,第二个数字表示最后 6 个样本的加权平均值。权重使得最新的数字比旧的速率具有更大的权重。

最后,第三个数字是所有过去数据点的简单平均值。

4.3. 显示多个图形

我们可以使用标志-c*并排显示多个图形*。例如,我们可以并排显示接口eth0lo的接收速率:

$ speedometer -r eth0 -c -r lo

标志-c*用作分隔不同图形定义的定界符*。正如我们从命令中看到的那样,在标志*-c之后是参数-r lo*。该标志组合定义了接口lo的接收流量速率。

执行后,我们可以看到 2 个并排排列的图表,报告传入接口eth0lo 的流量。

5. iftop

iftop 是一个命令行工具,通过监听界面来显示网络使用情况。与nloadspeedometer相比,它监视每个套接字上的网络使用情况。

5.1. 安装

要在基于 Debian 的 Linux 上安装iftop,我们将使用apt-get

$ apt-get install -y iftop

对于基于 RHEL 的 Linux:

$ yum install -y epel-release
$ yum install -y iftop

5.2. 基本用法

我们可以不带任何参数地启动iftop

$ iftop

/uploads/monitor_network_usage/2.png

在不指定网络接口的情况下运行iftop会导致它在它可以找到的第一个外部接口上进行侦听。

5.3. 监控特定接口

使用标志*-i*,我们可以在特定接口上运行iftop

$ iftop -i lo

上面的命令使iftop监听* lo*接口。

5.4. 关闭 DNS 解析

默认情况下,iftop会尝试查找每个套接字连接的 IP 以获得其 DNS。但是,这可能是不可取的,因为它会在 DNS 解析期间强加一些网络开销。

要禁用 DNS 解析,我们可以使用标志-n启动iftop:**

$ iftop -n 

5.5. 监控特定网络

使用iftop,还可以使用标志-F**监视特定网络。比如我们可以将网络监控范围缩小到192.168.0.1/16这个网段:

$ iftop -F 192.168.0.1/16

该命令将启动iftop,它仅监控流入和流出属于 192.168.0.1/16 网络块的任何地址的任何流量。

可以使用网络掩码代替 CIDR 表示法。例如,可以使用显式掩码替换上述命令:

$ iftop -F 192.168.0.1/255.255.0.0

6. nethogs

nethogs 是另一个用于监控网络使用情况的命令行工具。它通过生成或接收网络流量的进程 ID 对网络接口上的网络流量进行分组。因此,我们将能够监控不同进程的网络带宽消耗。

6.1. 安装

要在基于 Debian 的 Linux 中安装nethogs ,我们将使用apt-get命令:

$ apt-get install -y nethogs

可以在基于 RHEL 的 Linux 上使用yum执行类似的安装:

$ yum install -y nethogs

6.2. 基本用法

让我们运行不带任何参数的nethogs命令:

$ nethogs

我们将立即看到一个交互式屏幕。

/uploads/monitor_network_usage/3.png

屏幕显示每个进程消耗的带宽。

PID列显示此行信息对应的进程 ID 。然后,启动进程的用户显示在USER列中。随后,PROGRAM列显示正在消耗带宽的程序。

DEV列中,我们可以看到接口的名称。最后,SENTRECEIVED列分别显示此进程发送和接收的字节数。

6.3. 交互控制

要在不同的显示模式之间循环,我们可以按m。可用的不同显示模式有千字节每秒、千字节、字节和兆字节。

请注意,在四种不同的模式中,只有第一种显示费率信息。其余显示模式以不同的指标前缀显示传输的数据量。

我们还可以通过 RECEIVED 或 SENT 值以交互方式对行进行排序。r键将按 RECEIVED 列对行进行排序。另一方面,按s键按 SENT 列对行进行排序。

6.4. 更改刷新间隔

要更改刷新间隔,我们可以使用标志*-d*:

$ nethogs -d 2

上面的命令以 2 秒的刷新率启动一个nethogs实例。

6.5. 跟踪模式

出于监控目的,我们可以以跟踪模式启动nethogs

$ nethogs -t

在跟踪模式下,生成报告并将其附加到控制台输出。因此,随着时间的推移向我们提供可用于进一步处理的报告流。