Chúng tôi đang thực hiện một giải pháp giám sát tập trung mới (Zenoss). Việc kết hợp các máy chủ, mạng và các chương trình Java rất đơn giản với SNMP và JMX.
Tuy nhiên, câu hỏi đặt ra là các thực tiễn tốt nhất để giám sát và quản lý các ứng dụng C ++ tùy chỉnh trong các môi trường lớn, không đồng nhất (Solaris x86, RHEL Linux, Windows) là gì?
Khả năng tôi thấy là:
- Mạng SNMP
- Ưu điểm
- daemon đơn, trung tâm trên mỗi máy chủ
- tiêu chuẩn nổi tiếng
- tích hợp dễ dàng vào các giải pháp giám sát
- chúng tôi đã chạy Net SNMP daemon trên các máy chủ của mình
- triển khai phức tạp (MIB, thư viện SNMP Net)
- công nghệ mới để giới thiệu cho các nhà phát triển C ++
- Ưu điểm
- daemon đơn, trung tâm trên mỗi máy chủ
- tiêu chuẩn nổi tiếng
- tích hợp không xác định vào các giải pháp giám sát (Tôi biết họ có thể thực hiện cảnh báo dựa trên văn bản, nhưng nó sẽ hoạt động tốt như thế nào để gửi từ xa như sử dụng bộ nhớ, độ sâu hàng đợi, dung lượng luồng, v.v.)
- thực hiện đơn giản
- vấn đề tích hợp có thể
- công nghệ hơi mới cho các nhà phát triển C ++
- vấn đề chuyển có thể xảy ra nếu chúng ta chuyển đổi nhà cung cấp giám sát
- có lẽ liên quan đến việc đưa ra một giao thức truyền thông đặc biệt (hoặc sử dụng dữ liệu có cấu trúc RFC5424; tôi không biết liệu Zenoss có hỗ trợ điều đó mà không cần mã hóa Zenpack tùy chỉnh không)
- Ưu điểm
- giao diện quản lý nhất quán cho cả Java và C ++
- tiêu chuẩn nổi tiếng
- tích hợp dễ dàng vào các giải pháp giám sát
- thực hiện hơi đơn giản (chúng tôi đã làm điều này ngày hôm nay cho các mục đích khác)
- độ phức tạp (JNI, lớp kết nối giữa C ++ và Java bản địa, về cơ bản viết mã quản lý hai lần)
- vấn đề ổn định có thể
- yêu cầu JVM trong mỗi quy trình, sử dụng nhiều bộ nhớ hơn
- JMX là công nghệ mới dành cho nhà phát triển C ++
- mỗi quy trình có cổng JMX riêng (chúng tôi chạy rất nhiều quy trình trên mỗi máy)
- Ưu điểm
- daemon đơn, trung tâm trên mỗi máy chủ
- giao diện quản lý nhất quán cho cả Java và C ++
- tiêu chuẩn nổi tiếng
- tích hợp dễ dàng vào các giải pháp giám sát
- độ phức tạp (về cơ bản viết mã quản lý hai lần)
- cần tìm hoặc viết một daemon như vậy
- cần một giao thức giữa daemon JMX và tiến trình C ++
- JMX là công nghệ mới dành cho nhà phát triển C ++
- Ưu điểm
- giao diện quản lý nhất quán cho cả Java và C ++
- tiêu chuẩn nổi tiếng
- tích hợp dễ dàng vào các giải pháp giám sát
- daemon đơn, trung tâm trên mỗi máy chủ khi chạy trong chế độ JVM được chia sẻ
- thực hiện hơi đơn giản (yêu cầu tạo mã)
- độ phức tạp (tạo mã, yêu cầu GUI và một số vòng điều chỉnh để tạo mã proxy)
- vấn đề ổn định JNI có thể
- yêu cầu JVM trong mỗi quy trình, sử dụng nhiều bộ nhớ hơn (trong chế độ nhúng)
- Không hỗ trợ Solaris x86 (bộ ngắt thỏa thuận)
- Ngay cả khi nó đã hỗ trợ Solaris x86, vẫn có thể xảy ra sự cố tương thích trình biên dịch (chúng tôi sử dụng kết hợp kỳ lạ giữa STLPort và Forte trên Solaris
- mỗi quy trình có cổng JMX riêng khi chạy ở chế độ nhúng (chúng tôi chạy rất nhiều quy trình trên mỗi máy)
- có thể loại trừ một máy chủ JMX được chia sẻ cho các quy trình không phải C ++ (?)
Có một số giải pháp đơn giản, hợp lý hóa mà tôi đang thiếu?
Không có giải pháp hợp lý nào khác, giải pháp nào trong số những giải pháp này thường được sử dụng cho các chương trình C ++ tùy chỉnh?
Tôi cảm thấy ruột thịt là Net SNMP là cách mọi người làm điều này, nhưng tôi thích đầu vào và trải nghiệm của người khác trước khi tôi đưa ra quyết định.