Làm cách nào để theo dõi và ghi nhật ký sử dụng bộ nhớ / cpu của các tiến trình theo thời gian? [đóng cửa]


30

Tôi đang tìm kiếm một cách để chẩn đoán các vấn đề, chẳng hạn như cái chết hoán đổi, trong đó một quá trình bộ nhớ baloon lấp đầy trao đổi và giết chết toàn bộ máy (chẳng hạn như apache).

Tôi đã sử dụng xương rồng và tôi có thể thiết lập nagios (mặc dù không muốn) hoặc munin nhưng theo tôi có thể nói rằng họ không thể ghi lại việc sử dụng chương trình cá nhân - chỉ là tình trạng chung.

Tôi biết tôi có thể cuộn một tập lệnh >> vào một số tệp cứ sau 30 giây nhưng tôi muốn xem liệu một giải pháp trưởng thành hiện có đã tồn tại chưa.

Một lần nữa, lý tưởng là nó sẽ:

  • ghi lại quá trình sử dụng bộ nhớ của mỗi quá trình
  • ghi lại quá trình sử dụng CPU mỗi N giây
  • biểu đồ hỗ trợ và lịch sử
  • hỗ trợ trung bình - như mysqld đã sử dụng 43% CPU trong ngày qua và bộ nhớ trung bình 400 MB
  • được miễn phí và nguồn mở

Tên quy trình không phải và không nên được biết trước - ý tưởng là chỉ để nó theo dõi và sau đó xem xét những kẻ phạm tội hàng đầu.

Hệ thống của tôi là Linux (OpenSUSE).


Bạn có muốn theo dõi bất kỳ quy trình nào có thể bị rò rỉ bộ nhớ (Bộ nhớ N hàng đầu) hay bạn đang muốn theo dõi một bộ quy trình đã xác định (ví dụ: máy chủ web Apache và quy trình Tomcat)? Điều thứ hai là có thể thực hiện được với một số plugin Nagios hoặc Cacti đơn giản. Cái trước khó hơn. Bạn nên làm rõ điều này.
Stefan Lasiewski

Tôi đã làm rõ nó trong bài viết nhưng để làm rõ một lần nữa: tôi muốn biết trạng thái của hệ thống khi nó bị sập do hoán đổi cái chết. Tôi muốn biết ai là kẻ phạm tội tồi tệ nhất. Và btw, nó không phải là một rò rỉ bộ nhớ - chỉ là một luồng lưu lượng, hoặc bất cứ điều gì gây ra việc sử dụng bộ nhớ cao. Vì vậy, một lần nữa, không có kiến ​​thức trước về tên nhị phân nên được cấu hình.
Artem Russakovskii


Warren, đó là một câu hỏi hoàn toàn khác.
Artem Russakovskii

8
Đóng một bài chất lượng tốt như vậy là một điều xấu, đặc biệt là sau 4 năm hồi tố.
peterh nói phục hồi Monica

Câu trả lời:


16

Bạn chỉ muốn những kẻ phạm tội hàng đầu, xem xét việc chạy topvới khoảng thời gian tương đối dài (cộng thêm 60 giây) trong chế độ hàng loạt. Bạn có thể cần nhiều hơn một lần topchạy để bắt những kẻ phạm tội hàng đầu trên nhiều tài nguyên. Tôi đã cấu hình các hệ thống để chạy toptrong một vài chu kỳ khi tài nguyên đang được sử dụng.

Xem xét chạy sartrong chế độ hàng loạt để nắm bắt việc sử dụng tài nguyên. Tôi nhận ra đây là máy chủ, nhưng nó hữu ích để xác định thời gian xảy ra sự cố.

Chạy muninvà kích hoạt thông báo. Điều này có thể cung cấp cho bạn một cơ hội để vào và xem máy chủ đi xuống. Bạn có thể sửa lỗi trước khi nó hỏng.

Đối với rò rỉ bộ nhớ, việc sử dụng trao đổi tăng đều đặn cho thấy có vấn đề. Tôi đã từng xem một máy chủ từ từ chết trong một khoảng thời gian. Dịch vụ vấn đề là một chương trình giám sát các quá trình khác để rò rỉ bộ nhớ. Quản trị viên hệ thống tiếp tục khẳng định việc sử dụng trao đổi ngày càng tăng không phải là vấn đề, cho đến khi máy chủ ngừng phản hồi.

Bạn có thể thấy rằng cfenginephát hiện bất thường có thể được sử dụng để kích hoạt tập lệnh để nắm bắt trạng thái hệ thống khi có sự cố. Bạn có thể muốn nhiều thông tin bên cạnh các quy trình sử dụng nhiều tài nguyên nhất. Đối với một luồng sử dụng đột ngột, bạn có thể muốn có một danh sách các kết nối mạng (theo địa chỉ không phải tên). Sử dụng bộ nhớ cũng hữu ích.


