如何使用顶层,Netstat,Du和其他工具来监控服务器资源

监控服务器的资源是每个管理员的重要任务。有许多命令行工具为此目的。本指南将介绍一些更流行的用于监视VPS的工具。

如何监控系统的健康?

每个计算机系统都受益于适当的管理和监控。 密切关注系统运行情况将有助于您发现问题并快速解决问题。

有很多为此目的创建的命令行实用程序。 本指南将向您介绍一些在您的工具箱中最有用的应用程序。

目录

  1. 如何监控过程利用率?
  2. 如何确定哪个程序正在使用我的带宽?
  3. 如何知道我有多少磁盘空间?
  4. 如何知道我的内存是如何使用的?
  5. 结论

如何监控过程利用率?

最佳

之一的用于检查的进程的资源利用的最常用的工具是“ 顶部 ”。

Top提供了一个简单,实时的流程表,其中最大的消费者:

top
top - 14:45:52 up 29 min,  1 user,  load average: 0.10, 0.09, 0.06
Tasks:  56 total,   1 running,  55 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1019600k total,   393756k used,   625844k free,    11136k buffers
Swap:        0k total,        0k used,        0k free,   316748k cached

  PID %MEM  VIRT SWAP  RES CODE DATA  SHR nFLT nDRT S  PR  NI %CPU COMMAND     
  832  1.3 32364  18m  12m  896  11m 1688    1    0 S  20   0  0.0 bash         
  820  0.4 89456  83m 4008  488  948 3040   12    0 S  20   0  0.0 sshd         
  812  0.3 49948  46m 2828  488  616 2216    0    0 S  20   0  0.0 sshd         
    1  0.2 24192  21m 2108  152  868 1300   23    0 S  20   0  0.0 init         
  400  0.1  243m 242m 1420  344 216m 1084    0    0 S  20   0  0.0 rsyslogd

顶部有一些系统统计信息,包括过去一分钟,5分钟和15分钟的负载平均值。 它还显示内存和交换使用情况,以及各种进程状态的计数。

底部部分具有系统上的每个进程,由资源的最高用户组织。 此列表实时更新。

htop

虽然“顶部”在被包括默认几乎每个分布,改进的版本,称为“HTOP”是可从多数库下载。

要在Ubuntu上安装htop,请键入以下内容:

sudo apt-get install htop

运行htop,我们可以看到它有一个类似的输出,但是是彩色的,并且更具交互性:

htop
CPU[|                         0.7%]     Tasks: 21, 3 thr; 1 running
  Mem[|||||||||||||         64/995MB]     Load average: 0.00 0.02 0.05 
  Swp[                         0/0MB]     Uptime: 00:37:37

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 2752 root       20   0 25660  1876  1364 R  0.0  0.2  0:00.06 htop
    1 root       20   0 24192  2108  1300 S  0.0  0.2  0:00.55 /sbin/init
  312 root       20   0 17224   640   444 S  0.0  0.1  0:00.04 upstart-udev-brid
  314 root       20   0 21592  1360   760 S  0.0  0.1  0:00.04 /sbin/udevd --dae
  394 messagebu  20   0 23808   688   436 S  0.0  0.1  0:00.01 dbus-daemon --sys
  401 syslog     20   0  243M  1420  1084 S  0.0  0.1  0:00.07 rsyslogd -c5
  402 syslog     20   0  243M  1420  1084 S  0.0  0.1  0:00.00 rsyslogd -c5

顶部部分更容易阅读,底部部分以更清晰的方式组织。

这里有一些键,将帮助您更有效地使用htop:

  • L:通过内存使用量排序的进程
  • 病人 :由处理器使用率排序进程
  • 访问帮助
  • K:杀电流/标签的过程
  • F2:设置HTOP。 您可以在这里选择显示选项。
  • /搜索过程

有很多更多的选项,你可以通过帮助或设置访问。 这些应该是你探索htop的功能的第一站。

如何确定哪个程序正在使用我的带宽?

nethogs

如果您的网络连接似乎饱和,无法确定哪个应用程序是罪魁祸首,一个叫“nethogs”计划是找出一个不错的选择。

在Ubuntu上,可以使用以下命令安装nethogs:

sudo apt-get install nethogs

我们可以通过简单的输入:

nethogs
NetHogs version 0.8.0

  PID USER     PROGRAM                      DEV        SENT      RECEIVED       
3379  root     /usr/sbin/sshd               eth0       0.485       0.182 KB/sec
820   root     sshd: root@pts/0             eth0       0.427       0.052 KB/sec
?     root     unknown TCP                             0.000       0.000 KB/sec

  TOTAL                                                0.912       0.233 KB/sec

正如你可以看到的,首先,nethogs输出很简单。 它将每个应用程序与其关联的网络流量相关联。

只有几个命令可以用来控制网猪:

  • :“KB /秒”,“KB”,“B”之间切换显示,和“MB”。
  • R:排序交通好评。
  • 小号 :排序交通发送。
  • :退出

虽然这是一个简单的工具,nethogs是一个伟大的方式来关联流量与特定的应用程序。

IPTraf

IPTraf是另一个去监测网络流量的好方法。 它提供了许多不同的交互式监视接口。

在Ubuntu上,您可以使用以下命令安装IPTraf:

sudo apt-get install iptraf

要运行程序,只需使用root权限从命令行调用它:

sudo iptraf
                      ???????????????????????????????????
                      ? IP traffic monitor              ?
                      ? General interface statistics    ?
                      ? Detailed interface statistics   ?
                      ? Statistical breakdowns...       ?
                      ? LAN station monitor             ?
                      ???????????????????????????????????
                      ? Filters...                      ?
                      ???????????????????????????????????
                      ? Configure...                    ?
                      ???????????????????????????????????
                      ? Exit                            ?
                      ???????????????????????????????????

使用此菜单,您可以选择要访问的接口。

例如,要了解所有网络流量的概况,我们可以选择第一个菜单,然后选择“所有接口”。 它会给你一个看起来像这样的屏幕:

IPTraf
? TCP Connections (Source Host:Port) ?????????? Packets ??? Bytes Flags  Iface ?
??192.241.xxx.xxx:22                          >     369     82420 -PA-   eth0  ?
??72.43.xxx.xxx:49488                         >     381     19860 --A-   eth0  ?
?                                                                              ?
?                                                                              ?

在这里,您可以看到您在所有网络接口上正在通信的IP地址。

如果你想有解析为域名的IP地址,可以通过退出屏幕的交通,选择“配置”,然后选择“ 反向DNS查找 ”启用反向DNS查找。

您还可以启用“TCP / UDP服务名称 ”使用服务,而不是端口的名称显示。

启用这两个选项后,显示可能如下所示:

 TCP Connections (Source Host:Port) ?????????? Packets ??? Bytes Flags  Iface ?
??192.241.xxx.xxx:ssh                         >     151     34924 -PA-   eth0  ?
??rrcs-72-43-xxx-xxx.nyc.biz.rr.co:49488      >     155      8108 --A-   eth0  ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
?                                                                              ?
? TCP:      1 entries ???????????????????????????????????????????????? Active ??
????????????????????????????????????????????????????????????????????????????????
? UDP (72 bytes) from 192.241.xxx.xxx:43463 to 8.8.8.8:domain on eth0          ?
? UDP (66 bytes) from 192.241.xxx.xxx:53140 to 8.8.8.8:domain on eth0          ?
? UDP (135 bytes) from 8.8.8.8:domain to 192.241.xxx.xxx:41429 on eth0         ?
? UDP (119 bytes) from 8.8.8.8:domain to 192.241.xxx.xxx:43463 on eth0         ?
? UDP (110 bytes) from google-public-dns-a.googl:domain to 192.241.xxx.xxx:531 ?

还有几个其他界面可供您自行调查。

netstat

“netstat的 ”命令用于收集网络信息的多功能工具。 它非常灵活和强大。

默认情况下,netstat打印一个打开的套接字列表:

netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.241.187.204:ssh     ip223.hichina.com:50324 ESTABLISHED
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  5      [ ]         DGRAM                    6559     /dev/log
unix  3      [ ]         STREAM     CONNECTED     9386     
unix  3      [ ]         STREAM     CONNECTED     9385     
. . .

如果我们添加一个“-a”选项,它将列出所有端口,监听和不监听:

netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     6195     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     7762     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     6503     /var/run/dbus/system_bus_socket
. . .

如果你想过滤只看到TCP或UDP连接,分别使用“-t”或“-u”标志:

netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

通过传递“-s”标志来查看统计信息:

netstat -s
Ip:
    13500 total packets received
    0 forwarded
    0 incoming packets discarded
    13500 incoming packets delivered
    3078 requests sent out
    16 dropped because of missing route
Icmp:
    41 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        echo requests: 1
        echo replies: 40
. . .

如果要不断更新输出,可以使用“-c”标志。

还有许多其他选项可以更改输出。 浏览手册页以获得更多想法。

如何知道我有多少磁盘空间?

df

为了你离开你的驱动器的磁盘空间快速浏览,可以使用“ 东风 ”计划。

没有任何选项,其输出如下所示:

df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda        31383196 1228936  28581396   5% /
udev              505152       4    505148   1% /dev
tmpfs             203920     204    203716   1% /run
none                5120       0      5120   0% /run/lock
none              509800       0    509800   0% /run/shm

这会以字节为单位输出磁盘使用情况,这可能有点难以阅读。

要解决这个问题,我们可以指定以人类可读的格式输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   28G   5% /
udev            494M  4.0K  494M   1% /dev
tmpfs           200M  204K  199M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M     0  498M   0% /run/shm

如果我们想要查看所有文件系统上可用的总磁盘空间,我们可以传递“--total”选项。 这将在底部添加一行,其中包含摘要信息:

