在本教程中,让我们讨论可用于 linux 系统的最佳网络监控工具。有很多可用的工具,如 nethogs、ntopng、nload、iftop、iptraf、bmon、slurm、tcptrack、cbm、netwatch、collectl、trafshow、cacti、etherape、ipband、jnettop、netspeed 和 speedometer。

上述工具中的每一个都有自己的特点,但最终它们所做的只是监控网络流量,而且实际上并没有一种方法可以完成这项工作。例如,nethogs 可用于显示每个进程的带宽,以防您想知道消耗整个网络资源的应用程序,iftop 可用于显示每个套接字连接的带宽,nload 等工具可帮助获取有关整体带宽的信息。

1) nethogs

nethogs 是一个免费工具,在找出哪个 PID 导致网络流量出现问题时非常方便,因为它按进程对带宽进行分组,而不是像大多数工具那样按协议或每个子网分解流量。它功能丰富,支持 IPv4 和 IPv6,在我看来,当您想要识别占用您的 Linux 机器上所有带宽的程序时,它是最好的实用程序。

linux 用户可以使用nethogs显示每个进程的 TCP 下载和上传速度,使用命令nethogs eth0监控特定设备,其中 eth0 是您要从中获取信息的设备的名称,还可以获取有关速度的信息当前正在传输数据。

对我来说 nethogs 非常易于使用,可能是因为我非常喜欢它,以至于我一直使用它来监控我的 Ubuntu 12.04 LTS 机器上的网络带宽。

例如,要嗅探混杂,使用-p选项,如以下命令所示。

nethogs -p wlan0

如果您想了解有关 nethogs 的更多信息并以非常深入的方式探索它,请不要犹豫,阅读我们关于此网络带宽监控工具的完整教程。

2) nload

nload是一个控制台应用程序,可用于实时监控网络流量和带宽使用情况,它还通过提供两个易于理解的图表来可视化流量。这个很酷的网络监控工具还可以用于在监控时在设备之间切换,这可以通过按左右箭头键来完成。

grafana的Linux主机基础监控 linux监控服务_linux

从上面的 nload 工具提供的屏幕截图可以看出,它非常容易理解,提供有用的信息,还显示传输数据总量和最小/最大网络使用量等附加信息。

更酷的是,您可以在以下命令的帮助下运行工具 nload,该命令似乎非常简短且易于记忆。

nload

我非常确定我们关于如何使用 nload 的详细教程将帮助新的 linux 用户,甚至是正在寻找更多信息的有经验的用户。

3) slurm

slurm 是另一个用于 linux 的网络负载监控工具,它显示了一个漂亮的 ascii grap 的结果,它还支持许多交互键,例如c切换到经典模式,s切换到拆分图形模式,r重绘屏幕,L到启用 TX/RX led,m在经典拆分和大视图之间切换,q退出 slurm。

grafana的Linux主机基础监控 linux监控服务_网络接口_02

网络负载监控工具 slurm 中还有其他一些可用的键,您可以使用以下命令在手册页中轻松研究它们。

man slurm

slurm 在 Ubuntu 和 Debian 的官方存储库中可用,因此这些发行版的用户可以使用 apt-get install 命令轻松下载,如下所示。

sudo apt-get install slurm

我们已经在教程中介绍了 slurm 的使用,所以请访问它并且不要忘记与其他 linux 朋友分享知识。

4)iftop

当您想按主机显示接口上的带宽使用情况时,iftop 是一个非常有用的工具。根据手册页iftop侦听命名接口上的网络流量,或者如果没有指定,它可以在第一个接口上找到看起来像外部接口的网络流量,并显示成对主机的当前带宽使用表。

Ubuntu 和 Debian 用户可以通过在终端上使用以下命令轻松地在他们的机器上安装 iftop。

sudo apt-get install iftop

使用以下命令在您的机器上使用 yum 安装 iftop

yum -y install iftop

5) collectl

collectl可用于收集描述当前系统状态的数据,它支持以下模式:

  • record录制模式
  • playback播放模式

记录模式允许从实时系统获取数据并将其显示在终端上或写入一个或多个文件或套接字。

