Phần Mục lục- 1 Sử dụng công cụ dstat
- 1.1 Giới thiệu về dstat
- 1.2 Cách sử dụng cơ bản của dstat
- 1.3 Diễn giải các thông số trên giao diện
- 1.4 Các cách sử dụng nâng cao của dstat
- 2 Cài đặt công cụ dstat
- 2.1 (Khuyến nghị) Cài đặt qua yum
- 2.2 (Hoặc) Cài đặt qua wget
- 2.3 (Hoặc) Cài đặt bằng rpm
- 3 Các vấn đề thường gặp khi cài đặt
- 3.1 Mô tả vấn đề
- 3.2 Giải quyết vấn đề
1 Sử dụng công cụ dstat
1.1 Giới thiệu về dstat
Định nghĩa chính thức: Công cụ tạo thống kê tài nguyên hệ thống đa năng (versatile tool for generating system resource statistics), có thể tích hợp chức năng của nhiều công cụ như top, free, iostat, ifstat, vmstat, và có thể lưu kết quả thống kê vào file csv hoặc cơ sở dữ liệu.
1.2 Cách sử dụng cơ bản của dstat
(1) Tùy chọn mặc định của dstat:
Mặc định sẽ thu thập dữ liệu cho -cpu-、-disk-、-net-、-paging-、-system-, một lần mỗi giây.
Cài đặt mặc định tương đương với: dstat -cdngy 1 hoặc dstat -a 1.
(2) Các tùy chọn thường dùng của dstat:
Sử dụngdstat -h để xem tất cả tùy chọn, ở đây giới thiệu ngắn gọn các tùy chọn thường dùng:
# Đặt số x, biểu thị thu thập dữ liệu mỗi x giây, mặc định là 1 giây
-c, --cpu # Thống kê trạng thái CPU, bao gồm user, system, idle(đợi trống), wait(chờ IO)...
-d, --disk # Thống kê trạng thái đọc/ghi đĩa
-D total,sdb # Thống kê đĩa cụ thể hoặc tổng hợp
-m, --mem # Thống kê sử dụng RAM, bao gồm used, buffers, cache, free
-l, --load # Thống kê tải hệ thống, bao gồm trung bình 1 phút, 5 phút, 15 phút
-s, --swap # Thống lượng đã sử dụng và còn lại của swap
-n, --net # Thống kê sử dụng mạng, bao gồm nhận và gửi dữ liệu
-N eth1,total # Thống kê lưu lượng tổng hợp của eth1
-r, --io # Thống kê yêu cầu I/O, bao gồm đọc và ghi
-p, --proc # Thống kê tiến trình, bao gồm runnable, uninterruptible, new
-y, --sys # Thống kê thông tin hệ thống, bao gồm ngắt, chuyển đổi ngữ cảnh
-t # Hiển thị thời gian thống kê, rất hữu ích khi phân tích dữ liệu lịch sử
--fs # Thống kê số file mở và số inodes
Các kết hợp sử dụng phổ biến:
dstat -cmsdnl -D sdb10 -N lo,eth1 100 5
1.3 Diễn giải các thông số trên giao diện
----system---- # Thông tin thời gian hệ thống
---procs--- # Thống kê tiến trình
run: Số tiến trình đang chạy và chờ (thời gian CPU) --- Nếu giá trị này lớn hơn 1 trong thời gian dài, có thể cân nhắc tăng CPU
blk: Số tiến trình ở trạng thái không thể ngắt, thường do IO gây ra
new: Tỷ lệ CPU tiêu thụ bởi tiến trình kernel, nếu giá trị quá cao, có thể hệ thống gặp sự cố, cần kiểm tra
----total-cpu-usage---- # Tỷ lệ sử dụng CPU
usr: Tỷ lệ thời gian CPU tiêu thụ bởi tiến trình người dùng
sys: Tỷ lệ thời gian CPU tiêu thụ bởi tiến trình kernel, nếu giá trị quá cao, có thể hệ thống gặp sự cố, cần kiểm tra
idl: Tỷ lệ thời gian CPU ở trạng thái rảnh
wai: Tỷ lệ thời gian CPU chờ đợi I/O đĩa, giá trị càng cao, IO chờ càng nghiêm trọng, có thể do truy cập đĩa ngẫu nhiên nhiều hoặc đĩa bị tắc nghẽn
hiq: hardware interrupt, số lần ngắt phần cứng
siq: software interrupt, số lần ngắt mềm
-----memory-usage----- # Tỷ lệ sử dụng bộ nhớ
used: Bộ nhớ đã sử dụng
buff: Bộ nhớ dùng làm buffer cache, đệm cho đọc/ghi thiết bị khối
cache: Bộ nhớ dùng làm page cache, cache của hệ thống tệp. Cache càng lớn, số file trong cache càng nhiều.
# Nếu các file được truy cập thường xuyên đều được nạp vào cache, đọc IO đĩa sẽ giảm đáng kể
free: Bộ nhớ vật lý trống
---io/total--- # Thống kê IO đĩa
read: Tổng lượng dữ liệu đọc từ thiết bị khối (đọc đĩa) (đơn vị: KB/s)
writ: Tổng lượng dữ liệu ghi vào thiết bị khối (ghi đĩa) (đơn vị: KB/s)
# Lưu ý: Khi đọc/ghi đĩa ngẫu nhiên, hai thông số này càng lớn (ví dụ trên 1M), thời gian CPU tiêu tốn để chờ IO càng dài
-dsk/total- # Thống kê đĩa
read: Tổng số lần đọc
writ: Tổng số lần ghi
-net/total- # Thống kê mạng
recv: Tổng số gói mạng nhận
send: Tổng số gói mạng gửi
---paging--- # Thống kê phân trang bộ nhớ
in: page in(nạp vào)
out: page out(đưa ra)
# Lưu ý: Hoạt động phân trang của hệ thống là kỹ thuật quản lý bộ nhớ, cho thấy tình huống hệ thống, phân trang lớn cho thấy hệ thống đang sử dụng không gian swap nhiều.
# Thường khi hệ thống bắt đầu dùng không gian swap, nghĩa là bộ nhớ đã không đủ hoặc bộ nhớ rất phân tán.
# Lý tưởng là page in và page out có giá trị 0 0.
---load-avg--- # Tải trung bình hệ thống
# Tương ứng với load trung bình của hệ thống trong 1 phút, 5 phút, 15 phút trước, phản ánh tình trạng tải hiện tại của hệ thống.
1.4 Các cách sử dụng nâng cao của dstat
(1) Tìm tiến trình và người dùng chiếm nhiều tài nguyên nhất:
Cách dùng: --top-(io|bio|cpu|cputime|cputime-avg|mem)
Bằng lệnh trên, có thể xem người dùng và tiến trình chiếm tài nguyên hệ thống cụ thể.
Ví dụ: Xem thông tin tiến trình đang chiếm nhiều IO, CPU, bộ nhớ nhất:
dstat --top-io --top-mem --top-cpu
(2) Lấy thông tin từ các ứng dụng khác:
dstat còn có thể lấy thông tin từ các ứng dụng khác. Ví dụ:
dstat --postfix # Hiển thị kích thước hàng đợi postfix
dstat --sendmail # Hiển thị kích thước hàng đợi sendmail
dstat --ntp # Hiển thị thời gian của máy chủ ntp
2 Cài đặt công cụ dstat
2.1 (Khuyến nghị) Cài đặt qua yum
Khuyến nghị, không cần cấu hình môi trường khác, có thể sử dụng ở bất kỳ đường dẫn nào:
yum -y install dstat
2.2 (Hoặc) Cài đặt qua wget
Đầu tiên cài đặt công cụ wget:
yum -y install wget
Sau đó cài đặt công cụ dstat:
wget http://dstat.sourcearchive.com/downloads/0.7.2/dstat_0.7.2.orig.tar.gz
# Giải nén, sau đó vào thư mục đã giải nén:
tar -xvzf dstat_0.7.2.orig.tar.gz
cd dstat-0.7.2.orig/
# Sử dụng cách sau để sử dụng dstat
./dstat -V
2.3 (Hoặc) Cài đặt bằng rpm
wget http://mirror.centos.org/centos/6/os/i386/Packages/dstat-0.7.2-3.el6.noarch.rpm
rpm -ivh dstat-0.7.2-3.el6.noarch.rpm
# Gọi trực tiếp dstat trong hệ thống
dstat -V
3 Các vấn đề thường gặp khi cài đặt
3.1 Mô tả vấn đề
Trong hệ thống CentOS 6.5, khi cố gắng sử dụng lệnh yum hoặc wget để cài đặt công cụ dstat, phát hiện cả hai đều không hoạt động:
- Lệnh yum lỗi:
Loaded plugins: fastestmirror
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base
- Lệnh wget lỗi:
-bash: wget: command not found
3.2 Giải quyết vấn đề
Sau khi tìm kiếm, phát hiện vấn đề nằm ở việc máy chủ không kết nối được với mạng ngoài, cách kiểm tra: Dòng lệnh thực hiện như sau:
ping www.google.com # Phát hiện không tìm thấy máy chủ www.google.com, nghĩa là chưa kết nối được internet.
(1) Một giải pháp tìm thấy trên mạng:
① Đăng nhập bằng root; ② Nhập:
vi /etc/sysconfig/network-scripts/ifcfg-eth0; ③ Thêm vào file nàyDNS1=8.8.8.8; ④ Lưu lại; ⑤ Nhập lệnh khởi động lại dịch vụ mạng:service network restart; ⑥ Nhập lệnh tiếp tục tải và cài đặt:yum install gcc.
Trên máy chủ của tác giả không tìm thấy thư mục sysconfig, tất nhiên cũng không tìm thấy file ifcfg-eth0. . .
(2) Giải pháp cuối cùng:
# Chỉnh sửa file /etc/resolv.conf:
vi /etc/resolv.conf
# Thêm vào:
nameserver 8.8.8.8
# Lưu và thoát
Lúc này ping www.google.com, phát hiện có thể ping通 —— Vấn đề đã được giải quyết.