Thứ hai, 26/08/2013 | 00:00 GMT+7

Cách sử dụng Top, Netstat, Du và các công cụ khác để giám sát tài nguyên server


Làm thế nào để bạn giám sát tình trạng hệ thống của bạn?

Mọi hệ thống máy tính đều được hưởng lợi từ việc quản lý và giám sát thích hợp. Theo dõi cách hệ thống của bạn đang chạy sẽ giúp bạn phát hiện ra các vấn đề và giải quyết chúng một cách nhanh chóng.

Có rất nhiều tiện ích dòng lệnh được tạo ra cho mục đích này. Hướng dẫn này sẽ giới thiệu cho bạn một số ứng dụng hữu ích nhất cần có trong hộp công cụ của bạn.

Mục lục

  1. Làm cách nào để giám sát việc sử dụng quy trình?
  2. Làm cách nào để biết chương trình nào đang sử dụng băng thông của tôi?
  3. Làm cách nào để biết tôi còn bao nhiêu dung lượng đĩa?
  4. Làm cách nào để biết được bộ nhớ của tôi đang được sử dụng như thế nào?
  5. Kết luận

Làm cách nào để giám sát việc sử dụng quy trình?

hàng đầu

Một trong những công cụ phổ biến nhất để kiểm tra việc sử dụng tài nguyên của các quy trình là " top ".

Top cung cấp một bảng đơn giản, thời gian thực về các quy trình của bạn, với những người tiêu dùng lớn nhất ở trên:

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

Phần trên cùng có một số thống kê hệ thống, bao gồm mức trung bình tải trong phút qua, 5 phút và 15 phút. Nó cũng hiển thị mức sử dụng bộ nhớ và swap cũng như số lượng các trạng thái quy trình khác nhau.

Phần dưới cùng có mọi quy trình trên hệ thống, được tổ chức bởi những người sử dụng tài nguyên hàng đầu. Danh sách này được cập nhật theo thời gian thực.

htop

Mặc dù "top" có trong hầu hết mọi bản phân phối theo mặc định, một version cải tiến, được gọi là " htop " có sẵn để download từ hầu hết các kho.

Để cài đặt htop trên Ubuntu, hãy nhập như sau:

sudo apt-get install htop

Chạy htop, ta có thể thấy rằng nó có một kết quả tương tự, nhưng được tô màu và tương tác hơn:

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

Phần trên cùng dễ đọc hơn nhiều và phần dưới cùng được sắp xếp theo kiểu rõ ràng hơn.

Dưới đây là một số key sẽ giúp bạn sử dụng htop hiệu quả hơn:

  • M : Sắp xếp các quy trình theo mức sử dụng bộ nhớ
  • P : Sắp xếp các quy trình theo cách sử dụng bộ xử lý
  • ? : Truy cập trợ giúp
  • k : Hủy quy trình hiện tại / được gắn thẻ
  • F2 : Cài đặt htop. Bạn có thể chọn các tùy chọn hiển thị tại đây.
  • / : Quy trình tìm kiếm

Có rất nhiều tùy chọn khác mà bạn có thể truy cập thông qua trợ giúp hoặc cài đặt . Đây sẽ là những điểm dừng đầu tiên của bạn trong việc khám phá chức năng của htop.

Làm cách nào để biết chương trình nào đang sử dụng băng thông của tôi?

nethogs

Nếu kết nối mạng của bạn có vẻ bão hòa và bạn không chắc ứng dụng nào là thủ phạm, một chương trình có tên " nethogs " là một lựa chọn tốt để tìm hiểu.

Trên Ubuntu, bạn có thể cài đặt nethogs bằng lệnh sau:

sudo apt-get install nethogs

Ta có thể chạy nó bằng lệnh :

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

Như bạn thấy , trên hết, kết quả nethogs rất đơn giản. Nó liên kết từng ứng dụng với lưu lượng mạng liên quan của nó.

Chỉ có một số lệnh mà bạn có thể sử dụng để kiểm soát lợn ròng:

  • m : Thay đổi hiển thị giữa "kb / s", "kb", "b" và "mb".
  • r : Sắp xếp theo lưu lượng nhận được.
  • s : Sắp xếp theo lưu lượng gửi.
  • q : bỏ

