Kami menerapkan solusi pemantauan terpusat baru (Zenoss). Memasukkan server, jaringan, dan program Java sangat mudah dengan SNMP dan JMX.
Namun, pertanyaannya adalah apakah praktik terbaik untuk memantau dan mengelola aplikasi C ++ khusus di lingkungan besar, heterogen (Solaris x86, RHEL Linux, Windows)?
Kemungkinan yang saya lihat adalah:
- SNMP bersih
- Keuntungan
- satu, pusat daemon di setiap server
- standar terkenal
- integrasi yang mudah ke dalam solusi pemantauan
- kami sudah menjalankan Net SNMP daemon di server kami
- implementasi kompleks (MIB, pustaka SNMP Net)
- teknologi baru yang akan diperkenalkan untuk pengembang C ++
- Keuntungan
- satu, pusat daemon di setiap server
- standar terkenal
- integrasi yang tidak diketahui ke dalam solusi pemantauan (saya tahu mereka bisa melakukan peringatan berdasarkan teks, tetapi seberapa baik kerjanya untuk mengirim telemetri seperti penggunaan memori, kedalaman antrian, kapasitas utas, dll.)
- implementasi sederhana
- kemungkinan masalah integrasi
- teknologi yang agak baru untuk pengembang C ++
- kemungkinan masalah porting jika kami beralih dari vendor pemantauan
- mungkin melibatkan pembuatan protokol komunikasi ad-hoc (atau menggunakan data terstruktur RFC5424; saya tidak tahu apakah Zenoss mendukungnya tanpa pengkodean Zenpack kustom)
- Keuntungan
- antarmuka manajemen yang konsisten untuk Java dan C ++
- standar terkenal
- integrasi yang mudah ke dalam solusi pemantauan
- implementasi agak sederhana (kami sudah melakukan ini hari ini untuk keperluan lain)
- kompleksitas (JNI, lapisan pemunculan antara asli C ++ dan Java, pada dasarnya menulis kode manajemen dua kali)
- kemungkinan masalah stabilitas
- membutuhkan JVM di setiap proses, menggunakan memori jauh lebih banyak
- JMX adalah teknologi baru untuk pengembang C ++
- setiap proses memiliki port JMX sendiri (kami menjalankan banyak proses pada setiap mesin)
- Keuntungan
- satu, pusat daemon di setiap server
- antarmuka manajemen yang konsisten untuk Java dan C ++
- standar terkenal
- integrasi yang mudah ke dalam solusi pemantauan
- kompleksitas (pada dasarnya menulis kode manajemen dua kali)
- perlu menemukan atau menulis daemon semacam itu
- membutuhkan protokol antara daemon JMX dan proses C ++
- JMX adalah teknologi baru untuk pengembang C ++
- Keuntungan
- antarmuka manajemen yang konsisten untuk Java dan C ++
- standar terkenal
- integrasi yang mudah ke dalam solusi pemantauan
- daemon pusat tunggal pada setiap server ketika dijalankan dalam mode JVM bersama
- implementasi yang agak sederhana (memerlukan pembuatan kode)
- kompleksitas (pembuatan kode, membutuhkan GUI dan beberapa putaran penyesuaian untuk menghasilkan kode yang diproksi)
- kemungkinan masalah stabilitas JNI
- membutuhkan JVM di setiap proses, menggunakan jauh lebih banyak memori (dalam mode tertanam)
- Tidak mendukung Solaris x86 (deal breaker)
- Bahkan jika itu mendukung Solaris x86, ada kemungkinan masalah kompatibilitas kompiler (kami menggunakan kombinasi aneh STLPort dan Forte on Solaris
- setiap proses memiliki port JMX sendiri saat dijalankan dalam mode tertanam (kami menjalankan banyak proses pada setiap mesin)
- mungkin menghalangi server JMX bersama untuk proses non-C ++ (?)
Apakah ada beberapa solusi sederhana yang distandarisasi dan sederhana yang saya lewatkan?
Karena tidak ada solusi masuk akal lainnya, manakah dari solusi ini yang biasanya digunakan untuk program C ++ khusus?
Perasaan saya adalah bahwa SNMP Net adalah cara orang melakukan ini, tetapi saya ingin masukan dan pengalaman orang lain sebelum saya mengambil keputusan.