Tổng quan về công cụ sar
Sar (System Activity Reporter) là một tiện ích dòng lệnh mạnh mẽ thuộc gói sysstat, được sử dụng rộng rãi trên các hệ điều hành Linux để thu thập, báo cáo và lưu trữ thông tin về hoạt động của hệ thống. Khác với các công cụ giám sát thời gian thực thông thường, sar cung cấp khả năng phân tích xu hướng hiệu suất theo thời gian, giúp quản trị viên xác định nguyên nhân của các vấn đề về hiệu năng hoặc sự cố hệ thống.
Công cụ này có thể theo dõi nhiều khía cạnh của tài nguyên hệ thống bao gồm: việc sử dụng CPU, hoạt động bộ nhớ và swap, thống kê thiết bị I/O, lưu lượng mạng, quá trình tạo và hủy thread, cũng như các hoạt động IPC.
Cài đặt và cấu hình cơ bản
Trên hầu hết các bản phân phối Linux, lệnh sar không được cài đặt mặc định. Bạn cần cài đặt gói sysstat thông qua trình quản lý gói.
# Trên hệ thống dựa trên RHEL/CentOS
sudo yum install sysstat
# Trên hệ thống dựa trên Debian/Ubuntu
sudo apt install sysstat
Sau khi cài đặt, dịch vụ thu thập dữ liệu nền thường được kích hoạt tự động. Bạn có thể kiểm tra trạng thái của nó để đảm bảo dữ liệu lịch sử được ghi nhận.
Cú pháp lệnh
Cấu trúc chung của câu lệnh sar như sau:
saamp; sar [tùy_chọn] [khoảng_thời_gian] [số_lần_hiển_thị]
Trong đó:
khoảng_thời_gian: Khoảng cách (tính bằng giây) giữa các lần báo cáo.số_lần_hiển_thị: Số lượng báo cáo sẽ được in ra trước khi lệnh kết thúc. Nếu bỏ qua, sar sẽ xuất báo cáo vô tận cho đến khi bị dừng (Ctrl+C).
Các tùy chọn quan trọng
Dưới đây là các tham số thường dùng để lọc loại thông tin bạn muốn xem:
- -A: Hiển thị tất cả các báo cáo tổng hợp.
- -B: Thống kê hoạt động phân trang (paging) và swapping.
- -b: Thống kê hoạt động I/O và tốc độ truyền.
- -d: Báo cáo hoạt động của các thiết bị khối (block devices).
- -n DEV: Hiển thị thống kê mạng (network statistics) cho các giao diện mạng.
- -P ALL: Hiển thị thông tin sử dụng CPU cho từng lõi riêng lẻ và tổng thể.
- -q: Hiển thị chiều dài hàng đợi chạy và tải trung bình của hệ thống.
- -r: Hiển thị thống kê sử dụng bộ nhớ (RAM) và không gian swap.
- -u: Báo cáo việc sử dụng CPU (mặc định).
- -W: Thống kê quá trình trao đổi ngữ cảnh (swapping) và trang.
So sánh sar và top
Cả sar và top đều dùng để giám sát hiệu năng, nhưng chúng phục vụ các mục đích khác nhau:
- sar: Tập trung vào việc ghi lại lịch sử hoạt động của hệ thống. Nó rất hữu ích để phân tích dữ liệu trong quá khứ, vẽ biểu đồ xu hướng và phát hiện các vấn đề hiệu năng diễn ra từ từ. Dữ liệu có thể được xuất ra định dạng nhị phân để lưu trữ lâu dài.
- top: Là công cụ giám sát thời gian thực (real-time), hiển thị nhanh chóng các tiến trình đang tiêu tốn nhiều tài nguyên nhất tại thời điểm hiện tại. Nó phù hợp để chẩn đoán sự cố đột ngột hoặc quan sát hành vi của một tiến trình cụ thể.
Ví dụ thực hành
1. Kiểm tra sử dụng CPU
Sử dụng tùy chọn -u để xem tỷ lệ phân bổ thời gian CPU. Ví dụ dưới đây cập nhật mỗi 2 giây và thực hiện 3 lần:
$ sar -u 2 3
Kết quả mẫu:
Linux 5.4.0-generic (server-01) 10/24/2023 _x86_64_ (4 CPU)
12:00:01 AM CPU %user %nice %system %iowait %steal %idle
12:00:03 AM all 1.50 0.00 0.50 0.00 0.00 98.00
12:00:05 AM all 2.00 0.00 0.75 0.00 0.00 97.25
12:00:07 AM all 1.00 0.00 0.25 0.00 0.00 98.75
Average: all 1.50 0.00 0.50 0.00 0.00 98.00
Giải thích các cột:
%user: Thời gian CPU ở mức người dùng (applications).%system: Thời gian CPU ở mức kernel (system calls).%iowait: Thời gian CPU rảnh rỗi đang chờ I/O hoàn tất.%idle: Thời gian CPU rảnh rỗi hoàn toàn.
2. Giám sát bộ nhớ và Swap
Tùy chọn -r cung cấp cái nhìn tổng quan về lượng RAM khả dụng và tình trạng sử dụng Swap.
$ sar -r 1 1
Kết quả mẫu:
12:05:01 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
12:05:02 PM 5042912 4967088 49.62 65632 2048512 829440 10.12 154368 3021208 124
Các trường quan trọng:
kbmemfree: Dung lượng bộ nhớ vật lý trống (KB).%memused: Tổng phần trăm bộ nhớ vật lý đã dùng.kbcached: Bộ nhớ được dùng để cache đĩa (lưu trữ tạm file để truy cập nhanh hơn).
3. Thống kê thiết bị khối (Block Device)
Để kiểm tra xem ổ cứng nào đang hoạt động mạnh nhất, hãy dùng -d.
$ sar -d -p 1 1
Kết quả mẫu:
12:10:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:10:02 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:02 PM dev8-16 15.00 120.00 0.00 8.00 0.05 3.33 2.50 3.75
Ý nghĩa thông số:
tps: Số lượng truyền tải mỗi giây (I/O requests per second).rd_sec/s/wr_sec/s: Số sector đọc/ghi mỗi giây.%util: Phần trăm thời gian thiết bị đang bận. Nếu tiến sát 100%, thiết bị đã quá tải.
4. Kiểm tra tải hệ thống (Load Average)
Tùy chọn -q giúp bạn nhìn thấy chiều dài hàng đợi và tải trung bình (tương tự lệnh uptime).
$ sar -q 1 3
Kết quả mẫu:
12:15:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:15:02 PM 1 156 2.00 1.98 2.05 0
5. Báo cáo mạng
Xem lưu lượng truy cập qua các card mạng:
$ sar -n DEV 1 1
Điều này sẽ hiển thị số lượng gói tin (rxpck/s, txpck/s) và lượng dữ liệu (rxkB/s, txkB/s) nhận và gửi mỗi giây.
Lưu trữ và xuất dữ liệu
Một trong những tính năng mạnh mẽ nhất của sar là khả năng ghi dữ liệu vào file nhị phân để phân tích sau này.
- Ghi log:
saamp; sar -o du_lieu_hien_tai 10 5(Ghi hoạt động trong 50s, mỗi 10s một lần vào file 'du_lieu_hien_tai'). - Đọc log:
saamp; sar -f du_lieu_hien_tai(Đọc và hiển thị lại dữ liệu từ file).
Chức năng này rất quan trọng khi cần điều tra sự cố hệ thống đã xảy ra trong quá khứ mà không có người trực tiếp quan sát.