Làm thế nào để giám sát CPU và bộ nhớ trên Linux?

Spread the love

Biết mức độ tiêu thụ CPU hoặc bộ nhớ của một quá trình riêng lẻ hoặc toàn hệ thống.

Là một sysadmin, bạn thường phải đối phó với sự cố ứng dụng chạy chậm hoặc không phản hồi do sử dụng CPU / bộ nhớ / mạng cao. Nếu máy chủ lưu trữ chỉ một quy trình, thì thật dễ dàng tìm ra khi quy trình này tiêu thụ tất cả tài nguyên. Tuy nhiên, hãy tưởng tượng một máy chủ chia sẻ nơi nhiều dịch vụ đang chạy và bạn cần tìm cái nào đang ăn hết tài nguyên.

Có rất nhiều phần mềm giám sát thực hiện điều này. Nhưng nếu bạn không có hoặc đang tìm kiếm một giải pháp dựa trên lệnh, thì đây là cách bạn thực hiện. Tất cả đều MIỄN PHÍ!

đứng đầu

Bạn có thể muốn bắt đầu bằng cách nhìn vào kết quả trên cùng hoặc cuối để xem tổng quan về quy trình.

Như bạn có thể thấy bên dưới, nó đưa ra một ý tưởng tuyệt vời về những gì mà tất cả các quy trình đang sử dụng. Nếu bạn nhìn vào cái đầu tiên, đó là MySQL đang chiếm 11,9% CPU và 2,5% CPU.

top - 11:57:33 up 0 min,  1 user,  load average: 3.69, 0.96, 0.32
Tasks: 165 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21.0 us,  5.5 sy,  0.0 ni, 70.5 id,  1.7 wa,  0.0 hi,  1.3 si,  0.0 st
KiB Mem :  7637308 total,  5802888 free,   849512 used,   984908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6495648 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 1986 netdata   20   0 1738856 191560  22948 S  11.6  2.5   0:02.30 mysqld                                                                                                         
 3021 www-data  20   0  255288  78420  55484 S   6.6  1.0   0:01.55 php-fpm                                                                                                        
 3138 www-data  20   0  253096  79780  59228 S   6.6  1.0   0:00.92 php-fpm                                                                                                        
 3153 www-data  20   0  255116  79088  56472 S   5.0  1.0   0:00.70 php-fpm                                                                                                        
 3037 www-data  20   0  257200  81088  56216 S   4.3  1.1   0:01.50 php-fpm                                                                                                        
 3048 www-data  20   0  257088  78740  55380 S   4.3  1.0   0:01.46 php-fpm                                                                                                        
 3054 www-data  20   0  254160  72168  52108 S   3.7  0.9   0:01.32 php-fpm                                                                                                        
 3135 www-data  20   0  255084  75912  54836 S   3.7  1.0   0:00.91 php-fpm                                                                                                        
 3051 www-data  20   0  254096  73804  51964 S   3.0  1.0   0:01.38 php-fpm                                                                                                        
 2962 www-data  20   0   45280   7284   3488 R   2.0  0.1   0:00.22 openresty                                                                                                      
 1062 netdata   20   0  338748  76144   6720 S   1.0  1.0   0:01.31 netdata                                                                                                        
 1702 netdata   20   0   21852   4232   2352 S   1.0  0.1   0:00.34 apps.plugin                                                                                                    
 1729 netdata   20   0   18636   3280   2764 S   0.7  0.0   0:00.05 bash                                                                                                           
 1980 netdata   20   0   62008  12896   5796 S   0.7  0.2   0:00.14 redis-server                                                                                                   
   11 root      20   0       0      0      0 I   0.3  0.0   0:00.14 rcu_sched                                                                                                      
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:00.92 dockerd                                                                                                        
 1857 root      20   0   10600   5564   4276 S   0.3  0.1   0:00.03 containerd-shim                                                                                                
 2045 root      20   0    9948   6028   5016 S   0.3  0.1   0:00.14 forego                                                                                                         
 2934 root      20   0   13616   8760   5928 S   0.3  0.1   0:00.07 docker-gen                                                                                                     
 2966 systemd+  20   0   25784   7924   2340 S   0.3  0.1   0:00.06 nginx

Phần đầu được cài đặt trên hầu hết tất cả các bản phân phối Linux.

  Cách cài đặt Sublime Merge trên Linux

Khi bạn xác định được nghi phạm, bạn có thể muốn tập trung vào quá trình đó thay vì mọi thứ như bạn đã thấy ở trên. Bạn vẫn có thể sử dụng lệnh top nhưng với một số đối số.

Giả sử bạn biết id quy trình (PID); bạn có thể sử dụng lệnh dưới đây.

top -p $ PID

Dưới đây là một ví dụ về top -p 3102

top - 11:59:56 up 3 min,  1 user,  load average: 0.72, 0.70, 0.31
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.9 sy,  0.0 ni, 89.1 id,  0.3 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  7637308 total,  5802024 free,   783672 used,  1051612 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6555636 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 3102 www-data  20   0  329500  82376  60640 S   0.0  1.1   0:03.35 php-fpm

Bạn cũng có thể sử dụng grep với đầu trang. Dưới đây là một ví dụ về kiểm tra việc sử dụng Docker.

[email protected]:~# top | grep docker
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.38 dockerd                                                                                                        
 2934 root      20   0   14676   9652   5928 S   0.3  0.1   0:00.54 docker-gen                                                                                                     
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.39 dockerd                                                                                                        
 1007 root      20   0 1347424  74524  38872 S   1.0  1.0   0:01.42 dockerd                                                                                                        
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.55 docker-gen                                                                                                     
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.56 docker-gen