Mặc dù đây là một công cụ đơn giản, nethogs là một cách tốt để liên kết lưu lượng truy cập với một ứng dụng cụ thể.

IPTraf

IPTraf là một cách tốt khác để giám sát lưu lượng mạng. Nó cung cấp một số giao diện giám sát tương tác khác nhau.

Trên Ubuntu, bạn có thể cài đặt IPTraf bằng lệnh sau:

sudo apt-get install iptraf

Để chạy chương trình, chỉ cần gọi nó từ dòng lệnh với quyền root:

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

Với menu này, bạn có thể chọn giao diện bạn muốn truy cập.

Ví dụ, để có cái nhìn tổng quan về tất cả lưu lượng mạng, ta có thể chọn menu đầu tiên và sau đó chọn "Tất cả giao diện". Nó sẽ cung cấp cho bạn một màn hình như sau:

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  ?
?                                                                              ?
?                                                                              ?

Tại đây, bạn có thể xem địa chỉ IP nào bạn đang giao tiếp trên tất cả các network interface của bạn .

Nếu bạn muốn các địa chỉ IP đó được phân giải thành các domain , bạn có thể bật tra cứu DNS ngược bằng cách thoát khỏi màn hình lưu lượng, chọn " Cấu hình " và sau đó chọn " Tra cứu DNS ngược ".

Bạn cũng có thể bật " Tên dịch vụ TCP / UDP " để hiển thị bằng cách sử dụng tên của dịch vụ thay vì cổng.

Khi bật cả hai tùy chọn này, màn hình có thể trông như thế này:

 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 ?

Có một số giao diện khác để bạn tự điều tra.

netstat

Lệnh " netstat " là một công cụ đa năng để thu thập thông tin mạng. Nó cực kỳ linh hoạt và mạnh mẽ.

Theo mặc định, netstat in danh sách các socket đang mở:

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     
. . .

Nếu ta thêm tùy chọn "-a", nó sẽ liệt kê tất cả các cổng, nghe và không nghe:

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
. . .

Nếu bạn muốn lọc để chỉ xem các kết nối TCP hoặc UDP, hãy sử dụng cờ "-t" hoặc "-u" tương ứng:

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

Xem thống kê bằng cách chuyển cờ "-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
. . .

Nếu bạn muốn liên tục cập nhật kết quả , bạn có thể sử dụng cờ "-c".

Có nhiều tùy chọn khác có thể thay đổi kết quả . Khám phá các trang người đàn ông để biết thêm ý tưởng.

Làm cách nào để biết tôi còn bao nhiêu dung lượng đĩa?

df

Để biết tổng quan nhanh về dung lượng ổ đĩa bạn còn lại trên ổ đĩa, bạn có thể sử dụng chương trình " df ".

Không có bất kỳ tùy chọn nào, kết quả của nó trông như thế này:

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

Điều này xuất ra mức sử dụng đĩa theo byte, có thể hơi khó đọc.

Để khắc phục sự cố này, ta có thể chỉ định xuất ở định dạng con người có thể đọc được:

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

Nếu ta muốn xem tổng dung lượng ổ đĩa có sẵn trên tất cả các hệ thống file , ta có thể chuyển tùy chọn "--total". Điều này sẽ thêm một hàng ở dưới cùng với thông tin tóm tắt:

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%

du

Trong khi df là một cách dễ dàng để xem tổng quan, thì " du " cho ta một bức tranh tốt hơn về những gì đang chiếm dung lượng trên hệ thống.

Lệnh sẽ phân tích việc sử dụng cho folder hiện tại và bất kỳ folder con nào. Đầu ra mặc định của du trông như thế này:

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

, ta có thể chỉ định kết quả mà con người có thể đọc được bằng cách chuyển nó "-h":

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

Để xem kích thước file cũng như folder , hãy nhập như sau:

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

Để có tổng số ở dưới cùng, bạn có thể thêm tùy chọn "-c":

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

Nếu bạn chỉ quan tâm đến tổng số chứ không phải chi tiết cụ thể, bạn có thể đưa ra:

du -s
28	.

Cải tiến

Hai công cụ này có version cải tiến có thể được cài đặt trên Ubuntu.

Một version cải tiến của df là " pydf ". Nó có thể được cài đặt bằng lệnh này:

sudo apt-get install pydf

Lệnh pydf sắp xếp mọi thứ trong biểu đồ gọn gàng với kết quả được tô màu. Nó hiển thị mức sử dụng đĩa bằng đồ thị với các thanh sử dụng:

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
. . .

Một cải tiến về du là " ncdu ". Lệnh này có thể được cài đặt bằng lệnh :

sudo apt-get install ncdu
Lệnh này sử dụng màn hình ncurses tương tác để biểu thị bằng đồ thị việc sử dụng đĩa của bạn:
ncdu
--- /root ----------------------------------------------------------------------
    8.0KiB [##########] /.ssh                                                   
    4.0KiB [#####     ] /.cache
    4.0KiB [#####     ]  .bashrc
    4.0KiB [#####     ]  .profile
    4.0KiB [#####     ]  .bash_history

Bạn có thể bước qua hệ thống file bằng cách sử dụng các mũi tên lên và xuống và nhấn "enter" trên bất kỳ mục nhập folder nào.

Làm cách nào để biết được bộ nhớ của tôi đang được sử dụng như thế nào?

miễn phí

Cách dễ nhất để tìm ra mức sử dụng bộ nhớ hiện tại trên hệ thống của bạn là sử dụng lệnh " miễn phí ".

Khi được sử dụng mà không có tùy chọn, kết quả sẽ giống như sau:

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

Để hiển thị ở định dạng dễ đọc hơn, ta có thể chuyển tùy chọn "-m" để hiển thị kết quả tính bằng megabyte:

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

Dòng ở giữa, được đánh dấu "- / + cache / bộ nhớ cache", sẽ hiển thị bộ nhớ thực được các ứng dụng sử dụng.

Dòng "Mem" bao gồm bộ nhớ được sử dụng để đệm và bộ nhớ đệm, được giải phóng ngay khi cần cho các mục đích khác.

vmstat

Lệnh " vmstat " có thể xuất ra nhiều thông tin khác nhau về hệ thống của bạn, bao gồm thông tin bộ nhớ, swap , ổ đĩa và cpu.

Ta sẽ sử dụng lệnh để có một cái nhìn khác về việc sử dụng bộ nhớ:

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

Ta có thể thấy điều này bằng megabyte bằng cách chọn đơn vị của ta có cờ "-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

Như bạn thấy, công cụ này giúp ta chia nhỏ danh mục "- / + cache / bộ nhớ cache" của lệnh "miễn phí".

Ta sẽ xem có bao nhiêu khối đó được sử dụng để đệm và bao nhiêu cho cache .

Để nhận một số thống kê chung về việc sử dụng bộ nhớ, hãy nhập:

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
. . .

Để nhận thông tin về việc sử dụng bộ nhớ cache của các quy trình hệ thống riêng lẻ, hãy nhập:

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
. . .

Điều này sẽ cung cấp cho bạn chi tiết về loại thông tin được lưu trữ trong bộ nhớ cache.

Kết luận

Sử dụng các công cụ này, bạn sẽ bắt đầu có thể giám sát server của bạn từ dòng lệnh. Có nhiều tiện ích khác thực hiện các thao tác giám sát đơn giản, nhưng đây là một điểm khởi đầu tốt.

Bởi Justin Ellingwood

Tags:

Các tin liên quan

So sánh server Django: server phát triển, Mod_WSGI, uWSGI và Gunicorn
2013-08-19
Giới thiệu khái niệm cơ bản về Linux
2013-08-16
Cách sử dụng SFTP để truyền tệp an toàn bằng server từ xa
2013-08-13
Cách thiết lập server Git riêng trên VPS
2013-08-02
Cách cài đặt và cấu hình firewall server cấu hình (CSF) trên Ubuntu
2013-07-29
Kiến thức cơ bản về quyền của Linux và cách sử dụng Umask trên VPS
2013-07-10
Cách bảo mật server cloud chống lại SQL Injection
2013-07-05
Cài đặt và sử dụng Vim Text Editor trên Cloud Server
2013-07-03
Cách cài đặt Zend Server 6 trên VPS CentOS 6.4
2013-07-03
Cài đặt và sử dụng Vim Text Editor trên Cloud Server
2013-07-03