Cần theo dõi hiệu suất máy chủ Linux? Hãy thử những câu lệnh và một vài công cụ add-on sau. Hầu hết các bản phân phối Linux được trang bị công cụ giám sát. Những công cụ này cung cấp các số liệu mà có thể được sử dụng để có được thông tin về hoạt động của hệ thống. Bạn có thể sử dụng những công cụ này để tìm ra nguyên nhân có thể là một vấn đề hiệu suất. Các lệnh thảo luận dưới đây là một số lệnh cơ bản nhất khi nói đến phân tích hệ thống và máy chủ nhằm sửa chữa các vấn đề như: Tắt nghẽn hệ thống Tắt nghẽn ổ đĩa Tắt nghẽn cpu và memory Tắt nghẽn mạng # 1: top – Lệnh hiển thị hoạt động các tiến trình Top cung cấp một cái nhìn thời gian thực năng động của một hệ thống đang chạy nghĩa là tiến trình hoạt động thực tế. Theo mặc định, nó sẽ hiển thị hầu hết các tiến trình chạy trên máy chủ và cập nhật danh sách mỗi năm giây. Sử dụng phím nóng Lệnh top cung cấp một số phím nóng hữu ích: t Hiển thị thông tin tóm tắt off và on. m Hiển thị thông tin bộ nhớ off và on. A Sắp xếp hiển thị việc tiêu thụ tài nguyên hệ thống khác nhau. f Truy cập vào một màn hình cấu hình tương tác cho top. Hữu ích cho việc thiết lập top cho một công việc cụ thể. o Cho phép bạn tương tác lựa chọn các yêu cầu với top. r Các vấn đề lệnh renice. k Các vấn đề lệnh kill. z Bật hoặc tắt color/mono # 2: vmstat - Hoạt động hệ thống, phần cứng và hệ thống thông tin Lệnh vmstat báo cáo thông tin về quy trình, bộ nhớ, paging, block IO, traps, và hoạt động CPU. Mã: vmstat 3 Ví dụ kết quả đầu ra: Mã: procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0 1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0 0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0 0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0 0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0 0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0 0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 Hiển thị khai thác bộ nhớ: Mã: vmstat -m Nhận thông tin về Active/Inactive Memory Pages Mã: vmstat -a # 3: w - Tìm hiểu người nào đăng nhập vào và những gì họ đang làm gì w lệnh hiển thị thông tin về người sử dụng hiện nay trên máy tính, và các quá trình của họ. Mã: w username w vivek Ví dụ kết quả đầu ra: Mã: 17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w # 4: uptime Lệnh uptime có thể được sử dụng để xem máy chủ đã được chạy bao lâu. Thời gian hiện tại, hệ thống đã được chạy bao lâu, có bao nhiêu người dùng đang đăng nhập, và trung bình hệ thống load cho 1, 5 và 15 phút vừa qua. Mã: uptime Ví dụ kết quả đầu ra:: Mã: 18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00 1 có thể được coi là giá trị load tối ưu. Giá trị load có thể thay đổi từ hệ thống này với hệ thống khác. Đối với một hệ thống CPU đơn 1-3 và hệ thống SMP 6-10 là các giá trị load có thể chấp nhận được. # 5: ps Lệnh ps sẽ báo cáo một danh sách các quá trình hiện tại. Để chọn tất cả các quá trình sử dụng -A hoặc tùy chọn -e: Mã: ps -A Ví dụ kết quả đầu ra: Mã: [root@dev ~]# ps -A PID TTY TIME CMD 1 ? 00:00:26 init 2 ? 00:00:00 kthreadd/241085 3 ? 00:00:00 khelper/241085 139 ? 00:00:00 udevd 532 ? 00:03:15 rsyslogd 569 ? 00:00:00 xinetd 845 ? 00:00:00 saslauthd 846 ? 00:00:00 saslauthd 906 ? 00:00:09 crond 1589 ? 00:01:00 miniserv.pl 8527 ? 00:00:12 php-fpm 8528 ? 00:00:00 php-fpm 8529 ? 00:00:00 php-fpm 14492 ? 00:00:00 sshd 14496 pts/0 00:00:00 bash 15390 ? 00:00:00 sshd 15391 ? 00:00:00 sshd 15392 pts/0 00:00:00 ps 19387 ? 00:00:15 sshd 29136 ? 00:00:00 nginx 29137 ? 00:00:00 nginx Lệnh ps giống như lệnh top nhưng cung cấp nhiều thông tin hơn. Hiện kết quả đầu ra theo dạng dài: Mã: ps - Al Để bật chế độ đầy đủ bổ sung(nó sẽ hiển thị các tham số dòng lệnh thông qua xử lý): Mã: ps -AlF Để xem các thread (LWP và NLWP) Mã: ps -AlFH Để xem các thread sau quá trình Mã: ps -AlLm Hiển thị tất cả các quá trình trên Server Mã: ps ax ps axu Hiển thị A Tree Process Mã: ps -ejH ps axjf pstree Hiển thị thông tin an ninh Mã: ps -eo euser,ruser,suser,fuser,f,comm,label ps axZ ps -eM Xem tất cả quá trinhg chạy bởi user vivek Mã: ps -U vivek -u vivek u Thiết lập đầu ra trong một dạng User-Defined Mã: ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm ps -eopid,tt,user,fname,tmout,f,wchan Hiển thị chỉ Các ID Process của Lighttpd Mã: ps -C lighttpd -o pid= Hiển thị tên của PID 55977 Mã: ps -p 55977 -o comm= Tìm ra Top 10 tiến trình tiêu thụ bộ nhớ Mã: ps -auxf | sort -nr -k 4 | head -10 Tìm ra Top 10 tiến trình tiêu thụ CPU Mã: ps -auxf | sort -nr -k 3 | head -10 # 6: free Lệnh free hiển thị tổng dung lượng bộ nhớ vật lý trống và được sử dụng trong hệ thống, cũng như các bộ đệm được sử dụng bởi các hạt nhân. Mã: free # 7: iostat Lệnh iostat báo cáo thống kê tình trạng CPU và tình trạng đầu vào/đầu ra cho các thiết bị, phân vùng và hệ thống tập tin mạng (NFS). Mã: iostat Ví dụ kết quả đầu ra: Mã: Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 avg-cpu: %user %nice %system %iowait %steal %idle 3.50 0.09 0.51 0.03 0.00 95.86 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 22.04 31.88 512.03 16193351 260102868 sda1 0.00 0.00 0.00 2166 180 sda2 22.04 31.87 512.03 16189010 260102688 sda3 0.00 0.00 0.00 1615 0 # 8: sar - Thu thập và báo cáo hoạt động hệ thống Lệnh sar được sử dụng để thu thập, báo cáo và lưu thông tin hoạt động của hệ thống. Để xem mạng truy cập, hãy nhập: Mã: sar -n DEV | more Để hiển thị các network counter từ ngày 24: Mã: sar -n DEV -f /var/log/sa/sa24 | more Bạn cũng có thể hiển thị sử dụng thời gian thực sử dụng sar: Mã: sar 4 5 Ví dụ kết quả đầu ra: Mã: Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 06:45:12 PM CPU %user %nice %system %iowait %steal %idle 06:45:16 PM all 2.00 0.00 0.22 0.00 0.00 97.78 06:45:20 PM all 2.07 0.00 0.38 0.03 0.00 97.52 06:45:24 PM all 0.94 0.00 0.28 0.00 0.00 98.78 06:45:28 PM all 1.56 0.00 0.22 0.00 0.00 98.22 06:45:32 PM all 3.53 0.00 0.25 0.03 0.00 96.19 Average: all 2.02 0.00 0.27 0.01 0.00 97.70 # 9: mpstat - Multiprocessor Usage Lệnh mpstat hiển thị hoạt động cho mỗi bộ vi xử lý có sẵn, bộ xử lý 0 là đầu tiên. mpstat -P ALL để hiển thị sử dụng CPU trung bình mỗi bộ vi xử lý: Mã: mpstat –P ALL Ví dụ kết quả đầu ra: Mã: Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 06:48:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 06:48:11 PM all 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04 06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31 06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93 06:48:11 PM 2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00 06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80 06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91 06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98 06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75 06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89 # 10: pmap - Quy trình sử dụng bộ nhớ Lệnh pmap báo cáo sử dụng memory của một quá trình. Sử dụng lệnh này để tìm hiểu nguyên nhân gây tắc nghẽn bộ nhớ. Mã: pmap -d PID Để hiển thị thông tin bộ nhớ quá trình cho pid # 47394, hãy nhập: Mã: pmap -d 47394 Ví dụ kết quả đầu ra: Mã: 47394: /usr/bin/php-cgi Address Kbytes Mode Offset Device Mapping 0000000000400000 2584 r-x-- 0000000000000000 008:00002 php-cgi 0000000000886000 140 rw--- 0000000000286000 008:00002 php-cgi 00000000008a9000 52 rw--- 00000000008a9000 000:00000 [ anon ] 0000000000aa8000 76 rw--- 00000000002a8000 008:00002 php-cgi 000000000f678000 1980 rw--- 000000000f678000 000:00000 [ anon ] 000000314a600000 112 r-x-- 0000000000000000 008:00002 ld-2.5.so 000000314a81b000 4 r---- 000000000001b000 008:00002 ld-2.5.so 000000314a81c000 4 rw--- 000000000001c000 008:00002 ld-2.5.so 000000314aa00000 1328 r-x-- 0000000000000000 008:00002 libc-2.5.so 000000314ab4c000 2048 ----- 000000000014c000 008:00002 libc-2.5.so .... ...... .. 00002af8d48fd000 4 rw--- 0000000000006000 008:00002 xsl.so 00002af8d490c000 40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 933712K writeable/private: 4304K shared: 768000K Dòng cuối cùng là rất quan trọng: mapped: 933712K à tổng số lượng bộ nhớ ánh xạ vào các tập tin writeable/private: 4304K à số lượng không gian địa chỉ riêng shared: 768000K à số lượng không gian địa chỉ mà tiến trình này chia sẻ với tiến trình khác. # 11 và # 12: netstat và ss - Thống kê mạng Lệnh netstat hiển thị kết nối mạng, bảng định tuyến, thống kê giao diện, giả mạo kết nối, và các thành viên multicast. Lệnh ss được sử dụng để dump thống kê socket. Nó cho phép hiển thị thông tin tương tự như netstat. # 13: Iptraf - Thống kê mạng thời gian thực Lệnh Iptraf có màn hình giao diện tương tác với màu sắc . Đó là một màn hình IP LAN tạo ra các thống kê mạng khác nhau bao gồm cả thông tin TCP, UDP, ICMP và OSPF, thông tin tload Ethernet, số liệu thống kê nút, lỗi checksum IP, và v.v…. Nó có thể cung cấp các thông tin sau đây: thống kê lưu lượng mạng bằng kết nối TCP. thống kê lưu lượng IP bằng interface network. thống kê lưu lượng mạng bằng giao thức. thống kê lưu lượng mạng bằng cổng TCP UDP và kích thước gói. thống kê lưu lượng mạng bằng địa chỉ lớp 2. Ví dụ minh họa: # 14: tcpdump - Phân tích chi tiết lưu lượng mạng tcpdump là lệnh đơn giản để phân tích lưu lượng trên một mạng. Tuy nhiên, bạn cần phải hiểu biết tốt về giao thức TCP/IP để sử dụng công cụ này. Ví dụ để hiển thị thông tin giao thông về DNS, hãy nhập: Mã: tcpdump -i eth1 'udp port 53' Để hiển thị tất cả các gói tin HTTP IPv4 đến và đi từ cổng 80, nghĩa là chỉ in các gói tin có chứa dữ liệu, ví dụ, SYN và FIN gói và các gói tin ACK-only, hãy nhập: Mã: tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' Để hiển thị tất cả các phiên FTP đến 202.54.1.5, hãy nhập: Mã: tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20' Để hiển thị tất cả các phiên HTTP đến 192.168.1.5, hãy nhập: Mã: tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http' Sử dụng wireshark để xem thông tin chi tiết về các tập tin, hãy nhập: Mã: tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80 # 15: strace – System Calls Theo dõi các cuộc gọi hệ thống và tín hiệu. Điều này rất hữu ích cho máy chủ web gỡ lỗi và các vấn đề máy chủ khác. # 16: hệ thống tập tin /proc / Hệ thống tập tin proc cung cấp thông tin chi tiết về các thiết bị phần cứng khác nhau và thông tin khác Linux kernel. Ví dụ thường gặp /proc: Mã: cat /proc/cpuinfo cat /proc/meminfo cat /proc/zoneinfo cat /proc/mounts 17 #: Nagios Nagios là một ứng dụng phần mền mã nguồn mở giúp giám sát mạng phổ biến. Bạn có thể dễ dàng theo dõi tất cả các máy chủ của bạn, thiết bị và các dịch vụ mạng. Nó có thể gửi cảnh báo khi có chuyện xảy ra. FAN là " Fully Automated Nagios ". mục tiêu FAN là để cung cấp một cài đặt Nagios bao gồm hầu hết các công cụ được cung cấp bởi cộng đồng Nagios. FAN cung cấp một CDRom image trong định dạng ISO chuẩn, làm cho nó dễ dàng để cài đặt một máy chủ Nagios. Thêm vào đó, một loạt các công cụ được bao gồm để phân phối, để cải thiện trải nghiệm người dùng xung quanh Nagios. 18 #: Cacti - Công cụ giám sát dựa trên Web Cacti là một giải pháp mạng hoàn chỉnh đồ họa được thiết kế để khai thác sức mạnh của dữ liệu lưu trữ RRDTool và chức năng đồ họa. Cacti cung cấp một poller nhanh, đồ thị khuôn mẫu tiên tiến, nhiều phương pháp thu thập dữ liệu, quản lý và sử dụng các tính năng ra khỏi hộp. Tất cả điều này được bọc trong một giao diện trực quan, dễ sử dụng có ý nghĩa cho việc cài đặt mạng LAN phức tạp với hàng trăm thiết bị. Nó có thể cung cấp dữ liệu về mạng, CPU, bộ nhớ, người dùng đăng nhập, Apache, máy chủ DNS và nhiều hơn nữa. # 19: KDE System Guard - Hệ thống báo cáo và đồ thị thời gian thực KSysguard là một ứng dụng giám sát hệ thống cho KDE Desktop. Công cụ này có thể được chạy trên phiên ssh. Nó cung cấp nhiều tính năng như một cấu trúc client / server mà cho phép giám sát các máy chủ địa phương và từ xa. Giao diện đồ họa sử dụng cái gọi là cảm biến để lấy các thông tin nó sẽ hiển thị. Một cảm biến có thể trở về giá trị đơn giản hoặc các thông tin phức tạp hơn như bảng. Đối với mỗi loại thông tin, một hoặc nhiều màn hình được cung cấp. Hiển thị được tổ chức trong các bảng tính có thể được lưu và load độc lập với nhau. Vì vậy, KSysguard không chỉ là một công việc quản lý đơn giản mà còn là một công cụ rất mạnh để kiểm soát máy chủ lớn. # 20: Gnome System Monitor - Hệ thống báo cáo và đồ thị thời gian thực Ứng dụng System Monitor cho phép bạn hiển thị thông tin cơ bản hệ thống và hệ thống giám sát quá trình, sử dụng tài nguyên hệ thống, và các hệ thống tập tin. Bạn cũng có thể sử dụng System Monitor để sửa đổi hành vi của hệ thống của bạn. Mặc dù không mạnh như hệ thống KDE Guard, nó cung cấp các thông tin cơ bản mà có thể hữu ích cho người dùng mới: Hiển thị thông tin cơ bản khác nhau về phần cứng và phần mềm của máy tính. Phiên bản Linux Kernel Phiên bản GNOME Phần cứng Bộ nhớ cài đặt Bộ vi xử lý và tốc độ Trạng thái hệ thống Không gian đĩa hiện có sẵn Processes Bộ nhớ và swap space Sử dụng mạng Các hệ thống tập tin Danh sách tất cả hệ thống gắn kết tập tin cùng với các thông tin cơ bản về từng hệ thống.