हम एक नया केंद्रीकृत निगरानी समाधान (जेनॉस) लागू कर रहे हैं। सर्वर, नेटवर्किंग और जावा प्रोग्राम को शामिल करना SNMP और JMX के साथ सीधा है।
हालांकि, सवाल यह है कि बड़े, विषम (Solaris x86, RHEL Linux, Windows) वातावरणों में कस्टम C ++ अनुप्रयोगों की निगरानी और प्रबंधन के लिए सर्वोत्तम अभ्यास क्या हैं?
मेरे द्वारा देखी जाने वाली संभावनाएँ हैं:
- नेट एसएनएमपी
- लाभ
- प्रत्येक सर्वर पर एकल, केंद्रीय डेमॉन
- प्रसिद्ध मानक
- निगरानी समाधान में आसान एकीकरण
- हम अपने सर्वर पर पहले से ही नेट SNMP डेमॉन चलाते हैं
- जटिल कार्यान्वयन (MIBs, नेट SNMP पुस्तकालय)
- सी ++ डेवलपर्स के लिए पेश करने के लिए नई तकनीक
- लाभ
- प्रत्येक सर्वर पर एकल, केंद्रीय डेमॉन
- प्रसिद्ध मानक
- निगरानी समाधानों में अज्ञात एकीकरण (मुझे पता है कि वे पाठ के आधार पर अलर्ट कर सकते हैं, लेकिन टेलीमेट्री जैसे मेमोरी उपयोग, कतार की गहराई, थ्रेड क्षमता, आदि भेजने के लिए यह कितना अच्छा काम करेगा)
- सरल कार्यान्वयन
- संभव एकीकरण मुद्दों
- सी ++ डेवलपर्स के लिए कुछ नई तकनीक
- यदि हम निगरानी विक्रेताओं को स्विच करते हैं तो संभव पोर्टिंग समस्याएँ
- संभवतः इसमें एक तदर्थ संचार प्रोटोकॉल (या RFC5424 संरचित डेटा का उपयोग करना शामिल है; मुझे नहीं पता कि ज़ेनॉस कस्टम ज़ेनपैक कोडिंग के बिना समर्थन करता है)
- लाभ
- जावा और C ++ दोनों के लिए लगातार प्रबंधन इंटरफ़ेस
- प्रसिद्ध मानक
- निगरानी समाधान में आसान एकीकरण
- कुछ हद तक सरल कार्यान्वयन (हम पहले से ही आज अन्य उद्देश्यों के लिए करते हैं)
- जटिलता (जेएनआई, मूल सी ++ और जावा के बीच थरथराने वाली परत, मूल रूप से प्रबंधन कोड को दो बार लिखना)
- संभव स्थिरता की समस्याओं
- प्रत्येक प्रक्रिया में एक जेवीएम की आवश्यकता होती है, और अधिक मेमोरी का उपयोग करते हुए
- JMX C ++ डेवलपर्स के लिए नई तकनीक है
- प्रत्येक प्रक्रिया का अपना JMX पोर्ट होता है (हम प्रत्येक मशीन पर बहुत सारी प्रक्रियाएँ चलाते हैं)
- लाभ
- प्रत्येक सर्वर पर एकल, केंद्रीय डेमॉन
- जावा और C ++ दोनों के लिए लगातार प्रबंधन इंटरफ़ेस
- प्रसिद्ध मानक
- निगरानी समाधान में आसान एकीकरण
- जटिलता (मूल रूप से प्रबंधन कोड को दो बार लिखना)
- इस तरह के डेमॉन को खोजने या लिखने की जरूरत है
- जेएमएक्स डेमॉन और सी ++ प्रक्रिया के बीच एक प्रोटोकॉल की आवश्यकता है
- JMX C ++ डेवलपर्स के लिए नई तकनीक है
- लाभ
- जावा और C ++ दोनों के लिए लगातार प्रबंधन इंटरफ़ेस
- प्रसिद्ध मानक
- निगरानी समाधान में आसान एकीकरण
- साझा JVM मोड में चलने पर प्रत्येक सर्वर पर एकल, केंद्रीय डेमॉन
- कुछ सरल कार्यान्वयन (कोड पीढ़ी की आवश्यकता है)
- जटिलता (कोड पीढ़ी, अनुमानित कोड का उत्पादन करने के लिए GUI और ट्विकिंग के कई दौर की आवश्यकता होती है)
- संभव जेएनआई स्थिरता समस्याओं
- प्रत्येक प्रक्रिया में एक JVM की आवश्यकता होती है, और अधिक मेमोरी (एम्बेडेड मोड में) का उपयोग करते हुए
- सोलारिस x86 का समर्थन नहीं करता (डील ब्रेकर)
- यहां तक कि अगर यह सोलारिस x86 का समर्थन करता है, तो संभावित कंपाइलर संगतता समस्याएं हैं (हम सोलिसिस के साथ एसटीएलपॉर्ट और फोर्टे के विषम संयोजन का उपयोग करते हैं।
- एम्बेडेड मोड में चलने पर प्रत्येक प्रक्रिया का अपना JMX पोर्ट होता है (हम प्रत्येक मशीन पर बहुत सारी प्रक्रियाएँ चलाते हैं)
- संभवतः गैर-सी ++ प्रक्रियाओं (?) के लिए एक साझा JMX सर्वर को शामिल नहीं करता है
क्या कुछ यथोचित मानकीकृत, सरल समाधान मुझे याद आ रहा है?
किसी अन्य उचित समाधान को देखते हुए, इनमें से कौन सा समाधान आमतौर पर कस्टम C ++ कार्यक्रमों के लिए उपयोग किया जाता है?
मेरी आंत महसूस करती है कि नेट SNMP है कि लोग ऐसा कैसे करते हैं, लेकिन मैं निर्णय लेने से पहले अन्य इनपुट और अनुभव पसंद करूंगा।