Solaris / Linux:nicstat 命令显示网络接口卡统计信息

nicstat 命令是网络接口卡 (NIC) 的顶级实用程序。 它显示有关所有网卡的信息和统计信息,例如数据包、每秒千字节数、平均数据包大小等。 它适用于 Solaris 和 Linux 操作系统。

在这篇文章中,我将解释怎样在 Debian / Ubuntu / RHEL / CentOS Linux 操作系统下安装和使用 nicstat 命令来查找有关您的 NIC 的统计信息。

旧的好 netstat -i 命令

-i 选项显示所有网络接口的表格以及以下信息:
# netstat -i

示例输出:

Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0 199549124      0      0      0 153882468      0      0      0 BMRU
eth1       1500   0 138357627      0    630      0 151312724      0      0      0 BMRU
lo        16436   0        0      0      0      0        0      0      0      0 LRU

但是,nicstat 提供有关您的 nic 的更多信息,例如:

  1. 显示 TCP 统计信息。
  2. 显示 UDP 统计信息。
  3. 报告字节输入和输出。
  4. 报告进出数据包。
  5. 报告 nic 利用率。
  6. 报告 nic 饱和度等。

第 1 步:下载并安装 nicstat

键入以下 wget 命令以下载最新版本的 nicstat :
# wget https://nchc.dl.sourceforge.net/project/nicstat/nicstat-1.92.tar.gz

提取焦油球

使用 tar 命令解压名为 nicstat-1.92.tar.gz 的 tar 球,输入:
# tar xvf nicstat-1.92.tar.gz

您将获得源代码和二进制文件:
# cd nicstat-1.92
# ls -la

示例输出:

drwxr-xr-x.  2 509833 wheel   4096 Mar 10 07:43 .
dr-xr-x---. 13 root   root    4096 Mar 10 07:43 ..
-rw-r--r--.  1 509833 wheel   4952 Oct 22 13:05 ChangeLog.txt
-rwxr-xr-x.  1 509833 wheel    475 Oct 15 16:49 dladm.sh
-rw-r--r--.  1 509833 wheel   1312 Oct 17 18:47 enicstat
-rw-r--r--.  1 509833 wheel   8902 Oct 17 18:47 LICENSE.txt
-rw-r--r--.  1 509833 wheel   1629 Sep  4  2012 Makefile.Linux
-rw-r--r--.  1 509833 wheel   1596 Oct 17 19:31 Makefile.Solaris
-rw-r--r--.  1 509833 wheel   9423 Oct 22 13:05 nicstat.1
-rw-r--r--.  1 509833 wheel  67376 Oct 22 13:05 nicstat.c
-rwxr-xr-x.  1 509833 wheel  29645 Mar 10 07:46 .nicstat.RedHat_5_i386
-rwxr-xr-x.  1 509833 wheel   4134 Oct 15 20:38 nicstat.sh
-rwxr-xr-x.  1 509833 wheel  69772 Oct 18 19:35 .nicstat.Solaris_10_i386
-rwxr-xr-x.  1 509833 wheel  74920 Oct 18 19:36 .nicstat.Solaris_10_sparc
-rwxr-xr-x.  1 509833 wheel  77700 Oct 18 19:37 .nicstat.Solaris_11_i386
-rwxr-xr-x.  1 509833 wheel  83636 Oct 18 19:39 .nicstat.Solaris_11_sparc
-rwxr-xr-x.  1 509833 wheel 112448 Oct 18 19:49 .nicstat.Solaris_9_i386
-rwxr-xr-x.  1 509833 wheel 127104 Oct 18 19:44 .nicstat.Solaris_9_sparc
-rwx------.  1 509833 wheel  32250 Oct 18 20:02 .nicstat.Ubuntu_8_i386
-rw-r--r--.  1 509833 wheel    834 Oct 22 13:05 README.txt

步骤 #2:安装所需的 32 位软件包

您需要安装 32 位 glibc 软件包。 它包含 nicstat 命令使用的标准库。 如果您使用的是 64 位版本,请仅安装以下软件包:

关于 Debian Linux 6.0.5 64 位版本的说明

键入以下命令以安装所需的 32 位 libc6:
$ sudo apt-get install libc6-i386

关于 Ubuntu Linux 12.04 LTS 64 位版本的说明

键入以下命令以安装所需的 32 位 libc6:
$ sudo apt-get install libc6:i386

cd 进入 nicstat 目录并键入以下命令以创建指向 Ubuntu_8_i386 二进制文件的软链接:
# cd nicstat-1.92
# ln -s .nicstat.Ubuntu_8_i386 .nicstat.Linux_i386

关于 CentOS / RHEL 6.4 64 位版本的说明

键入以下命令以安装所需的 32 位 libc6:
# yum install glibc.i686

cd 进入 nicstat 目录并键入以下命令以创建指向 .nicstat.RedHat_5_i386 二进制文件的软链接:
# cd nicstat-1.92
# ln -s .nicstat.RedHat_5_i386 .nicstat.RedHat_6_i386

怎样使用 nicstat 命令?

只需键入以下命令:
# ./nicstat.sh

示例输出:

传递 -x 选项以查看扩展输出:
# ./nicstat.sh -x

示例输出:

15:39:22      RdKB    WrKB   RdPkt   WrPkt   IErr  OErr  Coll  NoCP Defer  %Util
eth0         349.4   31.98   325.0   250.6   0.00  0.00  0.00  0.00  0.00   3.12
eth1         28.68   169.4   226.3   247.4   0.00  0.00  0.00  0.00  0.00   1.62

传递 -s 选项以查看扩展输出:
# ./nicstat.sh -s

示例输出:

    Time      Int          rKB/s          wKB/s
15:40:55     eth0        349.372         31.981
15:40:55     eth1         28.686        169.365

要每 1 秒打印一次摘要,请键入:
./nicstat.sh 1

要每 2 秒仅打印 5 次摘要,请键入:
./nicstat.sh 2 5

示例输出:

了解 nicstat 输出

上面输出显示中 nicstat 的字段是:

  1. 5:51:22 (HH:MM:SS) : 24 小时制样本结束时对应的时间。
  2. eth0eth1 : 接口名称。
  3. rKB/s :收到的千字节/秒。
  4. wKB/s :千字节/秒写入。
  5. rPk/s :每秒接收的数据包数。
  6. wPk/s :包/秒写入。
  7. rAvs :收到的数据包的平均大小)。
  8. wAvs :传输的数据包的平均大小。
  9. %有用 :接口的使用百分比。 对于全双工接口,这是 rKB/s 或 wKB/s 中较大的一个,作为接口速度的百分比。 对于半双工接口,rKB/s 和 wKB/s 相加。
  10. 星期六 :这是接口每秒看到的错误数。 接口可能接近饱和的指标。 该统计信息是由许多内核统计信息组合而成的。 建议在尝试诊断网络问题时使用 -x 选项来查看更多单独的统计信息。

怎样查看我的 TCP 网卡统计信息?

传递 -t 选项以查看 TCP 统计信息:
# ./nicstat.sh -t

示例输出:

16:13:44    InKB   OutKB   InSeg  OutSeg Reset  AttF %ReTX InConn OutCon Drops
TCP         0.00    0.00   811.3   592.2  0.01  0.02 0.000   12.6   2.09  0.02

在哪里,

  1. 知识库 :收到的千字节/秒。
  2. OutKB :传输的千字节/秒。
  3. 分割 : TCP 段/秒接收。
  4. OutSeg :每秒传输的 TCP 段数。
  5. 重启 :TCP 连接从 ESTABLISHED 状态或 CLOSE-WAIT 状态直接转换到 CLOSED 状态的次数。
  6. AttF : TCP 连接从 SYN-SENT 状态或 SYN-RCVD 状态直接转换到 CLOSED 状态的次数,加上 TCP 连接从 SYN 直接转换到 LISTEN 状态的次数-RCVD 状态。
  7. % ReTX :重新传输的 TCP 段的百分比——即传输的包含一个或多个先前传输的八位字节的 TCP 段的数量。
  8. 英康 :TCP 连接从 LISTEN 状态直接转换到 SYN-RCVD 状态的次数。
  9. 输出控制 : TCP 连接从 CLOSED 状态直接转换到 SYN-SENT 状态的次数。
  10. :从已完成连接队列和未完成连接队列中丢弃的连接数。

怎样查看我的 UDP 网卡统计信息?

传递 -u 选项以查看 UDP 统计信息:
# ./nicstat.sh -u

示例输出:

16:15:11                    InDG   OutDG     InErr  OutErr
UDP                         0.35    0.36      0.00    0.00

在哪里,

  1. 石墨烯 :UDP 数据报)/秒接收。
  2. OutDG :UDP 数据报)/秒传输。
  3. 误差 :收到的数据包由于包含错误而无法处理。
  4. 错误 :由于错误而没有成功传输的数据包。

其他选项

您可以组合选项
# ./nicstat.sh -x -t -u

或传递等效于 -x -t -u 的 -a 选项:
# ./nicstat.sh -a

示例输出:

16:34:10    InKB   OutKB   InSeg  OutSeg Reset  AttF %ReTX InConn OutCon Drops
TCP         0.00    0.00   545.4   448.5  2.71  0.03 0.000   10.9   21.3  0.00
16:34:10                    InDG   OutDG     InErr  OutErr
UDP                         0.01    0.01      0.00    0.00
16:34:10      RdKB    WrKB   RdPkt   WrPkt   IErr  OErr  Coll  NoCP Defer  %Util
eth0         348.9   31.94   324.5   250.3   0.00  0.00  0.00  0.00  0.00   3.12
eth1         28.71   169.2   227.1   248.1   0.00  0.00  0.00  0.00  0.00   1.62

打印 eth0 接口的统计信息,将“eth0”和“eth1”的速度分别设置为 100mbps/full-duplex 和 100mbps/full-duplex:
# ./nicstat.sh -S eth0:100Full,eth1:100Full 5

打印 eth0 接口的统计信息,将“eth0”和“eth1”的速度分别设置为 100mbps/半双工和 1000mbps/全双工:
# ./nicstat.sh -S eth0:100h,eth1:1000 5

参考:

  1. nicstat 博客条目.
  2. 项目主页 和/或 nicstat – Solaris 和 Linux 网络监控工具。
  3. nicstat 手册页