播放模式

根据此模式中的手册页,数据是从在记录模式下生成的一个或多个数据文件中读取的。

Ubuntu 和 Debian 用户可以使用他们的默认包管理器在他们的机器上安装 collectl。以下命令将为他们完成这项工作。

sudo apt-get install collectl

使用以下命令,因为这些发行版在其官方存储库中也有 collectl。

yum install collectl

6) netstat

Netstat是一个命令行工具,用于监控传入和传出的网络数据包统计信息以及接口统计信息。它显示传输控制协议的网络连接(传入和传出)、路由表以及一些网络接口(网络接口控制器或软件定义的网络接口)和网络协议统计信息。

Ubuntu 和 Debian 用户可以使用默认的包管理器在他们的机器上安装 netstat。Netstat 软件包含在 net-tools 软件包中。并且可以通过在 shell 或终端中运行以下命令来安装:

sudo apt-get install net-tools

CentOS、Fedora、RHEL 用户可以使用默认的包管理器在他们的机器上安装 netstat。Netstat 软件包含在 net-tools 软件包中。并且可以通过在 shell 或终端中运行以下命令来安装:

yum install net-tools

只需运行以下命令即可使用 Netstat 监控网络数据包统计信息:

netstat

grafana的Linux主机基础监控 linux监控服务_网络接口_03

有关 netstat 的更多信息或手册,我们可以简单地在 shell 或终端中键入man netstat :

man netstat

grafana的Linux主机基础监控 linux监控服务_grafana的Linux主机基础监控_04

7) netload

netload 命令仅显示有关当前流量负载的小报告,以及自程序启动以来传输的总字节数。没有更多的功能。它是网络诊断的一部分。

我们可以在 fedora 中使用 yum 安装 Netload,因为它在默认存储库中。但如果您运行的是 CentOS 或 RHEL,我们需要安装rpmforge 存储库 。

# yum install netdiag

Netload 作为 netdiag 的一部分在默认存储库中可用,因此,我们可以使用apt manager 使用以下命令轻松安装netdiag 。

$ sudo install netdiag

要运行 netload,我们必须确保选择一个有效的网络接口名称,如 eth0、eh1、wlan0、mon0 等。并在 shell 或终端中相应地运行以下命令。

$ netload wlan2

注意:请将 wlan2 替换为您要使用的网络接口名称。如果您想扫描您的网络接口名称,请在终端或 shell 中运行 ip link show。

8) nagios

Nagios 是一个领先的开源强大监控系统,使网络/系统管理员能够在服务器相关问题影响主要业务流程之前识别和解决它们。使用 Nagios 系统,管理员可以在单个窗口上监控远程 Linux、Windows、交换机、路由器和打印机。它显示严重警告并指示您的网络/服务器中是否出现问题,间接帮助您在修复过程发生之前开始修复过程。

Nagios 有一个 Web 界面,其中有一个活动的图形监视器。可以通过浏览 URL  http://localhost/nagios/ 或 http://localhost/nagios3/ 来登录 Web 界面。如果在远程机器上,请将 localhost 替换为您的 IP 地址。然后输入用户名并通过,我们将看到如下所示的信息。

grafana的Linux主机基础监控 linux监控服务_linux_05

9) EtherApe

EtherApe 是一个仿照 etherman 的 Unix 图形网络监视器。具有链路层、IP 和 TCP 模式,支持以太网、FDDI、令牌环、ISDN、PPP、SLIP 和 WLAN 设备接口,以及多种封装格式。主机和链接的大小随流量和颜色编码协议显示而变化。它可以过滤要显示的流量,并且可以从文件中读取数据包,也可以从网络中实时读取数据包。

在 Linux 的 CentOS、Fedora、RHEL 发行版中安装 etherape 很容易,因为它们在其官方存储库中默认可用。我们可以使用 yum manager 来安装它,命令如下所示:

yum install etherape

我们可以使用apt manager 和以下命令在 Ubuntu、Debian 及其衍生产品上安装 EtherApe 。

sudo apt-get install etherape

