测量和解决Linux网络资源使用情况

时间:2020-03-21 11:46:18  来源:igfitidea点击:

测量网络使用情况并确定Debian Linux服务器上已建立的连接。

安装性能监控工具

如果尚未安装,请安装sysstat,vnstat和iftop:

# apt-get update && apt-get install sysstat vnstat iftop

对于RHEL/CentOS,请执行以下操作(必须启用EPEL存储库):

# yum install -y sysstat vnstat iftop

sysstat软件包包含我们今天将使用的sar和iostat系统性能工具。

确保在'/etc/default/sysstat'中启用了sar。
如果未启用,请执行此操作。

我们可能还希望将“/etc/sysstat/sysstat”中的历史记录值更改为不同于7天的值:

HISTORY=60

请注意,如果值大于28,则日志文件将保存在多个目录中,每个月一个。

默认情况下,sysstat将每10分钟收集一次数据。
我们可以通过修改cronjob'/etc/cron.d/sysstat'来更改此设置。

最后,重新启动服务:

# service sysstat restart

衡量网络使用情况

使用netstat的网络使用情况

netstat命令显示有关Linux网络子系统的信息。
默认情况下,netstat显示打开的套接字列表。

可以传递不同的参数以打印所需的信息类型。
下面列出了一些可用的参数:

  • -a:同时显示侦听和非侦听套接字。
  • -r:显示内核路由表。请注意,netstat -r和route -e产生相同的输出。但是,route -e命令需要root特权才能运行netstat -r不需要的特权。
  • -i:显示所有网络接口的表。
  • -e:显示其他信息。
  • -p:显示每个套接字所属的程序的PID和名称。
  • -l:仅显示监听套接字。
  • -t:显示TCP连接。
  • -u:显示UDP连接。
  • -c:每秒连续打印选择的信息。
  • -M:显示伪装的连接列表(仅适用于2.4之前的内核)。必须加载ipt_MASQUERADE模块。

在新内核(3.2 f.e.)上,出现以下消息:

$netstat -M
netstat: no support for `ip_masquerade' on this system.

建议在新内核上使用“/proc/net/ip_conntrack”以获取伪装的连接列表。

使用数字端口和地址(-n)显示所有已建立的TCP(-t)连接:

$netstat -nt | grep -i established
tcp

0    0 10.10.1.17:12

10.10.1.10:56839     ESTABLISHED
tcp

0    0 10.10.1.17:53669

10.10.1.8:10050

ESTABLISHED
tcp6     0    0 10.10.1.17:443

10.10.1.10:42590     ESTABLISHED
tcp6     0    0 10.10.1.17:443

10.10.1.10:42606     ESTABLISHED
tcp6     0    0 10.10.1.17:443

10.10.1.10:42605     ESTABLISHED

预览所有协议的网络统计信息(-s):

$netstat -s | less

vnstat的网络使用率

vnstat是基于控制台的网络流量监视器。
它记录选定接口的每小时,每日和每月网络流量。

显示eth0接口(-i)的网络使用情况:

$vnstat -i eth0
Database updated: Sat Mar  1 17:16:49 2014
   eth0 since 02/17/14

rx:  1.87 GiB

tx:  1.58 GiB

total:  3.45 GiB
   monthly

rx

|     tx

|    total    |   avg. rate

------------------------+-------------+-------------+--------------

Nov '14

1.61 GiB |    1.36 GiB |    2.97 GiB |   10.30 kbit/s

Mar '14    129.66 MiB |  119.31 MiB |  248.97 MiB |   32.79 kbit/s

------------------------+-------------+-------------+--------------

estimated

5.42 GiB |    5.00 GiB |   10.43 GiB |
   daily

rx

|     tx

|    total    |   avg. rate

------------------------+-------------+-------------+--------------

yesterday    156.53 MiB |  135.77 MiB |  292.30 MiB |   27.71 kbit/s

today    129.66 MiB |  119.31 MiB |  248.97 MiB |   32.79 kbit/s

------------------------+-------------+-------------+--------------

estimated

179 MiB |     165 MiB |     344 MiB |

选择eth0接口(-i)并使用短模式(-s)显示流量:

$vnstat -i eth0 -s

rx     /    tx     /   total   / estimated
 eth0:

Nov '14

1.61 GiB /  1.36 GiB /  2.97 GiB

Mar '14    129.66 MiB /119.31 MiB /248.97 MiB / 10.43 GiB

yesterday    156.53 MiB /135.77 MiB /292.30 MiB

today    129.66 MiB /119.31 MiB /248.97 MiB /   344 MiB

实时显示eth0接口的当前传输速率,直到被中断为止。
如果运行时间超过10秒,则会在中断后显示统计信息:

# vnstat -i eth0 -l
Monitoring eth0...    (press CTRL-C to stop)
   rx:

0 kbit/s     0 p/s

tx:

0 kbit/s     0 p/s^C
 eth0 /traffic statistics

rx

|

tx
--------------------------------------+-----------------
  bytes

176.99 MiB  |

704.42 MiB
--------------------------------------+-----------------

max

242.34 Mbit/s  |   251.37 Mbit/s

average

16.29 Mbit/s  |    64.84 Mbit/s

min

0 kbit/s  |

0 kbit/s
--------------------------------------+-----------------
  packets

325642  |

123123
--------------------------------------+-----------------

max

20681 p/s  |

5966 p/s

average

3658 p/s  |

1383 p/s

min

0 p/s  |

0 p/s
--------------------------------------+-----------------
  time

1.48 minutes

选择eth0接口(-i)并显示几天的流量(-d):

$vnstat -i eth0 -d
 eth0 /daily

day

rx

|     tx

|    total    |   avg. rate

------------------------+-------------+-------------+--------------

02/17/14     43.75 MiB |   16.66 MiB |   60.41 MiB |    5.73 kbit/s

02/18/14     94.95 MiB |   88.40 MiB |  183.35 MiB |   17.38 kbit/s

12/20/14

0 KiB |

0 KiB |

0 KiB |    0.00 kbit/s

02/18/14     24.16 MiB |   16.39 MiB |   40.55 MiB |    3.84 kbit/s

02/19/14    147.66 MiB |  131.22 MiB |  278.89 MiB |   26.44 kbit/s

02/20/14    161.49 MiB |  134.28 MiB |  295.76 MiB |   28.04 kbit/s

02/21/14    169.64 MiB |  137.29 MiB |  306.93 MiB |   29.10 kbit/s

02/22/14    166.96 MiB |  142.06 MiB |  309.02 MiB |   29.30 kbit/s

02/23/14    166.68 MiB |  139.80 MiB |  306.48 MiB |   29.06 kbit/s

02/24/14    170.39 MiB |  144.82 MiB |  315.21 MiB |   29.89 kbit/s

02/25/14    157.14 MiB |  137.00 MiB |  294.14 MiB |   27.89 kbit/s

02/26/14    168.33 MiB |  138.85 MiB |  307.18 MiB |   29.13 kbit/s

02/27/14    160.50 MiB |  136.23 MiB |  296.73 MiB |   28.13 kbit/s

02/28/14    156.53 MiB |  135.77 MiB |  292.30 MiB |   27.71 kbit/s

03/01/14    129.66 MiB |  119.31 MiB |  248.97 MiB |   32.79 kbit/s

------------------------+-------------+-------------+--------------

estimated

179 MiB |     165 MiB |     344 MiB |

sar的网络使用

报告来自网络设备(DEV)的网络(-n)统计信息:

$sar -n DEV 1 2
Linux 3.2.0-4-686-pae (flames) 	01/03/14 	_i686_	(2 CPU)
17:25:57   IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
17:25:58

lo     14.14     14.14

Average:   IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:

lo

7.04

7.04

0.38

0.38

0.00

0.00

0.00
Average:    eth0    202.51    201.51

0.00

0.00

0.00

0.00

0.00

显示以下值(根据手册页):

  • IFACE:报告其统计信息的网络接口的名称。
  • rxpck/s:每秒接收的数据包总数。
  • txpck/s:每秒传输的数据包总数。
  • rxkB/s:每秒接收的千字节总数。
  • txkB/s:每秒传输的千字节总数。
  • rxcmp/s:每秒接收的压缩数据包数。
  • txcmp/s:每秒传输的压缩数据包数。
  • rxmcst/s:每秒接收到的组播数据包数。

从网络设备(DEV)开始(-s)1 PM和结束(-e)2 PM时间间隔报告历史网络(-n)统计信息:

$sar -n DEV -s 13:00:00 -e 14:00:00
Linux 3.2.0-4-686-pae (flames) 	01/03/14 	_i686_	(2 CPU)
13:05:01   IFACE   rxpck/s  txpck/s  rxkB/s  txkB/s  rxcmp/s  txcmp/s  rxmcst/s
13:15:01

0.00
13:45:01    eth0    137.24   143.68    0.00    0.00     0.00     0.00

0.00
13:55:01

lo     26.50    26.50   39.18   39.18     0.00     0.00

0.00
13:55:01    eth0    148.30   151.32    0.00    0.00     0.00     0.00

0.00
Average:

lo     23.71    23.71   18.39   18.39     0.00     0.00

0.00
Average:    eth0    146.13   149.66    0.00    0.00     0.00     0.00

0.00

为了获得最终的sar体验,请尝试以下命令:

$sar -n ALL 1 1

iftop的网络使用率

iftop命令显示指定接口或者它可以找到的第一个外部接口的网络带宽使用情况。
必须以足够的权限(通常以root用户身份)运行Iftop来监视所有网络流量。

在单独的行上获取所有具有发送和接收流量的TCP连接:

# iftop -nNPb -i eth0 -f tcp
----------------------------------------------------------------------------------
10.10.1.17:12

=> 10.10.1.10:56536

3.78kb  4.03kb  3.94kb

<=

416b    493b    316b
10.10.1.17:51909

=> 10.10.1.8:10050

0b    233b     61b

<=

0b    232b     61b
10.10.1.17:51918

=> 10.10.1.8:10050

0b    234b     61b

<=

0b    231b     61b 
10.10.1.17:51921

=> 10.10.1.8:10050

1.14kb   233b     61b

<=

1.13kb   232b     61b 
10.10.1.17:51902

=> 10.10.1.8:10050

0b    232b     61b

<=

0b    232b     61b 
10.10.1.17:51912

=> 10.10.1.8:10050

0b    232b     61b

<=

0b    232b     61b 
10.10.1.17:51915

=> 10.10.1.8:10050

0b    231b     61b

<=

0b    231b     61b 
10.10.1.17:443

=> 10.10.1.10:42515

0b     42b   76.2kb

<=

0b     42b   1.74kb 
10.10.1.17:443

=> 10.10.1.10:42509

0b     42b   1.94kb

<=

0b     42b   1.39kb 
10.10.1.17:443

=> 10.10.1.10:42527

0b     42b    433b

<=

0b     42b    495b
----------------------------------------------------------------------------------
TX:

cum:    642kB   peak:   1.62Mb     rates:   4.92kb  5.63kb   135kb
RX:

200kB

288kb

1.54kb  2.08kb  42.1kb
TOTAL:

842kB

1.75Mb

6.46kb  7.72kb   177kb

使用的参数如下:

  • -n:不进行主机名查找。
  • -N:不将端口号解析为服务名称。
  • -P:打开端口显示。
  • -b:不显示流量条形图。
  • -i:侦听指定接口上的数据包。
  • -f:使用过滤器代码选择要计数的IP数据包。

获取显示的SSH端口12的总流量(请注意,我们在此处使用自定义SSH端口,默认值为TCP 22):

# iftop -nNPb -i eth0 -f "dst port 12"
------------------------------------------------------------------------------
10.10.0.17:12

<=> 10.10.0.10:56536

160b   2.17kb   555b
10.10.0.17:12

<=> 10.10.0.10:36030

0b   1.68kb   431b
10.10.0.17:12

<=> 10.10.0.10:1692

160b    160b    194b
------------------------------------------------------------------------------
TX:

cum:

0B    peak:

0b

rates:

0b

0b

0b
RX:

15.0kB

11.0kb

160b   4.00kb  1.78kb
TOTAL:

15.0kB

11.0kb

160b   4.00kb  1.78kb

提示:使用“ t”在四种线路显示模式之间循环;默认的2行显示(在单独的行上具有已发送和已接收的通信量)和3个1行显示(其中显示已发送,已接收或者总的通信量)。