[Series] Linux System Administrator's guide. [Phần 6]


Chương 6. Giám sát hệ thống.


Một trong những trách nhiệm quan trọng nhất của người quản trị hệ thống , đó chính là theo dõi hệ thống của anh/cô ta. Với tư cách một sysadmin, bạn sẽ cần phải biết được những gì đang xảy ra trên hệ thống của mình tại một thời điểm cho trước. Bao nhiêu phần trăm tài nguyên hệ thống đang được sử dụng, lệnh nào đang được chạy , ai đã và đang login ? Chương này sẽ bao quát cho bạn thấy làm thế nào bạn có thể giám sát hệ thống của mình, và trong một vài trường hợp, làm thế nào bạn có thể giải quyết những vấn đề có nguy cơ phát sinh.

Khi một vấn đề về hiệu suất phát sinh, đây thường là 4 nguyên nhân chính mà bạn cần xem xét:

  • CPU
  • Memory
  • Disk I/O
  • Mạng
Khả năng xác định được đâu là nơi gây ra hiện tượng nghẽn cổ chai, sẽ giúp bạn tiết kiệm được rất nhiều thời gian.

6.1. Tài nguyên hệ thống.


Việc giám sát hiệu suất hệ thống của bạn là cần thiết. Nếu như tài nguyên hệ thống trở nên khan hiếm, nó có thể sinh ra rất nhiều vấn đề. Tài nguyên hệ thống có thể bị chiếm dụng bởi những người dùng độc lập, hoặc bởi các dịch vụ được host trên hệ thống của bạn (các email, các trang web...). Nếu như bạn có khả năng biết được điều gì đang xảy ra, nó sẽ giúp bạn quyết định xem hệ thống có cần được nâng cấp hay không, hoặc có nên di chuyển các dịch vụ khác sang các máy khác hay không.

6.1.1. Lệnh top.


Lệnh phổ biến nhất dùng để giám sát hệ thống, chắc hẳn phải nhắc tới top. Lệnh này sẽ hiển thị một danh sách các báo cáo được cập nhật thường xuyên về việc sử dụng tài nguyên hệ thống.


Các phần trong báo cáo của top , như thời gian hệ thống, thời lượng hệ thống đã chạy, tài nguyên CPU, tài nguyên bộ nhớ vật lý và bộ nhớ swap, số lượng các tiến trình. Phía dưới là một danh sách các tiến trình được sắp theo lượng tài nguyên CPU mà chúng chiếm dụng.

Bạn có thể chỉnh sửa output của top trong khi nó đang chạy. Nếu bạn nhấn phím i, top sẽ không hiển thị các tiến trình đang nghỉ ngơi nữa. Để thấy chúng , bạn nhấn i một lần nữa. Nhấn phím M sẽ sắp xếp danh sách theo lượng memory bị chiếm dụng, S sẽ sắp xếp theo thời lượng mà các tiến trình đã chạy, P sẽ sắp xếp theo lượng tài nguyên CPU mà các tiến trình chiếm dụng.

Ngoài các tùy chọn trên, bạn cũng có thể sửa đổi các tiến trình bằng top. Bạn có thể nhấn u để theo dõi các tiến trình thuộc sở hữu của một người dùng cụ thể, nhấn k để giết, r để renice một tiến trình cho trước.

Để biết những thông tin sâu và chi tiết hơn về các tiến trình, bạn có thể nhìn vào trong /proc. Bạn sẽ tìm thấy trong filesystem này một loạt các thư mục con có tên là những con số. Những thư mục này được liên kết với những tiến trình đang chạy, và tên thư mục chính là process id của tiến trình tương ứng. Trong mỗi một thư mục, bạn có thể tìm thấy một chuỗi các file chứa các thông tin về tiến trình mà bạn cần tìm.

BẠN PHẢI CỰC KỲ THẬN TRỌNG ĐỂ KHÔNG LÀM THAY ĐỔI NHỮNG FILE NÀY, NẾU KHÔNG SẼ GÂY RA NHỮNG VẤN ĐỀ KHÁ NGUY HIỂM CHO HỆ THỐNG

6.1.2. Lệnh iostat.

Lệnh này hiển thị tải trung bình của CPU và thông tin về lưu lượng , tình trạng nhập/xuất của đĩa. Đây là một lệnh tuyệt vời để giám sát sự sử dụng đĩa trên hệ thống của bạn.


6.1.3. Lệnh ps.

Lệnh ps sẽ cung cấp cho bạn một danh sách các tiến trình đang chạy. Có một danh sách rộng các tùy chọn cho bạn lựa chọn.

ps thường được dùng với mục đích liệt kê tất cả các tiến trình đang chạy, để làm điều này, bạn gõ lệnh ps -ef.




Cột đầu tiên cho thấy ai đang sở hữu tiến trình. Cột thứ 2 là PID của tiến trình đó. Cột thứ 3 là parent PID của tiến trình đó (parent process : là tiến trình mà khởi động , hoặc tạo ra một tiến trình khác). Cột thứ tư là số phần trăm tài nguyên CPU mà tiến trình đó chiếm dụng. Cột thứ 5 là thời gian mà tiến trình đó được khởi chạy. Cột thứ 6 chính là tty có liên quan tới tiến trình đó (nếu có). Cột thứ 7 là tổng thời lượng mà CPU dùng để chạy chúng. Cột thứ 8 là lệnh mà tiến trình đó chạy.