在系统上安装 EtherApe 后,我们需要以 root 权限运行 etherape,如下所示:

sudo etherape

然后,将执行etherape的GUI。然后,在菜单中,我们可以在Capture下选择模式(IP、链路层、TCP)和接口。一切都设置好后,我们需要点击 开始按钮。然后,我们会看到这样的东西。

grafana的Linux主机基础监控 linux监控服务_网络接口_06

10) tcpflow

tcpflow是一个命令行实用程序,它捕获作为 TCP 连接(流)的一部分传输的数据,并以便于协议分析或调试的方式存储数据。它重建实际数据流并将每个流存储在单独的文件中以供以后分析。它理解 TCP 序列号,无论重传还是乱序传递,都能正确重构数据流。

在 Ubuntu 和 Debian 系统中安装 tcpflow 很容易通过apt manager 安装,因为它默认在官方存储库中可用。

$ sudo apt-get install tcpflow

我们可以使用yum管理器在 Fedora、CentOS、RHEL 及其衍生产品中安装 tcpflow,如下所示。

# yum install tcpflow

如果存储库中不可用或无法通过 yum manager 安装,我们需要从 http://pkgs.repoforge.org/tcpflow/手动安装 ,如下所示。

如果您运行的是 64 位 PC:

# yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.x86_64.rpm

如果您运行的是 32 位 PC:

# yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.i686.rpm

我们可以使用 tcpflow 捕获所有/部分 tcp 流量并将其放入易于阅读的文件中。下面的命令执行我们想要的操作,但我们需要在空目录中运行该命令,因为它会创建格式为 xxxxy-aaaaz 的文件,完成后,只需按 Control-C 该命令即可停止它。

$ sudo tcpflow -i eth0 port 8000

注意:请将 eth0 替换为您要捕获的卡的接口。

11)IPTraf

IPTraf是一个基于控制台的 Linux 网络统计实用程序。它收集各种数据,例如 TCP 连接数据包和字节数、接口统计和活动指标、TCP/UDP 流量故障以及 LAN 站数据包和字节数。

IPTraf 在默认存储库中可用,因此我们可以使用apt manager 使用以下命令轻松安装 IPTraf。

$ sudo apt-get install iptraf

IPTraf 在默认存储库中可用,因此我们可以使用yum  manager 使用以下命令轻松安装 IPTraf。

# yum install iptraf

我们需要使用有效的网络接口名称以管理权限运行 TPTraf。在这里,我们有 wlan2,所以我们将使用 wlan2 作为接口名称。

$ sudo iptraf

grafana的Linux主机基础监控 linux监控服务_网络_07

要启动通用接口统计,请输入:

# iptraf -g

在名为 eth0 的接口上查看详细的统计信息

# iptraf -d wlan2

在名为 eth0 的接口上查看 TCP 和 UDP 监视器

# iptraf -z wlan2

在名为 eth0 的接口上显示数据包大小计数

# iptraf -z wlan2

注意:请将 wlan2 替换为您的接口名称。您可以通过运行命令 ip link show 来检查您的界面。

12) speedometer

Speedometer是一个小而简单的工具,它只是通过给定的界面绘制出漂亮的进出流量图表。

Speedometer 在默认存储库中可用,因此我们可以使用yum  manager 使用以下命令轻松安装 Speedometer。

# yum install speedometer

Speedometer 在默认存储库中可用,因此我们可以使用apt manager 使用以下命令轻松安装 Speedometer。

$ sudo apt-get install speedometer 

Speedometer 可以通过在 shell 或终端中执行以下命令来简单地运行。

 $ speedometer -r wlan2 -t wlan2

grafana的Linux主机基础监控 linux监控服务_linux_08

注意:请将 wlan2 替换为您要使用的网络接口名称。

13) netwatch

Netwatch 是 netdiag 工具集的一部分,它还显示本地主机和其他远程主机之间的连接,以及每个连接上数据传输的速度。

我们可以在 Fedora 中使用 yum 安装 Netwatch,因为它在默认存储库中。但如果您运行的是 CentOS 或 RHEL,我们需要安装rpmforge 存储库 。

# yum install netwatch

