2009-09-10 101 views
11

Tôi đang cố gắng tìm một giải pháp cho phép tôi theo dõi mức tiêu thụ tài nguyên của máy chủ. Tốt hơn là, các số liệu tôi muốn thu được là sử dụng mạng IO, và nếu có thể sử dụng CPU/tải trung bình và đĩa IO.Giám sát máy chủ đơn giản với Java

Yêu cầu duy nhất khác mà tôi có là thông tin này có thể có được bởi Java để nó có thể được thao tác, và ít nhất là làm việc trên Linux (Fedora).

Tôi đã nghe nói về một vài công cụ giám sát nhưng tôi không chắc chắn về cách tốt nhất để thực hiện điều này. Có lẽ tôi muốn thu thập thông tin về mỗi 30 giây.

Cảm ơn

Cập nhật: Chỉ cần để tái lặp, tôi đề cập đến hệ thống giám sát toàn KHÔNG Java giám sát cụ thể. Tôi chỉ muốn sử dụng Java để truy cập vào các chỉ số này

+0

Câu hỏi của bạn không rõ ràng. Bạn có nghĩa là "một quá trình máy chủ" hoặc bạn có nghĩa là máy chủ chính nó, khi bạn nói "máy chủ". Nó có vẻ như bạn có nghĩa là sau này nhưng câu trả lời JMX (dưới đây) nếu viết từ quan điểm của bạn có nghĩa là cựu –

+0

Tôi xin lỗi nếu điều đó không rõ ràng - Tôi đang nói về toàn bộ máy chủ như tôi về cơ bản muốn biết sức khỏe của máy chủ cho mục đích nhân rộng. Số liệu quan trọng nhất là sử dụng mạng. – MSR

+2

Nếu sử dụng mạng là số liệu quan trọng nhất, tôi không chắc JMX sẽ giúp bạn và tôi sẽ xem xét sử dụng Cacti và API Java để đọc dữ liệu RDD. –

Trả lời

0

Đặt cược tốt nhất của bạn có thể sẽ xem/proc cho tất cả việc sử dụng tài nguyên hệ thống của bạn/proc/cpuinfo và/proc/net/là một nơi tốt để bắt đầu.

1

Bạn có thể xem xét sử dụng công cụ theo dõi Ganglia. Nó sử dụng XML để biểu diễn dữ liệu của nó và vì vậy tôi tưởng tượng nó sẽ khá đơn giản để truy cập dữ liệu từ Java, và có những lợi thế bổ sung mà nó được thiết kế để có khả năng mở rộng cao, với khả năng ghi lại số liệu máy chủ trên một số lượng lớn máy móc.

3

Bạn có thể chọn ủy quyền giám sát cho một công cụ chuyên dụng như Cacti, Centreon hoặc Zenoss nhưng điều này có thể hơi quá mức đối với một ứng dụng.

Đối với một giải pháp đơn giản, JMX thực sự có thể là một giải pháp tốt hơn. Khi bắt đầu, tôi khuyên bạn nên đọc bài viết sau: Monitoring Local and Remote Applications Using JMX 1.2 and JConsole. Sau đó, có một cái nhìn tại Using JConsole to Monitor Applications, một bài viết rất chi tiết cho thấy làm thế nào để sử dụng JConsole để truy cập một số chức năng giám sát lõi và quản lý được cung cấp bởi các nền tảng Java bao gồm:

  • Phát hiện bộ nhớ thấp
  • Bật hoặc tắt tính năng theo dõi chi tiết tải GC và lớp học
  • Phát hiện deadlocks
  • Kiểm soát mức nhật ký của bất kỳ logger nào trong ứng dụng
  • Tiếp cận nguồn tài nguyên-Sun OS nền tảng mở rộng của
  • Quản lý của một ứng dụng Managed Beans (MBeans)

Nhưng, AFAIK, JMX sẽ không cung cấp cho bạn truy cập vào mạng IO, do đó bạn có thể cần một sự kết hợp của những công cụ này . May mắn thay, nhiều công cụ (ví dụ: Cacti, SmokePing) sử dụng định dạng RDD mà bạn có thể dễ dàng thao tác với các API Java như JRobin hoặc rdd4j.

0

Có gì sai với Runtime.exec ("một số lệnh")?

1

Tôi đang phát triển thích collectd, C daemon mô-đun tập trung vào giám sát (chứ không phải vẽ đồ thị) với vô số plugins:

Dường như có một số phương án tions để nhận số liệu vào mã Java của bạn:

  • trong quá trình, sử dụng nói trên Java plugin đăng ký một ghi callback để nhận dữ liệu từ các plugin khác nhau
  • qua mạng, bằng cách nhúng jcollectd (một cài đặt Java của giao thức collectd của) vào ứng dụng của bạn
  • gián tiếp, bằng văn bản cho tệp CSV hoặc RRD và bằng một trong những triển khai RRD khác nhau cho Java
2

Chỉ muốn ném RHQ (http: // RHQ-dự án. org /) trong hỗn hợp :-)

-1

Tôi không chắc liệu điều này có hỗ trợ truy vấn của bạn hay không. IMHO Cacti và Centreon dường như quá phức tạp để đầu tư thời gian vào cho một yêu cầu đơn giản như bạn. Có các công cụ đơn giản hơn để giám sát máy chủ như New RelicSeaLion. SeaLion là yêu thích hiện tại của tôi. Nó cung cấp các lệnh mặc định đơn giản bao gồm hầu hết các yêu cầu cơ bản (có thể cũng sẽ bao gồm các yêu cầu của bạn). Nó cũng rất đơn giản để thiết lập và hoàn toàn miễn phí. Bạn có thể thử chúng.