df -h --total
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   28G   5% /
udev            494M  4.0K  494M   1% /dev
tmpfs           200M  204K  199M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M     0  498M   0% /run/shm
total            32G  1.2G   29G   4%

虽然DF是歌厅的概述一种简单的方法,“ ”给出了什么占用的空间在系统上更好的画面。

该命令将分析当前目录和任何子目录的使用情况。 du的默认输出如下所示:

du
4	./.cache
8	./.ssh
28	.

再次,我们可以通过传递“-h”来指定人类可读的输出:

du -h
4.0K	./.cache
8.0K	./.ssh
28K	.

要查看文件大小以及目录,请键入以下内容:

du -a
0	./.cache/motd.legal-displayed
4	./.cache
4	./.ssh/authorized_keys
8	./.ssh
4	./.profile
4	./.bashrc
4	./.bash_history
28	.

对于底部的总计,您可以添加“-c”选项:

du -c
4	./.cache
8	./.ssh
28	.
28	total

如果你只对整体感兴趣,而不是具体细节,你可以发布:

du -s
28	.

改进

这两个工具有改进的版本,可以在Ubuntu上安装。

DF的改进版本是“pydf”。 它可以用这个命令安装:

sudo apt-get install pydf

pydf命令使用彩色输出组织整洁的图表中的所有内容。 它以图形方式显示磁盘使用情况:

pydf -a
dev/vda     30G 1200M   27G  3.9 [........] /                       
udev        493M 4096B  493M  0.0 [........] /dev                    
devpts         0     0     0    - [........] /dev/pts                
proc           0     0     0    - [........] /proc                   
tmpfs       199M  204k  199M  0.1 [........] /run                    
none       5120k     0 5120k  0.0 [........] /run/lock               
none        498M     0  498M  0.0 [........] /run/shm
. . .

杜上的改进是“ncdu”。 可以通过键入以下命令安装此命令:

sudo apt-get install ncdu
此命令使用交互式ncurses显示以图形方式表示磁盘使用情况:
ncdu
--- /root ----------------------------------------------------------------------
    8.0KiB [##########] /.ssh                                                   
    4.0KiB [#####     ] /.cache
    4.0KiB [#####     ]  .bashrc
    4.0KiB [#####     ]  .profile
    4.0KiB [#####     ]  .bash_history

您可以使用向上和向下箭头并在任何目录条目上按“enter”逐步浏览文件系统。

如何知道我的内存是如何使用的?

自由

找出你的系统上的当前内存使用的最简单方法是使用“ 免费 ”的命令。

当不使用选项时,输出如下所示:

free
             total       used       free     shared    buffers     cached
Mem:        507620     408172      99448          0     123672     248224
-/+ buffers/cache:      36276     471344
Swap:            0          0          0

要以更可读的格式显示,我们可以传递“-m”选项来显示输出(以兆字节为单位):

free -m
             total       used       free     shared    buffers     cached
Mem:           495        398         97          0        120        242
-/+ buffers/cache:         35        460
Swap:            0          0          0

标记为“ - / + buffers / cache”的中间行将显示应用程序使用的实际内存。

“Mem”行包括用于缓冲和高速缓存的存储器,一旦需要用于其它目的就释放它。

Vmstat

该“ 的vmstat”命令可以了解你的系统,包括内存,交换,磁盘IO和CPU信息输出的各种信息。

我们将使用该命令获得另一个视图到内存使用:

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0  99340 123712 248296    0    0     0     1    9    3  0  0 100  0

我们可以通过选择带有“-S”标志的单位来看到这个兆字节:

vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0     96    120    242    0    0     0     1    9    3  0  0 100  0

如您所见,此工具可帮助我们分解“free”命令的“ - / + buffers / cache”类别。

我们可以看到该块用于缓冲的多少,以及缓存的大小。

要获取有关内存使用情况的一般统计信息,请键入:

vmstat -s -S M
          495 M total memory
          398 M used memory
          252 M active memory
          119 M inactive memory
           96 M free memory
          120 M buffer memory
          242 M swap cache
            0 M total swap
            0 M used swap
            0 M free swap
. . .

要获取有关各个系统进程的缓存使用情况的信息,请键入:

vmstat -m -S M
Cache                       Num  Total   Size  Pages
ext4_groupinfo_4k           195    195    104     39
UDPLITEv6                     0      0    768     10
UDPv6                        10     10    768     10
tw_sock_TCPv6                 0      0    256     16
TCPv6                        11     11   1408     11
kcopyd_job                    0      0   2344     13
dm_uevent                     0      0   2464     13
bsg_cmd                       0      0    288     14
. . .

这将向您提供有关缓存中存储哪种类型的信息的详细信息。

结论

使用这些工具,您应该开始能够从命令行监视您的服务器。 还有许多其他实用程序可以执行简单的监视操作,但这是一个很好的起点。

作者:Justin Ellingwood