Với những thông tin trên bạn có thể thấy chính xác những gì đang chạy trên hệ thống, từ đó đưa ra các phương án thích hợp.

6.1.4. Lệnh vmstat.

Lệnh này chung cấp một báo cáo với những số liệu thống kê về các tiến trình hệ thống, bộ nhớ, swap , I/O , CPU. Các số liệu thống kê này được tạo ra sử dụng những dữ liệu từ lần cuối cùng lệnh này được chạy.



Những thông tin dưới đây được tìm trong man page của vmstat :


procs:

  • r : Số lượng các process đang chờ tới luợt chạy.
  • b: Số luợng các process đang nằm trong chế độ uninterrputable sleep.
  • w: Số lượng các process được swap vào swap space những vẫn có khả năng chạy.
memory:
  • swpd: Tổng lượng bộ nhớ ảo được sử dụng (kB).
  • free: Tổng lượng bộ nhớ đang rảnh rỗi (kB).
  • buff: Tổng lượng bộ nhớ được sử dụng làm những bộ đệm (kB).
swap:
  • si: Tổng luợng bộ nhớ được swap từ đĩa vào RAM (kB/s).
  • so: Tổng lượng bộ nhớ được swap từ RAM vào đĩa (kB/s).
IO:
  • bi: Các block được gửi tới một block device (blocks/s).
  • bo: Các block được nhận từ một block device(block/s).
system:
  • in: Số lượng các ngắt trong một giây.
  • cs: Số lượng các tiến trình được scheduler active trong một giây.
CPU: Phần trăm thời lượng sử dụng CPU
  • us: thời lượng các tiến trình người dùng sử dụng CPU.
  • sy: thời lượng mà kernel và các chương trình hệ thống sử dụng CPU.
  • id: thởi gian rảnh (idle).
6.1.5. Lệnh lsof.

Lệnh này sẽ in ra một danh sách mọi file đang được sử dụng. Do trong Linux mọi thứ đều là file, nên danh sách này có thể sẽ rất dài. Tuy nhiên, lệnh này có thể hữu dụng trong việc phân tích chẩn đoán các vấn đề. Một ví dụ đó là nếu bạn muốn unmount một filesystem, nhưng nó lại đang được sử dụng. Bạn có thể sử dụng lệnh này cùng với grep để tìm ra ai đang sử dụng filesystem đó. Hoặc giả sử rằng bạn muốn thấy tất cả các file được sử dụng bởi một process cụ thể. Để làm điều này bạn cần dùng lệnh lsof -p <processid>.


6.2. Filesystem usage.


6.2.1. Lệnh df.

Lệnh này là công cụ đơn giản nhất để xem lượng sử dụng đĩa. Chỉ cần gõ df và bạn sẽ thấy được bao nhiêu không gian đã đĩa đã bị chiếm dụng trên các filesystem mà bạn đã mount (với kích thước blocks là 1Kilobyte).


Bạn có thể sử dụng tùy chọn -h để yêu cầu d cho ra output với định dạng dễ đọc hơn. Output này có thể dưới dạng Kilobytes, Megabytes, Gigabytes phụ thuộc vào kích thước của filesystem. Bạn cũng có thể sử dụng tùy chọn B để chỉ rõ kích thước của block mà bạn muốn df đọc. Ví dụ:



Bạn cũng có thể sử dụng -i để xem số lượng các inodes đã được sử dụng hoặc đang dư thừa. Ví dụ :

6.2.2. Lệnh du.

Bạn sử dụng lệnh này để xem một thư mục hoặc một file chiếm dụng bao nhiêu không gian đĩa. Nếu bạn không chỉ rõ một tệp tin, du sẽ chạy theo kiểu đệ quy, nó in ra không gian chiếm dụng của tất cả các thư mục con nằm trong thư mục đó. Ví dụ:



Nếu bạn chỉ muốn xem không gian chiếm dụng của một thư mục duy nhất, sử dụng tùy chọn -s:





6.3. Giám sát người dùng.

Chắc hẳn rất nhiều lần bạn muốn được biết mọi người đang làm gì trên hệ thống của bạn. Là khi bạn nhận ra rằng có sự chiếm dụng RAM quá nhiều, hoặc tải của CPU tăng đột ngột. Bạn sẽ muốn thấy ai đang log-in vào hệ thống, họ đang làm cái gì, và họ đang sử dụng kiểu tài nguyên nào của hệ thống.


6.3.1. Lệnh who.

Cách dễ nhất để thấy ai đang ở trên hệ thống, đó là sử dụng lệnh who hoặc w. Lệnh này sẽ in ra tất cả những người dùng đang logged-in vào hệ thống, và port hoặc terminal mà họ log vào. Ví dụ:


6.3.2. Lại là lệnh ps.

Trong section trước, chúng ta đã biết rằng người dùng có tên trandat đã loggin vào hệ thống. Nhưng nếu chúng ta muốn thấy những thứ người đó đang làm , chúng ta sẽ làm gì? Lúc này lệnh ps phát huy tác dụng. Bạn gõ ps -u trandat, output sẽ như sau:



6.3.3. Lệnh w.

Lệnh này dễ hơn , tiện hơn việc sử dụng đồng thời ps -uwho. w sẽ in ra không chỉ những người đang log vào hệ thống, mà còn in ra câu lệnh mà họ đang sử dụng. Ví dụ :


Từ đây ta nhìn thấy đang có một session của i3wm đang chạy.

via Trần Bá Đạt - Nguồn : The Linux documentation project

 
biz.