htop

Tương tự với đầu trang nhưng có nhiều thông tin hơn. Như bạn có thể, nó có cột lệnh, rất tiện để xác định đường dẫn quy trình. Và nó cũng có nhiều màu sắc.

htop có thể không được cài đặt theo mặc định, nhưng bạn luôn có thể thực hiện như bên dưới.

Cài đặt htop trên Ubuntu

apt-get install htop

Cài đặt htop trên CentOS / RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

liếc nhìn

Như tên đã nói, bạn sẽ có chế độ xem sử dụng hệ thống trên một màn hình. Các tiến trình đang chạy được sắp xếp theo việc sử dụng CPU của chúng.

  Cách chơi DOOM cổ điển trên Linux với Doomsday Engine

Bạn có thể cài đặt liếc trên CentOS 8 bằng DNF như bên dưới.

dnf install glances

đối với CentOS7, bạn có thể sử dụng YUM

yum install glances

trên

Một tương tự như được liệt kê ở trên nhưng có tính năng tuyệt vời để ghi lại kết quả đầu ra trong một tệp để bạn có thể xem chúng sau này. Hãy tưởng tượng có một mẫu gặp sự cố tại một khoảng thời gian cụ thể. Bạn có thể lên lịch để ghi đầu ra trong một tệp thông qua crontab hoặc khác và sau đó bạn có thể phát lại.

Để ghi lại kết quả đầu ra trong một tệp:

atop -w filename

và, để phát lại:

atop -r filename

Nó hỗ trợ nhiều đối số như khoảng thời gian, mẫu, v.v. và tôi thực sự khuyên bạn nên xem trang người đàn ông.

Nếu bạn chỉ quan tâm đến việc khắc phục sự cố trong thời gian thực, thì chỉ cần thực thi ở trên cùng và bạn sẽ thấy như bên dưới.

Bạn có thể cài đặt trên đỉnh như bên dưới.

dnf install atop

ps

Hãy kiểm tra lệnh ps bây giờ.

Bạn có thể sử dụng lệnh ps với PID để in việc sử dụng CPU và bộ nhớ của chúng.

ps -p $PID -o %cpu,%mem

Đầu ra sẽ như thế này.

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

Công cụ giám sát dòng lệnh tương tác để sử dụng CPU, bộ nhớ, đĩa, mạng, NFS và bộ nhớ ảo. Để xem quá trình hàng đầu (bằng cách sử dụng), bạn có thể thực hiện nmon và nhấn nút t.

Bạn có thể cài đặt nmon như bên dưới.

dnf install nmon

Monit

Monit là một giải pháp mã nguồn mở dựa trên web và dòng lệnh để giám sát tài nguyên máy chủ, daemon, tệp, thư mục, hệ thống tệp, v.v.

Monit cũng có một tiện ích tuyệt vời.

Phần mềm giám sát trọng lượng nhẹ của nó. Tuy nhiên, có nhiều điều để khám phá ở đây.

Monitorix

Một tiện ích mã nguồn mở nhẹ để giám sát máy chủ Linux. Monitorix có HTTP tích hợp để bạn có thể kiểm tra việc sử dụng và các nội dung khác trên web. Một số báo cáo sử dụng khác bao gồm:

  • Kernal / nhiệt độ
  • Hệ thống tập tin và I / O
  • Lưu lượng mạng
  • Apache / Mail / FTP / Nginx
  • MySQL / Varnish / Memcached
  Cách ghép nối bộ điều khiển Nintendo Switch Pro trên Linux

Monitorix cũng cung cấp cấu hình cảnh báo để bạn có thể nhận được thông báo khi mọi thứ không ổn. Nó sẽ là một lựa chọn tốt khi bạn đang quản lý các máy chủ dựa trên đám mây và tìm kiếm một giải pháp giám sát chủ động.

Netdata

Netdata là giám sát hiệu suất theo thời gian thực cho tài nguyên hệ thống, ứng dụng, máy chủ web, cơ sở dữ liệu, DNS, thư, cảm biến phần cứng, v.v. Nó là mã nguồn mở và bắt đầu rất dễ dàng. Tất cả dữ liệu được thu thập, lưu trữ và truyền trực tuyến để bạn trực quan hóa một cách tương tác. Dữ liệu được thu thập mỗi giây, vì vậy bạn không bao giờ bỏ lỡ bất cứ điều gì.

Được nhiều lãnh đạo trong ngành yêu mến.

Vì vậy, những gì bạn còn chờ đợi, hãy thử và kiểm soát các máy chủ Linux của bạn.

btop

btop là một trình giám sát tài nguyên tiện dụng tương tác hoàn toàn với giao diện người dùng đẹp mắt giúp bạn quản lý các máy chủ Linux.

Bạn có thể dễ dàng hình dung các quy trình trong chế độ xem dạng cây, lọc từ danh sách quy trình và quản lý các nguồn tài nguyên. btop cũng được cung cấp với biểu đồ tự động điều chỉnh tỷ lệ hiển thị mức sử dụng mạng.

Bên cạnh đó, bạn cũng có thể kiểm tra tốc độ đĩa và hoàn thành hoạt động I / O.

Còn nhiều hơn thế nữa mà bạn có thể trải nghiệm trên Linux, FreeBSD và macOS.

Sự kết luận

Tôi hy vọng các công cụ trên sẽ giúp bạn hình dung việc sử dụng máy chủ trong thời gian thực để bạn có thể thực hiện các hành động cần thiết. Nếu bạn mới bắt đầu với tư cách là quản trị viên hệ thống và muốn được đào tạo thực hành, hãy xem phần này Khóa học udemy.

x