Tuesday, October 8, 2013

Sử dụng sar(Sysstat) cho Linux/Unix để giám sát hiệu suất hoạt động

Chúng ta không thể cứ kè kè canh chừng chiếc máy tính khi chúng hoạt động. Bạn muốn biết chúng hoạt động như thế nào trong từng khoảng thời gian?? Sử dụng sar có thể giúp bạn thu thập dữ liệu, hiệu suất hoạt động của hệ thống để lưu trữ làm lịch sử phân tích hệ thống sau này. (VD: bị botnet phá hoại, hệ thống quá tải..)
Lệnh “sar” chúng ta tìm hiểu ở đây là một gói trong bộ cài đặt của Sysstat. Với chức năng của lệnh này chúng ta có thể làm nắm bắt được những thông tin cơ bản sau:
  1. Thống kê những thông số cơ bản của CPU
  2. Thống kê riêng biệt từng CPU
  3. RAM đã và chưa được sử dụng
  4. Thống kê “swap” (Bộ nhớ ảo trên ổ cứng)
  5. Thống kê I/O của hệ thống (Tốc độ truyền dữ liệu giữa các thiết bị đầu vào đầu ra)
  6. Kiểm tra từng tốc độ I/O của từng thiết bị riêng biệt
  7. Thống kê tốc độ truyền tải dữ liệu trung bình
  8. Thống kê mạng
  9. Báo cáo các dữ liệu vào một thời gian cụ thể
Đây là một ứng dụng nâng cao. Nếu bạn muốn tìm hiểu sâu về hệ thống máy tính có thể tìm hiểu thêm.
  1. Trang 1: Giới thiệu về Sysstat và hướng dẫn cài đặt
  2. Trang 2: 10 cách sử dụng sar để giám sát hệ thống

I. Cài đặt Sysstat

Cách 1: Cài đặt qua các gói hỗ trợ trực tiếp.
Nếu bạn dùng những hệ điều hành phổ biến như Ubuntu, Debian, Fedora, RedHat, CentOS thì có các cách cài đặt đơn giản ít lỗi.
  • yum install sysstat -y (Fedora, CentOS, RedHat)
or
  • apt-get install sysstat -y (Debian, Ubuntu)
Cách 2: Cài đặt từ mã nguồn.
  • wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2
Hoặc chọn bản mới nhất tại đây.
  • tar -jxf sysstat-10.0.0.tar.bz2
  • cd sysstat-10.0.0
  • ./configure –enable-install-cron
  • make
  • make install
iostat : lệnh này sẽ hiện thì load trung bình của hệ thống kể từ lần reboot gần đây nhất. Mặc định lệnh iostat sẽ hiển thị mức sử dụng trung bình của CPU, thống kê input/output của tất cả các ổ cứng và partition trên hệ thống:

Mã:
lab:~# iostat
Linux 2.6.32-4-pve (lab.trild.vn)    07/14/2011      _x86_64_

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.31    0.01    0.47    0.08    0.00   98.13

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               4.97        16.76        89.28    7127976   37979283
sda1              0.00         0.00         0.00       2086         30
sda2              0.00         0.00         0.01        940       3048
sda3              4.96        16.75        89.27    7124638   37976205
- Chúng ta có hiển thị thông tin cần xem với thời gian update được chỉ định như sau:

Mã:
lab:~# iostat 5 5
Linux 2.6.32-4-pve (lab.trild.vn)    07/14/2011      _x86_64_

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.31    0.01    0.46    0.08    0.00   98.13

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               4.97        16.75        89.30    7129112   38016826
sda1              0.00         0.00         0.00       2086         30
sda2              0.00         0.00         0.01        956       3048
sda3              4.97        16.74        89.29    7125758   38013748

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.00    0.15    0.00    0.00   99.75

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.60         0.00         4.80          0         24
sda1              0.00         0.00         0.00          0          0
sda2              0.00         0.00         0.00          0          0
sda3              0.60         0.00         4.80          0         24

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.15    0.00    0.25    0.00    0.00   99.60

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.60         0.00         4.80          0         24
sda1              0.00         0.00         0.00          0          0
sda2              0.00         0.00         0.00          0          0
sda3              0.60         0.00         4.80          0         24
Lệnh trên chỉ hiển thị 5 giá trị đầu tiên, thời gian refresh là 5s 1 lần.

