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

cach su dung cac cong cu top netstat du 1

Mỗi hệ thống máy tính đều được hưởng lợi từ việc quản trị và giám sát đúng cách. Việc theo dõi hoạt động của hệ thống sẽ giúp bạn phát hiện các vấn đề và khắc phục chúng một cách nhanh chóng. Các câu lệnh phổ biến là Top, Netstat, Du…

Có vô số tiện ích dòng lệnh được tạo ra nhằm 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 để bạn có thể thêm vào “hộp công cụ” của mình.

Yêu Cầu

Để theo dõi hướng dẫn này, bạn cần có quyền truy cập vào một máy tính chạy hệ điều hành dựa trên Linux. Điều này có thể là một máy chủ ảo mà bạn đã kết nối qua SSH hoặc chính máy tính cá nhân của bạn. Lưu ý rằng bài hướng dẫn này đã được kiểm tra trên một máy chủ Linux chạy Ubuntu 20.04, nhưng các ví dụ được đưa ra nên hoạt động trên bất kỳ phiên bản nào của bất kỳ bản phân phối Linux nào.

Nếu bạn dự định sử dụng máy chủ từ xa để theo dõi hướng dẫn này, chúng tôi khuyến khích bạn hoàn thành hướng dẫn Thiết Lập Máy Chủ Ban Đầu trước. Việc này sẽ giúp bạn thiết lập một môi trường máy chủ an toàn — bao gồm một người dùng không phải root với quyền sudo và một tường lửa được cấu hình bằng UFW — từ đó nâng cao kỹ năng Linux của bạn.

Bước 1 – Cách Xem Các Quy Trình Đang Chạy Trong Linux

Bạn có thể xem tất cả các quy trình đang chạy trên máy chủ của mình bằng cách sử dụng lệnh top:

top

Output

top - 15:14:40 up 46 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  56 total,   1 running,  55 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1019600k total,   316576k used,   703024k free,     7652k buffers
Swap:        0k total,        0k used,        0k free,   258976k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
    1 root      20   0 24188 2120 1300 S  0.0  0.2   0:00.56 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0        
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0        
    7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 watchdog/0         
    8 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 cpuset             
    9 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 khelper            
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kdevtmpfs

Những dòng đầu tiên của kết quả hiển thị cung cấp các thống kê của hệ thống, chẳng hạn như tải CPU/bộ nhớ và tổng số các quy trình đang chạy.

Bạn có thể thấy rằng có 1 quy trình đang chạy và 55 quy trình đang ở trạng thái ngủ vì chúng không sử dụng chu kỳ CPU một cách tích cực.

Phần còn lại của kết quả hiển thị cho thấy các quy trình đang chạy cùng với các thông số sử dụng của chúng. Theo mặc định, top tự động sắp xếp các quy trình theo mức sử dụng CPU, giúp bạn dễ dàng nhận biết những quy trình bận rộn nhất. Lệnh top sẽ tiếp tục chạy trong shell cho đến khi bạn dừng nó bằng tổ hợp phím Ctrl+C để thoát khỏi quy trình. Tổ hợp phím này gửi tín hiệu kill, yêu cầu quy trình dừng lại một cách nhẹ nhàng nếu có thể.

Một phiên bản cải tiến của top, có tên là htop, có sẵn trong hầu hết các kho lưu trữ phần mềm. Trên Ubuntu 20.04, bạn có thể cài đặt nó bằng lệnh:

sudo apt install htop

Sau đó, lệnh htop sẽ có sẵn:

htop

Output

 Mem[|||||||||||           49/995MB]     Load average: 0.00 0.03 0.05
 CPU[                          0.0%]     Tasks: 21, 3 thr; 1 running
 Swp[                         0/0MB]     Uptime: 00:58:11

 PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
1259 root       20   0 25660  1880  1368 R  0.0  0.2  0:00.06 htop
   1 root       20   0 24188  2120  1300 S  0.0  0.2  0:00.56 /sbin/init
 311 root       20   0 17224   636   440 S  0.0  0.1  0:00.07 upstart-udev-brid
 314 root       20   0 21592  1280   760 S  0.0  0.1  0:00.06 /sbin/udevd --dae
 389 messagebu  20   0 23808   688   444 S  0.0  0.1  0:00.01 dbus-daemon --sys
 407 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.02 rsyslogd -c5
 408 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.00 rsyslogd -c5
 409 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.00 rsyslogd -c5
 406 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.04 rsyslogd -c5
 553 root       20   0 15180   400   204 S  0.0  0.0  0:00.01 upstart-socket-br