Netwatch 作为 netdiag 的一部分在默认存储库中可用,因此,我们可以使用apt manager 使用以下命令轻松安装netdiag 。

$ sudo apt install netdiag

要运行 netwatch,我们需要在终端或 shell 中执行以下命令。

$ sudo netwatch -e wlan2 -nt

grafana的Linux主机基础监控 linux监控服务_grafana的Linux主机基础监控_09

注意:请将 wlan2 替换为您要使用的网络接口名称。如果您想扫描您的网络接口名称,请在终端或 shell 中运行 ip link show。

14) trafshow

Trafshow 报告当前活动连接,如 netwatch 和 pktstat、trafshow、它们的协议和每个连接上的数据传输速度。它可以使用 pcap 类型过滤器过滤掉连接。

我们可以在 Fedora 中使用 yum 安装 Netwatch,因为它在默认存储库中。但如果您运行的是 CentOS 或 RHEL,我们需要安装rpmforge 存储库。

# yum install trafshowTrafshow 在默认存储库中可用,因此我们可以使用apt manager 使用以下命令轻松安装它。

$ sudo apt install trafshow

要使用 trafshow 进行监控,我们需要在 shell 或终端中运行以下命令。

$ sudo trafshow -i wlan2

grafana的Linux主机基础监控 linux监控服务_服务器_10

要专门监控 tcp 连接,请添加 tcp,如下所示。

 $ sudo trafshow -i wlan2 tcp

 

grafana的Linux主机基础监控 linux监控服务_服务器_11

注意:请将 wlan2 替换为您要使用的网络接口名称。如果您想扫描您的网络接口名称,请在终端或 shell 中运行 ip link show。

15) Vnstat

Vnstat 与大多数其他工具有点不同。它实际上运行一个后台服务/守护进程,并一直记录数据传输的大小。接下来,它可用于生成网络使用历史报告。

我们需要打开 EPEL Repository 然后运行yum manager 来安装 vnstat。

# yum install vnstat

 Vnstat 在默认存储库中可用。因此,我们可以使用以下命令运行apt manager 来安装它。

$ sudo apt-get install vnstat

不带任何选项运行 vnstat 只会显示自守护程序运行之日以来发生的数据传输总量。

$ vnstat

grafana的Linux主机基础监控 linux监控服务_grafana的Linux主机基础监控_12

要实时监控带宽使用情况,请使用“-l”选项(实时模式)。然后它将显示传入和传出数据使用的总带宽,但以非常精确的方式显示没有关于主机连接或进程的任何内部细节。

 $ vnstat -l

grafana的Linux主机基础监控 linux监控服务_linux_13

完成后,按 Ctrl-C 停止,将产生以下类型的输出

grafana的Linux主机基础监控 linux监控服务_grafana的Linux主机基础监控_14

16) tcptrack

tcptrack显示它在给定网络接口上看到的 TCP 连接的状态。tcptrack 监控它们的状态并在一个排序的、更新的列表中显示状态、源/目标地址和带宽使用等信息,非常类似于top 命令。

由于 tcptrack 在存储库中,我们可以使用apt manager 从它们的存储库中简单地在 Debian、Ubuntu 中安装 tcptrack。为此,我们需要在 shell 或终端中执行以下命令:

$ sudo apt-get install tcptrack

我们可以在 fedora 中使用 yum 安装它,因为它在默认存储库中。但如果您运行的是 CentOS 或 RHEL,我们需要安装rpmforge 存储库 。为此,我们需要运行以下命令。

# wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# rpm -Uvh rpmforge-release*rpm
# yum install tcptrack

注意:在这里,我们下载了当前最新版本的 rpmforge-release 即 0.5.3-1 。您始终可以从 rpmforge 存储库获取最新版本,并替换为您在上述命令中下载的版本。

tcptrack需要以 root 权限或超级用户运行。我们需要使用我们想要监控其 TCP 连接的网络接口名称来执行 tcptrack。在这里,我们有wlan2,所以将其用作:

sudo tcptrack -i wlan2

grafana的Linux主机基础监控 linux监控服务_grafana的Linux主机基础监控_15

如果您想监控特定端口,则:

# tcptrack -i wlan2 端口 80

grafana的Linux主机基础监控 linux监控服务_网络接口_16

请将 80 替换为您要监控的端口号。注意:请将 wlan2 替换为您要使用的网络接口名称。如果您想扫描您的网络接口名称,请在终端或 shell 中运行 ip link show 。

17) CBM

CBM 或彩色带宽表显示所有网络设备的当前流量。这个程序非常简单,应该是不言自明的。CBM 的源代码和更新版本可在 http://www.isotton.com/utils/cbm/获得 。

由于 CBM 在存储库中,我们可以使用apt manager 从它们的存储库中简单地在 Debian、Ubuntu 中安装 CBM。为此,我们需要在 shell 或终端中执行以下命令:

$ sudo apt-get install cbm

我们只需要在 shell 或终端中运行 cbm,如下所示:

$ cbm

grafana的Linux主机基础监控 linux监控服务_网络_17

18) bmon

Bmon或带宽监控是一种用于在实时访问中调试和监控带宽的工具。该工具能够从各种输入模块中检索统计信息。它提供了各种输出方法,包括基于 curses 的界面、轻量级 HTML 输出以及可格式化的 ASCII 输出。

bmon 在存储库中可用,因此我们可以使用 apt manager 从它们的存储库将其安装在 Debian、Ubuntu 中。为此,我们需要在 shell 或终端中运行以下命令。

$ sudo apt-get install bmon

我们可以使用以下命令运行 bmon 并监控我们的带宽状态。

$ bmon

grafana的Linux主机基础监控 linux监控服务_网络接口_18

19) tcpdump

TCPDump是一个用于网络监控和数据采集的工具。它可以节省大量时间,可用于调试网络或服务器相关问题。它打印出网络接口上与布尔表达式匹配的数据包内容的描述。

tcpdump 在 Debian,Ubuntu 的默认存储库中可用,因此,我们可以简单地使用 apt manager 在 sudo 权限下安装它。为此,我们需要在 shell 或终端中运行以下命令。

$ sudo apt -get install tcpdump

tcpdump 也可以在 Fedora、CentOS、RHEL 的存储库中使用,所以我们可以通过 yum manager 安装它:

# yum install tcpdump

tcpdump 需要以 root 权限或超级用户运行。我们需要 使用我们想要监控其 TCP 连接的网络接口名称执行tcpdump 。在这里,我们有 wlan2,所以将其用作:

$ sudo tcpdump -i wlan2

grafana的Linux主机基础监控 linux监控服务_网络接口_19

如果您只想监视特定端口,则可以运行以下命令。这是端口 80(网络服务器)的示例。

$ sudo tcpdump -i wlan2 'port 80'

grafana的Linux主机基础监控 linux监控服务_grafana的Linux主机基础监控_20

20)ntopng

ntopng是原始 ntop 的下一代版本。它是一种网络探针,它以类似于 top 对进程所做的方式显示网络使用情况。ntopng 基于 libpcap,它以可移植的方式编写,以便在每个 Unix 平台、MacOSX 和 Win32 上虚拟运行。

要在 Debian、Ubuntu 系统中安装 ntopng,我们首先需要安装所需的依赖包来编译 ntopng。您可以通过在 shell 或终端中运行以下命令来安装它们。

$ sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev build-essential checkinstall

现在,我们需要为我们的系统手动编译 ntopng:

$ sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download
$ sudo tar zxfv ntopng-1.1_6932.tgz
$ sudo cd ntopng-1.1_6932

$ sudo ./configure

$ sudo make

$ sudo make install

现在,您应该在 Debian 或 Ubuntu 系统中安装了 ntopng。

我们已经介绍了有关 ntopng 用法的教程。它在命令行和 Web 界面中都可用。我们可以继续了解它。

结论

在第一部分中,我们介绍了一些用于 linux 的网络负载监控工具,它们对系统管理员甚至新手用户都非常有帮助。本文介绍的每个工具都有自己的细节和不同的选项,但最终它们都可以帮助您监控网络流量。