Yeni bir merkezi izleme çözümü (Zenoss) uyguluyoruz. Sunucuları, ağları ve Java programlarını birleştirmek SNMP ve JMX ile çok kolaydır.
Ancak soru, büyük, heterojen (Solaris x86, RHEL Linux, Windows) ortamlarda özel C ++ uygulamalarını izlemek ve yönetmek için en iyi uygulamalar nelerdir?
Gördüğüm olasılıklar:
- Net SNMP
- Avantajları
- her sunucuda tek, merkezi arka plan programı
- iyi bilinen standart
- izleme çözümlerine kolay entegrasyon
- zaten sunucularımızda Net SNMP artalan süreçleri çalıştırıyoruz
- karmaşık uygulama (MIB'ler, Net SNMP kütüphanesi)
- C ++ geliştiricileri için yeni teknoloji
- Avantajları
- her sunucuda tek, merkezi arka plan programı
- iyi bilinen standart
- izleme çözümlerine bilinmeyen entegrasyon (metne dayalı uyarılar yapabildiklerini biliyorum, ancak bellek kullanımı, kuyruk derinlikleri, diş kapasitesi vb. gibi telemetri göndermek için ne kadar iyi çalışır)
- basit uygulama
- olası entegrasyon sorunları
- C ++ geliştiricileri için biraz yeni teknoloji
- izleme sağlayıcılarını değiştirirsek olası taşıma sorunları
- muhtemelen bir ad-hoc iletişim protokolü (veya RFC5424 yapılandırılmış veri kullanarak) içerir; Zenoss'un özel Zenpack kodlaması olmadan bunu destekleyip desteklemediğini bilmiyorum)
- Avantajları
- Java ve C ++ için tutarlı yönetim arayüzü
- iyi bilinen standart
- izleme çözümlerine kolay entegrasyon
- biraz basit bir uygulama (bunu bugün başka amaçlar için yapıyoruz)
- karmaşıklık (JNI, yerel C ++ ve Java arasında thunking katmanı, temel olarak yönetim kodunu iki kez yazıyor)
- olası kararlılık sorunları
- çok daha fazla bellek kullanan her işlemde bir JVM gerektirir
- JMX, C ++ geliştiricileri için yeni bir teknolojidir
- Her işlemin kendi JMX portu vardır (her makinede çok fazla işlem yürütürüz)
- Avantajları
- her sunucuda tek, merkezi arka plan programı
- Java ve C ++ için tutarlı yönetim arayüzü
- iyi bilinen standart
- izleme çözümlerine kolay entegrasyon
- karmaşıklık (temel olarak yönetim kodunu iki kez yazmak)
- böyle bir arka plan programı bulmalı veya yazmalı
- JMX arka plan programı ve C ++ işlemi arasında bir protokole ihtiyaç var
- JMX, C ++ geliştiricileri için yeni bir teknolojidir
- Avantajları
- Java ve C ++ için tutarlı yönetim arayüzü
- iyi bilinen standart
- izleme çözümlerine kolay entegrasyon
- paylaşılan JVM modunda çalıştırıldığında her sunucudaki tek, merkezi arka plan programı
- biraz basit uygulama (kod üretimi gerektirir)
- karmaşıklık (kod oluşturma, proxy oluşturmak için bir GUI ve birkaç tur ince ayar gerektirir)
- olası JNI kararlılık sorunları
- her işlemde çok daha fazla bellek kullanan (gömülü modda) bir JVM gerektirir
- Solaris x86'yı (anlaşma kesici) desteklemez
- Solaris x86'yı desteklese bile, olası derleyici uyumluluğu sorunları vardır (Solaris'te STLPort ve Forte'un tek bir kombinasyonunu kullanıyoruz
- gömülü modda çalıştırıldığında her işlemin kendi JMX bağlantı noktası vardır (her makinede çok sayıda işlem yürütürüz)
- muhtemelen C ++ dışındaki işlemler için paylaşılan bir JMX sunucusunu engeller (?)
Eksik olduğum makul standartlara sahip, basit bir çözüm var mı?
Başka hiçbir makul çözüm göz önüne alındığında, bu çözümlerden hangisi genellikle özel C ++ programları için kullanılır?
Benim içimde hissettiğim şey, Net SNMP'nin insanların bunu nasıl yaptığıdır, ancak bir karar vermeden önce başkalarının girdilerini ve deneyimlerini istiyorum.