mpstat : lệnh này hiển thị thông tin CPU usage của từng CPU đối với hệ thống có nhiều CPU

Mã:
lab:~# mpstat
Linux 2.6.32-4-pve (lab.trild.vn)    07/14/2011      _x86_64_

03:44:29 AM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
03:44:29 AM  all    1.31    0.01    0.46    0.08    0.00    0.00    0.00   98.14   2725.98
sar : lệnh này lấy kết quả thông tin CPU usage, RAM usage và load average của hệ thống và lưu vào vào file thường xuyên. Chạy lệnh này mặc định sẽ hiển thị thông tin thống kê trong ngày về hệ thống:

Mã:
[root@trild /]# sar
Linux 2.6.32-4-pve (lab.trild.vn)  07/14/2011

11:17:11 AM       LINUX RESTART

11:20:01 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
11:30:01 AM       all      0.05      0.00      0.02      0.00      0.00     99.93
Average:          all      0.05      0.00      0.02      0.00      0.00     99.93
Ngoài ra còn có 1 số lệnh đi kèm với gói sysstat này như:

sadc stands for “system activity data collector”. This is the sar backend tool that does the data collection.
sa1 stores system activities in binary data file. sa1 depends on sadc for this purpose. sa1 runs from cron.
sa2 creates daily summary of the collected statistics. sa2 runs from cron.
sadf can generate sar report in CSV, XML, and various other formats. Use this to integrate sar data with other tools.
pidstat reports statistics based on the process id (PID)
nfsiostat displays NFS I/O statistics.
cifsiostat generates CIFS statistics.

Sau khi cài đặt các bạn có thể tìm đường dẫn đến sar bằng câu lệnh “which sar“.
Kiểm tra phiên bản sar của bạn bằng “sar -V“.
1

 10 Cách sử dụng SAR

1. Thống kê tất cả các CPU.
Đây là ví dụ đơn giản nhất để kiểm tra các thông số cơ bản của CPU
sar -u 2 4
2
  • sar -u Hiển thị các thống kê cho CPU ngay tại thời điểm đó.
  • sar -u 2 4 Hiển thị các thống kê CPU cứ sau mỗi 2s và lặp lại 4 lần.
  • sar -u ALL Giống như “sar -u” nhưng sẽ hiển thị đầy đủ các trường bổ sung
  • sar -u ALL 2 4 Giống như trên mỗi 2s sẽ thống kê và được lặp lại 4 lần.
  • sar -u -f /var/log/sa/sa10 Hiển thị các thông số CPU vào ngày thứ 10 của tháng từ tệp tin nhật kí /var/log/sa/sa10.
2. Quá trình sử dụng của từng CPU riêng biệt (core).
sar -P ALL 1 2
3
  • sar -P ALL 1 2 Hiển thị các thống kê từng CPU riêng biệt.mỗi giây 1 lần và lặp lại 2 lần. 8 CPU được đánh số từ 0-7.
  • sar -P 1 Ở câu lệnh này có khác biệt nhỏ nếu bỏ ALL thì câu lệnh sẽ hiển thị thống kê CPU từng thời điểm trong ngày hiện thị ở CPU thứ 2 (được đánh số 1). Mỗi thông số cách nhau 10 phút.
  • sar -P 1 2 3 Khi có 3 tham số như thế này thì máy sẽ lại hiểu như ví dụ đầu tiên. Thống kê CPU thứ 2 cứ mỗi 2s một lần và được lặp lại 3 lần.
  • sar -P ALL -f /var/log/sa/sa10 Hiển thị thống kê từng CPU vào ngày thứ 10 của tháng từ tệp tin nhật kí.
3. Thống kê RAM.
 sar -r 2 4
5
  • sar -r Thống kê RAM trong ngày. 10p 1 lần.
  • sar -r 2 4 Thống kê RAM thời điểm hiện tại mỗi 2s/lần và lặp lại 4 lần.
  • sar -r -f /var/log/sa/sa10 Thống kê RAM trong ngày thứ 10 trong tháng.
4. Thống kê SWAP.
sar -S 2 4
6
  • sar -S Thống kê SWAP trong ngày. 10 phút 1 lần.
  • sar -S 2 4 Thống kê SWAP thời điểm hiện tại mỗi 2s/lần và lặp lại 4 lần.
  • sar -S -f /var/log/sa/sa10 Thống kê SWAP trong ngày thứ 10 trong tháng.