htop cung cấp khả năng trực quan hóa tốt hơn các luồng CPU đa lõi, hỗ trợ màu sắc hiện đại và nhiều tùy chọn sắp xếp hơn, cùng với nhiều tính năng hữu ích khác. Không giống như top, htop không phải lúc nào cũng được cài đặt mặc định, nhưng nó có thể được coi là một sự thay thế trực tiếp. Bạn có thể thoát khỏi htop bằng cách nhấn Ctrl+C, tương tự như top.

Dưới đây là một số phím tắt 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 mức sử dụng CPU
● ?: Truy cập trợ giúp
● k: Kết thúc quy trình hiện tại/được chọn
● F2: Cấu hình htop. Tại đây bạn có thể lựa chọn các tùy chọn hiển thị.
● /: Tìm kiếm quy trình

Có rất nhiều tùy chọn khác mà bạn có thể khám phá thông qua phần trợ giúp hoặc cài đặt. Đây nên là bước khởi đầu của bạn khi tìm hiểu tính năng của htop. Trong bước tiếp theo, bạn sẽ học cách giám sát băng thông mạng của mình.

 Top, Netstat, Du

Bước 2 – Cách Giám Sát Băng Thông Mạng

Nếu kết nối mạng của bạn dường như bị sử dụng quá mức và bạn không chắc ứng dụng nào là nguyên nhân, chương trình có tên nethogs là một lựa chọn tốt để tìm ra vấn đề.

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

sudo apt install nethogs

Sau đó, lệnh nethogs sẽ có sẵn:

nethogs

Output

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 liên kết mỗi ứng dụng với lưu lượng mạng của nó.

Chỉ có một vài lệnh bạn có thể sử dụng để điều khiển nethogs:

● 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.
● S: Sắp xếp theo lưu lượng gửi.
● Q: Thoát

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

Lưu ý: IPTraf yêu cầu kích thước màn hình ít nhất 80 cột và 24 dòng.

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

sudo apt install iptraf-ng

iptraf-ng cần được chạy với quyền root, vì vậy bạn nên chạy nó bằng cách thêm sudo:

sudo iptraf-ng

Bạn sẽ được trình bày với một menu sử dụng khung giao diện dòng lệnh phổ biến có tên ncurses.

iptraf ng

Với menu này, bạn có thể chọn giao diện mà bạn muốn truy cập. Ví dụ, để có cái nhìn tổng quan về toàn bộ lưu lượng mạng, bạn có thể chọn menu đầu tiên và sau đó chọn “All interfaces”. Nó sẽ hiển thị cho bạn một màn hình trông như sau:

alltraffic

Ở đây, bạn có thể thấy những địa chỉ IP mà bạn đang giao tiếp trên tất cả các giao diện mạng của mình.

Nếu bạn muốn chuyển đổi các địa chỉ IP đó thành tên miền, bạn có thể bật tính năng tra cứu DNS ngược bằng cách thoát khỏi màn hình lưu lượng, chọn Configure và sau đó bật tùy chọn Reverse DNS lookups.

Bạn cũng có thể bật hiển thị tên dịch vụ TCP/UDP để xem tên của các dịch vụ đang chạy thay vì số cổng.

Với cả hai tùy chọn này được bật, màn hình có thể trông như sau:

alltraffic named

Lệnh netstat là một công cụ linh hoạt khác để thu thập thông tin mạng.

netstat được cài đặt mặc định trên hầu hết các hệ thống hiện đại, nhưng bạn có thể tự cài đặt nó bằng cách tải từ kho lưu trữ mặc định của máy chủ. Trên hầu hết các hệ thống Linux, bao gồm Ubuntu, gói chứa netstatnet-tools:

sudo apt install net-tools

Theo mặc định, lệnh netstat khi chạy riêng sẽ in ra danh sách các socket mở:

netstat

Output

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 bạn thêm tham số -a, nó sẽ liệt kê tất cả các cổng, bao gồm cả cổng đang lắng nghe và không lắng nghe:

netstat -a

Output

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ác tham số -t hoặc -u tương ứng:

netstat -at

Output

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 truyền tham số -s:

netstat -s

Output

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ả hiển thị, bạn có thể sử dụng tham số -c. Có rất nhiều tùy chọn khác cho netstat mà bạn có thể tìm hiểu thêm bằng cách xem trang hướng dẫn của nó.

Trong bước tiếp theo, bạn sẽ học một số cách hữu ích để giám sát việc sử dụng ổ đĩa của mình.

Bước 3 – Cách Giám Sát Việc Sử Dụng Ổ Đĩa

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

Không có bất kỳ tham số nào, kết quả hiển thị của nó trông như sau:

df

Output

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

Kết quả hiển thị dung lượng đĩa tính bằng byte, có thể hơi khó đọc.

Để khắc phục vấn đề này, bạn có thể chỉ định kết quả hiển thị ở định dạng dễ đọc hơn:

df -h

Output

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 bạn muốn xem tổng dung lượng đĩa có sẵn trên tất cả các hệ thống tập tin, bạn có thể sử dụng tham số –total. Điều này sẽ thêm một hàng ở dưới cùng với thông tin tổng hợp:

df -h --total

Output

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%

Chương trình df cung cấp một cái nhìn tổng quan hữu ích. Một lệnh khác, du, sẽ phân tích chi tiết theo từng thư mục.

Lệnh du sẽ phân tích mức sử dụng cho thư mục hiện tại và các thư mục con. Kết quả hiển thị mặc định của du khi chạy trong một thư mục home gần như trống trông như sau:

du

Output

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

Một lần nữa, bạn có thể chỉ định kết quả hiển thị ở định dạng dễ đọc hơn bằng cách sử dụng tham số -h:

du -h

Output

4.0K    ./.cache
8.0K    ./.ssh
28K    .

Để xem kích thước file cũng như thư mục, gõ lệnh sau:

du -a

Output

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

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

du -c

Output

4    ./.cache
8    ./.ssh
28    .
28    total

Nếu bạn chỉ quan tâm đến tổng số và không cần chi tiết, bạn có thể gõ lệnh:

du -s

Output

28    .

Ngoài ra, còn có giao diện ncurses cho du, được gọi là ncdu, mà bạn có thể cài đặt:

sudo apt install ncdu

Lệnh này sẽ biểu diễn đồ họa việc sử dụng ổ đĩa của bạn:

ncdu

Output

--- /root ----------------------------------------------------------------------
    8.0KiB [##########] /.ssh                                                   
    4.0KiB [#####     ] /.cache
    4.0KiB [#####     ]  .bashrc
    4.0KiB [#####     ]  .profile
    4.0KiB [#####     ]  .bash_history

Bạn có thể duyệt qua hệ thống tập tin bằng cách sử dụng phím mũi tên lên và xuống và nhấn Enter vào bất kỳ mục thư mục nào.

Trong phần cuối, bạn sẽ học cách giám sát việc sử dụng bộ nhớ của hệ thống.

Bước 4 – Cách Giám Sát Việc Sử Dụng Bộ Nhớ

Bạn có thể kiểm tra mức sử dụng bộ nhớ hiện tại trên hệ thống của mình bằng lệnh free.

Khi không sử dụng tham số nào, kết quả hiển thị trông như sau:

free

Output

              total        used        free      shared  buff/cache   available
Mem:        1004896      390988      123484        3124      490424      313744
Swap:             0           0           0

Để hiển thị kết quả ở định dạng dễ đọc hơn, bạn có thể sử dụng tham số -m để hiển thị kết quả tính bằng megabyte:

free -m

Output

              total        used        free      shared  buff/cache   available
Mem:            981         382         120           3         478         306
Swap:             0           0           0

Dòng Mem bao gồm bộ nhớ được sử dụng cho việc đệm và lưu vào bộ nhớ cache, mà sẽ được giải phóng ngay khi cần thiết cho các mục đích khác. Swap là bộ nhớ đã được ghi vào tệp swap trên đĩa nhằm bảo tồn bộ nhớ hoạt động.

Cuối cùng, lệnh vmstat có thể hiển thị nhiều thông tin khác nhau về hệ thống của bạn, bao gồm thông tin về bộ nhớ, swap, I/O đĩa và CPU.

Bạn có thể sử dụng lệnh này để có một góc nhìn khác về mức sử dụng bộ nhớ:

vmstat

Output

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

Bạn có thể xem thông tin này tính bằng megabyte bằng cách chỉ định đơn vị với tham số -S:

vmstat -S M

Output

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

Để lấy một số thống kê chung về việc sử dụng bộ nhớ, gõ lệnh:

vmstat -s -S M

Output

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

Để lấy thông tin về việc sử dụng cache của từng quy trình hệ thống, gõ lệnh:

vmstat -m -S M

Output

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

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

Kết Luận

Sử dụng những công cụ này, bạn sẽ bắt đầu có khả năng giám sát máy chủ của mình từ dòng lệnh. Có rất nhiều tiện ích giám sát khác được sử dụng cho các mục đích đa dạng, nhưng đây là điểm khởi đầu tốt để bạn làm quen với việc theo dõi tài nguyên hệ thống.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *