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

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Í!
Mục lục
đứ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.
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.
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
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.