5. Thống kê tổng I/O hoạt động.
sar -b 2 4
Giải thích các trường được hiển thị:
  • tps – Số lượng dữ liệu trao đổi mỗi giây (Bao gồm cả đọc và ghi)
  • rtps – Số lượng dữ liệu đọc vào mỗi giây
  • wtps – Số lượng dữ liệu ghi vào mỗi giây
  • bread/s – Số bytes đọc vào mỗi giây
  • bwrtn/s – Số bytes ghi vào mỗi giây
7

  • sar -b Thống kê trong ngày.
  • sar -b 2 4 Thống kê tại thời điểm này. 2s mỗi lần và lặp lại 4 lần.
  • sar -b -f /var/log/sa/sa10 Thống kê vào ngày mồng 10 của tháng từ tệp tin nhật kí.
 6. Thống kê riêng biệt từng thiết bị I/O hoạt động.
sar -d -p 1 3
8
Chú thích: Ở cột “DEV” là những thiết bị ổ cứng kết nối. sda, sdb là 2 ổ cứng máy đã nhận. còn hdc là ổ đĩa đọc CD.
  • sar -d -p Thống kê toàn bộ thông số trong ngày.
  • sar -d -p 1 3 Thống kê mỗi lần sau 1s, lặp lại 3 lần
  • sar -d -p -f /var/log/sa/sa10 Thống kê ngày mồng 10 trong tháng.
7. Thống kê sự thay đổi về hàm và chuyển mạch.
sar -w 1 3
9
Chú thích: proc/s là số processes (hàm thực thi) được tạo thêm mỗi s. Và cuối cùng cswch/s là tổng số chuyển mạch mỗi giây máy tính thực hiện.
  • sar -w
  • sar -w 1 3
  • sar -w -f /var/log/sa/sa10
8. Thống kê các hàm thực thi đang chờ và thông số tải trung bình.
sar -q 2 4
10
Chú thích: “Block” là số lượng hàm đang bị chặn và chờ đợi I/O để thực thi.
  • sar -q
  • sar -q 1 3
  • sar -q -f /var/log/sa/sa10
9. Thống kê về mạng.
sar -n [từ khóa] [thời gian]
Có các loại từ khóa chuyên biệt sau:
  • DEV – Thống kê các thông số các card mạng. Ví dụ eth0, eth1, lo…
  • EDEV – Thống kê thất bại chuyển mạch
  • NFS – Thống kê các máy khách kết nối giao thức NFS
  • NFSD – Thống kê máy chủ kết nối giao thức NFS
  • SOCK – Thống kê sockets được sử dụng áp dụng IPv4
  • IP – Thống kê gói tin IPv4
  • EIP – Thống kê gói tin lỗi IPv4
  • ICMP – Thống kê các gói tin giao thức ICMPv4
  • EICMP – Thống kê các gói tin lỗi giao thức ICMPv4
  • TCP – Thống kê các gói tin giao thức TCPv4
  • ETCP – Thống kê các gói tin lỗi giao thức TCPv4
  • UDP – Thống kê các gói tin giao thức UDPv4
  • SOCK6, IP6, EIP6, ICMP6, UDP6 sử dụng trong kết nối IPv6
  • ALL – Thống kê tất cả các thông tin đã thu thập. (Chú ý: Quá trình thực hiện sẽ cho ra kết quả rất dài)
11
10. Thống kê các dữ liệu theo thời gian thực.
sar -n DEV -f /var/log/sa/sa20 -s 15:00:00
sar -n DEV -f /var/log/sa/sa20 -e 15:00:00
12
Giờ chúng ta sẽ tìm hiểu câu lệnh này có nghĩa như thế nào?
sar -n DEV -f /var/log/sa/sa20 -s 15:00:00 (sẽ thống kê toàn bộ thông tin card mạng từ tệp tin ngày 20 bắt đầu từ 15:00:00)
sar -n DEV -f /var/log/sa/sa20 -e 15:00:00 (tương tự sẽ thống kê như vậy nhưng cho đến 15:00:00)
Đây thực sự là một công cụ hữu ích để giám sát hệ thống bạn muốn. Rất mong bài viết này có ích cho bạn!