12

sysstat được thực hiện khá chính xác cho mục đích của bạn.


Đây là nơi bạn nên bắt đầu. Bạn không thể biết bắt đầu một kỳ thi cho đến khi bạn biết nơi nào bạn có thể có cơ hội tốt nhất. Sysstat là những gì bạn đang tìm kiếm (cũng có đồ thị đẹp). Một khi bạn biết nhiều hơn sử dụng systemtap.
Allen

9

Tôi đã sử dụng trên đỉnh trước đây:

http://freshmeat.net/projects/atop/

"Trên đỉnh là một màn hình hiệu suất toàn màn hình ASCII có khả năng báo cáo hoạt động của tất cả các quy trình (ngay cả khi các quy trình đã kết thúc trong khoảng thời gian), ghi nhật ký hệ thống và hoạt động xử lý hàng ngày để phân tích dài hạn, làm nổi bật tài nguyên hệ thống bị quá tải bằng cách sử dụng màu sắc, v.v ... Trong các khoảng thời gian đều đặn, nó hiển thị hoạt động ở cấp hệ thống liên quan đến CPU, bộ nhớ, trao đổi, đĩa và các lớp mạng và cho mỗi quy trình hoạt động, nó hiển thị mức độ sử dụng CPU, mức tăng trưởng bộ nhớ, mức độ ưu tiên, tên người dùng, trạng thái, và thoát mã. "


trên đỉnh dường như không có một báo cáo sẽ cung cấp cho tôi những gì tôi muốn. Hãy sửa lại cho tôi nếu tôi sai.
Artem Russakovskii

Nó chăm sóc hai điểm đầu tiên của bạn (bộ nhớ / cpu theo quy trình). Bạn có thể sử dụng thư viện để thu thập các số liệu thống kê này và sau đó thực hiện lịch sử / biểu đồ của bạn dựa trên dữ liệu.
NinjaCat

4
@ artem-russakovskii - Theo mặc định, trên đỉnh sẽ ghi dữ liệu vào một tệp trong mười phút. Nếu máy chủ của bạn gặp sự cố lúc 3:45, bạn có thể bắt đầu trên đỉnh atop -r log_filename, nhấn mđể chuyển sang chế độ xem sử dụng bộ nhớ theo quy trình, sau đó nhấn tđể di chuyển về phía trước với gia số 10 phút cho đến 3:40. Bạn có thể đọc thêm về những điều cơ bản của việc sử dụng atop tại lwn.net/Articles/387202 và xem một ví dụ về xác định rò rỉ bộ nhớ tại atoptool.nl/doad/case_leakage.pdf
sciurus

6

Bạn đã thử sưu tầm chưa?
Nó rất mạnh mẽ và có thể tùy chỉnh.
Có rất nhiều plugin và có thể được tích hợp với nagios.

http://collectd.org/features.shtml


Sưu tầm rất nhẹ, không quá khó để thiết lập và sẽ cho phép bạn thấy sự tăng trưởng bộ nhớ / trao đổi theo thời gian. Mặc dù vậy, nó sẽ không xác định chính xác các quy trình vi phạm - nhưng có lẽ bạn sẽ có thể nhận thấy và nắm bắt sự tăng trưởng bộ nhớ kịp thời và kiểm tra tình huống bằng tay top.
Marius Gedminas

1
Tôi phải nói rằng tôi đã không thử plugin đó, nhưng đọc từ hướng dẫn sử dụng plugin quá trình của colld: "Nếu các quy trình được chọn, thông tin sau sẽ được thu thập. Tất cả thông tin này được tổng hợp theo tên quy trình. Kích thước phân đoạn thường trú của nó, Thời gian sử dụng và hệ thống được sử dụng, Số lượng quy trình theo tên đó, Số lượng luồng (tổng hợp trên tất cả các quy trình), Số lỗi trang chính và phụ. Số I / O thô (byte được viết và đọc do đến tòa nhà theo quy trình).
PiL

Bạn có thể chọn các quy trình hoặc theo tên hoặc theo regex.
PiL

2

Centreon trên đỉnh Nagios, Nagios cùng với NRPE. Sau đó, bạn có thể viết các tập lệnh tùy chỉnh để báo cáo dữ liệu ở định dạng BẤT K you bạn muốn NRPE. Nagios sau đó thăm dò dữ liệu từ các máy chủ từ xa với NRPE và Centreon tạo ra một biểu đồ đẹp và thêm một tấn linh hoạt của người dùng. Chúng tôi sử dụng nó tại http://beyondhosting.net Tôi đã có mẫu VZ Container với thiết lập centreon + nagios nếu bạn muốn.

Đồ thị centreon xây dựng hostthenpost.org/tyler/2010-07-23_1719.png


