2013-06-06 40 views
8

Tôi có thể chuẩn bị một quy trình trong Linux như thế nào? Tôi cần một cái gì đó như "đầu" và "thời gian" đặt lại với nhau cho một tên quá trình cụ thể (nó là một chương trình đa xử lý rất nhiều PID sẽ được đưa ra)?Làm thế nào để giám sát quá trình trong CPU Linux, Bộ nhớ và thời gian

Hơn nữa, tôi muốn có một âm mưu theo thời gian của bộ nhớ và cách sử dụng CPU cho các quá trình này chứ không chỉ là số cuối cùng.

Bất kỳ ý tưởng nào?

Trả lời

7

Sau đây là các công cụ để giám sát một hệ thống Linux

  1. lệnh hệ thống như top, free -m, vmstat, iostat, iotop, sar, netstat, vv Không có gì đến gần những tiện ích Linux khi bạn đang gỡ một vấn đề . Các lệnh này cung cấp cho bạn một bức tranh rõ ràng đang nằm trong máy chủ của bạn
  2. SeaLion: Tác vụ thực thi tất cả các lệnh được đề cập trong # 1 (cũng do người dùng xác định) và đầu ra của các lệnh này có thể được truy cập trong giao diện web đẹp mắt. Công cụ này có ích khi bạn đang gỡ lỗi trên hàng trăm máy chủ vì việc cài đặt rất đơn giản. Và MIỄN PHÍ
  3. Nagios: Đây là mẹ của tất cả các công cụ giám sát/cảnh báo.Nó rất tùy biến nhưng rất khó thiết lập cho người mới bắt đầu. Có nhiều công cụ được gọi là plugin nagios bao gồm khá nhiều chỉ số quan trọng của Linux
  4. Munin
  5. Server Density: Dịch vụ trả tiền theo đám mây thu thập số liệu quan trọng của Linux và cung cấp cho người dùng khả năng viết plugin riêng.
  6. Di tích mới: Một dịch vụ theo dõi được lưu trữ rõ ràng khác.
  7. Zabbix
+0

MMonit là bắt buộc. Single monit là miễn phí, cụm MMonit được trả tiền. – erm3nda

13

Tôi thường kết hợp một tập lệnh đơn giản cho loại công việc này.

Hãy xem tài liệu hạt nhân cho hệ thống tệp proc (Google 'linux proc.txt').

Dòng đầu tiên của /proc/stat (Phần 1.8 trong proc.txt) sẽ cung cấp cho bạn thống kê sử dụng cpu tích lũy (ví dụ: người dùng, đẹp, hệ thống, không hoạt động, ...). Đối với mỗi quá trình, tệp /proc/$PID/stat (Bảng 1-4 trong tệp proc.txt) sẽ cung cấp cho bạn cả số liệu thống kê sử dụng CPU và thống kê mức sử dụng bộ nhớ cụ thể (xem rss).

Nếu bạn google một chút, bạn sẽ tìm thấy nhiều thông tin chi tiết về những tệp này và con trỏ tới thư viện/ứng dụng/đoạn mã có thể giúp bạn có được/lấy được các giá trị bạn cần. Với ý nghĩ đó, tôi sẽ tập trung vào chiến lược cấp cao.

Đối với số liệu thống kê CPU, hãy sử dụng ngôn ngữ kịch bản yêu thích của bạn để tạo tệp thực thi có một tập hợp các id quá trình để theo dõi. Tại một khoảng thời gian cố định (ví dụ: 1 giây) thăm dò/tính toán tổng số tích lũy cho mỗi quá trình và toàn bộ hệ thống. Trong mỗi khoảng thời gian thăm dò ý kiến, viết tất cả các kết quả trên một dòng duy nhất để stdout.

Để biết thống kê bộ nhớ, hãy viết một tập lệnh tương tự, nhưng chỉ cần ghi lại quá trình sử dụng bộ nhớ trên mỗi quá trình. Bộ nhớ là một chút dễ dàng hơn khi chúng tôi trực tiếp có được các giá trị tức thời.

Chạy các tập lệnh này trong suốt thời gian thử nghiệm của bạn, chuyển tập hợp các id quy trình mà bạn muốn theo dõi và chuyển hướng đầu ra của nó sang tệp nhật ký.

./logcpu $(pidof foo) $(pidof bar) > cpustats 
./logmem $(pidof foo) $(pidof bar) > memstats 

Nhập nội dung của các tệp này vào bảng tính (đối với các ứng dụng nhất định dễ dàng như sao chép/dán). Đối với CPU, bạn sau các giá trị tức thời nhưng có giá trị cộng dồn, vì vậy bạn sẽ cần thực hiện một số công việc bảng tính nhỏ để lấy được các giá trị này (nó chỉ là delta 't (x + 1) - t (x)'). Tất nhiên bạn có thể có logger cpu của bạn ghi delta, nhưng bạn sẽ dành nhiều thời gian hơn một chút lên phía trước trên kịch bản.

Cuối cùng, sử dụng bảng tính của bạn để tạo một âm mưu hay.

+0

đánh giá cao việc xem/proc/$ PID chứa tất cả dữ liệu giám sát này – Paul