Tôi muốn một giải pháp sẵn sàng để báo cáo những điều tôi đã đề cập, quan trọng nhất là các quá trình tiêu tốn nhiều bộ nhớ nhất. Tôi cũng không chắc VZ là gì.
Artem Russakovskii

2

nmon là một công cụ tuyệt vời thực hiện những gì bạn đang tìm kiếm. Được phát triển cho AIX và Linux. Tạo ra một tấn đầu ra chi tiết và dễ dàng đưa vào báo cáo. Nếu bạn google nó, có một wiki IBM có một loạt các tài liệu và các tiện ích bổ sung để phân tích dữ liệu.


2

Mật độ máy chủ thực hiện chính xác những gì bạn mô tả.

Tôi sử dụng nó trên một trong những máy chủ sản xuất của chúng tôi và rất hài lòng về nó. Tính năng hàng đầu của nó là khả năng xem biểu đồ, nhấp vào đỉnh và xem mức tiêu thụ CPU / bộ nhớ của máy chủ tại thời điểm hiện tại, bao gồm tất cả các quy trình đang chạy. Họ gọi đó là ảnh chụp nhanh .

Nó không ngừng cải thiện. Một trong những tính năng mới nhất là phát hiện dị thường , cho phép bạn dễ dàng phát hiện dị thường. Bạn cũng có thể thiết lập các ngưỡng khác nhau


1
À, tôi đã quên đề cập đến phần nhỏ mà tôi thích nó là miễn phí và là nguồn mở, nếu có thể. Hơn 100 đô la cho mỗi máy chủ không thực sự là những gì tôi muốn chi tiêu (và tôi chỉ có 1 máy chủ chứ không phải 5). serverd mật.com / giá trị
Artem Russakovskii


2

Các câu trả lời được đề xuất khi tôi hỏi một câu hỏi tương tự :

Icapan nói :

Munin là cách dễ nhất để có được các biểu đồ thời gian hoạt động với nỗ lực tối thiểu trong việc cài đặt và định cấu hình. Tôi cũng sử dụng trên đỉnh để sử dụng cpu tổng hợp theo một số quy trình, nhưng đó không phải là những gì bạn yêu cầu.

David Spillet nói :

Tôi sử dụng colld để ghi lại tải hệ thống giữa một số tham số khác. Nó lưu trữ dữ liệu trong các cửa hàng RRD có thể được vẽ biểu đồ và phân tích bằng cách sử dụng nhiều công cụ và tập lệnh có sẵn. Tôi sử dụng một phiên bản sửa đổi của tập lệnh này cho đồ thị của tôi ( đầu ra mẫu ).

Sưu tầm có các plugin để theo dõi rất nhiều thứ (mọi thứ thường được yêu cầu và một vài thứ ở trên) và việc tạo riêng của bạn không nên khó khăn nếu bạn cần một thứ gì đó chuyên dụng, vì vậy hãy tạo ra một công cụ rất linh hoạt. Định cấu hình biểu đồ trong rrd.cgi là một quy trình rất thủ công, mặc dù không khó, mặc dù bạn cũng có thể tìm thấy một công cụ thuận tiện hơn để làm việc với các tệp RRD được duy trì bởi colld.

Bạn cũng có thể kiểm tra Nagios hoặc OpenNMS .


1

Munin sẽ làm tất cả những gì bạn cần ra khỏi hộp mà không yêu cầu Nagios hoặc bất kỳ công cụ nào khác. Có RPM có sẵn cho OpenSUSE.


Liệu nó làm điều đó với một plugin. Nếu vậy thì cái nào? Tôi chưa thể tìm thấy cái nào không yêu cầu danh sách các quy trình được cấu hình sẵn để theo dõi.
Artem Russakovskii

Không rõ ràng từ câu hỏi ban đầu của bạn rằng bạn không muốn theo dõi danh sách các quy trình được cấu hình sẵn - bạn có thể cung cấp thêm chi tiết về các yêu cầu của bạn không?
gareth_bowles

Làm rõ: Tên quy trình không phải và không nên được biết trước - ý tưởng là chỉ để nó theo dõi và sau đó xem xét những kẻ phạm tội hàng đầu.
Artem Russakovskii

1

Có lẽ OProfile cũ tốt làm những gì bạn cần? Đó là một trình lược tả cấp hệ thống dựa trên kernel chỉ với một chi phí nhỏ (vài phần trăm).

Sau đó, có một kịch bản Perl xuất sắc, PSMon , cho phép bạn thiết lập tất cả các loại giới hạn CPU / bộ nhớ. Nếu vượt quá, psmon sẽ ghi lại lỗi và / hoặc giết quá trình vi phạm.

Cái sau sẽ không tạo ra bất kỳ báo cáo hồ sơ nào cho bạn, nhưng nếu nó quyết định giết đi quá trình tương tự lặp đi lặp lại, có lẽ bạn đã tìm thấy tên khốn khó chịu mà bạn đang tìm kiếm. :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.