ज़ेनोस के लिए सबसे सरल मॉडलर या उज्ज्वल भविष्य के लिए एक गंदा रास्ता

घटना हो रही है निगरानी
(लेट से। मॉनिटर - एक जो याद दिलाता है, चेतावनी देता है) - नकारात्मक परिवर्तनों की पहचान करने और उनके उन्मूलन या शमन के लिए सिफारिशें करने के लिए पर्यावरण की स्थिति में परिवर्तनों का आकलन और अनुमान लगाने वाली विनियमित आवधिक टिप्पणियों की एक व्यापक प्रणाली।

परिचय और सामान्य शब्द


हब पर आश्चर्यजनक रूप से कुछ ज़ेनॉस लेख हैं, हालांकि यह निगरानी प्रणाली अपने अधिकांश प्रतियोगियों की कार्यक्षमता से बहुत आगे है। सिस्टम का विवरण हमेशा आधिकारिक ज़ेनॉस वेबसाइट पर पाया जा सकता है।

मुझे क्या लगता है कि ज़ेनॉस प्रतियोगिता से आगे है? क्योंकि आपके द्वारा आवश्यक निगरानी प्रणाली को कॉन्फ़िगर करना और प्राप्त करना आसान है, अलर्ट और अलर्ट की प्रतिक्रिया। ज़ेनॉस समझदारी से लचीलापन, कार्यक्षमता और जटिलता को जोड़ती है। उत्तरार्द्ध आपकी आवश्यकताओं के अनुपात में बढ़ता है: आपके हार्ड ड्राइव पर अंतरिक्ष का ट्रैक रखना प्रकाश की तुलना में आसान है, अपने स्वयं के मैट्रिक्स का उपयोग करके अपने हार्डवेयर और सॉफ़्टवेयर सिस्टम की निगरानी करना अधिक कठिन है।

सिस्टम के प्रारंभिक सेटअप के लिए नेटवर्क पर कई गाइड हैं। इन गाइडों के माध्यम से जाने के बाद, आप मुख्य मापदंडों के अनुसार आसानी से अपने सर्वर या संचार उपकरण की निगरानी शुरू कर सकते हैं।
मैं हार्डवेयर पर स्निप सर्वर के साथ जेनोस का उपयोग करना पसंद करता हूं। एसएनएमपी सर्वर - कॉन्फ़िगर करने में आसान (नाम में सरल न केवल प्रोटोकॉल को संदर्भित करता है;), विश्वसनीय, आपको प्रदान की गई जानकारी और सामान्य - सामान्य सॉफ़्टवेयर में मूल एक्सेस अधिकारों को चिह्नित करने की अनुमति देता है। इसके अलावा, एक या दूसरे रूप में, एसएनएमपी, अधिकांश हार्डवेयर द्वारा समर्थित होता है।
अपने एजेंटों के साथ मॉनिटरिंग सिस्टम मुझे थोड़ा परेशान करता है: आपको कभी नहीं पता कि इस एजेंट में क्या किया जा रहा है और कितना अच्छा है।
यदि आपके लिए आवश्यक मानकों के लिए कोई मानक स्नंप एजेंट नहीं हैं, तो आप नेट-स्नैम्प में निर्मित एजेंटएक्स तंत्र के आधार पर अपना स्वयं का कार्यान्वयन कर सकते हैं। Agentx एजेंटों को www.net-snmp.org/tutorial/tutorial-5/toolkit (एक सहकर्मी सुझाव: गाइड में अधिक विस्तार से पाया जा सकता है: यह बेहतर है कि code.google.com/p/linux-administrator-tools/source/browse/#svn% देखें 2 एफएसएनएमपीडी-एजेंट% 2Ftrunk : प्रलेखन वहाँ लंगड़ा है, लेकिन पूरा कोड काम कर रहा है।) थोड़े प्रयास से, आप हर चीज की निगरानी कर सकते हैं कि सिस्टम से प्रोग्राम को प्रोग्रामेटिक रूप से प्राप्त किया जा सकता है और यह जानकारी एक मानक snmp सर्वर के माध्यम से snmp द्वारा भेज सकता है।

तो, इस प्रविष्टि पर पूर्ण माना जा सकता है। सारांश: मुझे ज़ेनोस और स्नैम्प पसंद हैं। चलो ज़ेनॉस सघनता की ओर बढ़ते हैं।

अपने लिए ज़ेनोस कॉन्फ़िगर करना


सरलतम जेनोस कॉन्फ़िगरेशन पथ किसी अन्य निगरानी प्रणाली के विन्यास पथ का अनुसरण करता है:


इन्फ्रास्ट्रक्चर और कक्षाएं यदि आपके पास 2 स्विच और 5 सर्वर हैं, तो यह आसानी से, एक बार और सभी के लिए किया जाता है। यदि आपके पास दर्जनों सर्वर हैं और उनमें से कुछ "रोटेट" करते हैं (उदाहरण के लिए, आपके पास वर्चुअल मशीनें हैं जो नेटवर्क पर दिखाई देती हैं, तो अनावश्यक रूप से बंद हो जाती हैं), तो उपकरणों और निगरानी मापदंडों को जोड़ना और निकालना कठिन श्रम में बदल जाता है।

इसलिए, आधुनिक मॉनिटरिंग सिस्टम जैसे ज़ैबिक्स और ज़ेनोस में स्वचालित रूप से उपकरणों का पता लगाने की क्षमता है: खोज, पहुंच मापदंडों और वॉइलिया के लिए आईपी पते की सीमा निर्धारित करें, पाया गया उपकरण सिस्टम में जोड़ा जाता है। यह उस पर निगरानी टेम्प्लेट लटकाए रखने के लिए बनी हुई है।
टेंपरेचर को लटकाना भी एक दुखद बात है। मार्क समूहों या कक्षाओं में होस्ट करता है और उन पर टेम्पलेट लटकाता है। फिर यह डिवाइस के वर्ग को निर्धारित करने के लिए पर्याप्त होगा और इसके अनुरूप निगरानी नियम लागू किए जाएंगे।

क्या होगा यदि हमारे पास एक दर्जन नियम हैं जो मेजबानों पर "बेतरतीब ढंग से" लटकते हैं? इसलिए, आप स्पष्ट रूप से डिवाइस कक्षाएं नहीं बना सकते हैं। आप आगे जा सकते हैं और सिस्टम के लिए मॉनिटरिंग टेम्प्लेट निर्दिष्ट करने के नियमों का वर्णन कर सकते हैं। ज़ेनॉस में, मॉनिटरिंग कंपोज़िशन को निर्धारित करने की प्रक्रिया को " डिवाइस सिमुलेशन " कहा जाता है: ज़ेनोस स्नैंप सर्वर को पोल करता है, उपलब्ध मापदंडों को निर्धारित करता है और अगर मॉनिटरिंग नियम हैं तो उन्हें मॉनिटर करता है।

निगरानी नियम स्वयं ज़ेनपैक्स द्वारा प्रदान किए गए हैं। जेनपैक मानक कार्यक्षमता के मूल एक्सटेंशन को वितरित करने का एक तरीका है। इसमें ईवेंट क्लासेस, मॉनिटरिंग टेम्प्लेट्स, मॉडलर प्लगइन्स, इंटरफ़ेस बटन के विवरण और बहुत कुछ हो सकता है।

निगरानी कार्यों का विस्तार करने का सही तरीका मेजबान पर कुछ घटकों की उपस्थिति का निर्धारण करना है और उन्हें कार्यक्रम और घटनाओं (घटनाओं) से बांधना है। सही ज़ेनपैक उतना जटिल नहीं है, लेकिन बड़ा है। हर कोई लंबे समय तक कुछ का आविष्कार करने के लिए सहमत नहीं होता है। मैं चीजों को प्राप्त करने के लिए एक "त्वरित और गंदे" तरीके का प्रदर्शन करूंगा।

मूल अवधारणा

मॉडलर द्वारा अपने घटकों और प्लगइन्स को लिखना मुश्किल है। अपने हाथों से हर जगह निगरानी पैटर्न लटकाएं - लंबे समय तक। आइए इन दो दृष्टिकोणों को मिलाएं: उनकी विपक्ष लाभ देगा: मॉडलर सरल होगा, मैं नीचे अपना कोड दूंगा, और एक बार बनाए गए टेम्पलेट स्वचालित रूप से उपकरणों पर लटका दिए जाएंगे: यदि मॉडलर को स्नाइप सर्वर के उत्तरों में आवश्यक ओड्स मिलते हैं, तो यह एक निश्चित एक को लटका देगा। मॉनिटरिंग टेम्प्लेट।

यह तेज़ी से क्यों होता है : हमें 2 टेम्पलेट और 1 मॉडलर बनाने और 1 वर्ग के डिवाइस (डिवाइस- सर्वर) के लिए मॉडलर प्लगइन को कॉन्फ़िगर करने की आवश्यकता है। फास्ट, सरल, आसान, पोर्टेबल (ZenPacks का उपयोग करके)।
यह "गंदा" क्यों है : हम LSI RAID नियंत्रक की निगरानी करेंगे। पहला और एकमात्र। यदि ऐसे कई नियंत्रक हैं, तो उन्हें एक निगरानी प्रणाली द्वारा कवर नहीं किया जाएगा, उन्हें अलग-अलग टेम्पलेट और मॉडलर्स बनाने होंगे। अपने स्वयं के घटकों को बनाने का दृष्टिकोण अधिक लचीला है: यह "lsi डिस्क नियंत्रक" घटक का वर्णन करेगा, ऐसे सभी नियंत्रकों का पता लगाएगा और निगरानी करेगा।

कार्यान्वयन

एसएनएमपी हिस्सा

इसलिए, मेरे पास LSI RAID नियंत्रकों के साथ कई लिनक्स सर्वर थे। उनमें से कुछ ने मेगारिड ड्राइवर पर काम किया, कुछ ने मप्रस पर। कुछ पीड़ा के बाद, मैंने सरणियों की स्थिति के बारे में जानकारी प्राप्त करने के लिए स्निप एजेंटों को पाया: sas_snmp-3.17-1123.i386.rpm और sas_ir_snmp-3.17-1126.i386 .rpm (हाँ, 32 बिट, कोई अन्य नहीं थे)। उन्हें स्थापित करने के बाद, snmp सर्वर पेड़ों से ओड देने में सक्षम है
.1.3.6.1.4.1.3582.4 और .1.3.6.1.4.1.3582.5 क्रमशः।
इन पेड़ों में से आप पा सकते हैं:
१.३.६.१.४.१.३५.4२.४.१.४.१.२.१.१.० - मेगापाइटर एडाप्टर के लिए अपमानित तार्किक संस्करणों की संख्या
.1.3.6.1.4.1.3582.5.1.4.1.1.3.1.20.20.0 - mpt एडाप्टर के लिए अपमानित तार्किक संस्करणों की संख्या।

ये अच्छे "अभिन्न" मेट्रिक्स हैं जो सिस्टम प्रशासक को समस्याओं के मामले में सर्वर पर ध्यान देने की अनुमति देंगे: एक डिस्क बह गई है - तार्किक वॉल्यूम जिसमें यह शामिल है वह नीचा हो जाएगा और खरोंच से मीट्रिक बढ़ा देगा।

मैं संकुल की स्थापना का वर्णन नहीं करूंगा, यह तुच्छ है यदि आप संकुल का नाम जानते हैं और कैसे sas_snmp sas_ir_snmp से भिन्न है।

ज़ेनॉस भाग

ज़ेनॉस में हमें दो टेम्प्लेट बनाने होंगे - मेगाराइड और एमटीपी ड्राइवरों के लिए, और उनके लिए दो ट्रेशोल्ड कॉन्फ़िगर करें।

उन्नत -> मॉनिटरिंग टेम्प्लेट पर जाएं और नीचे "+" बटन दबाएं। दिखाई देने वाली विंडो में, नाम दर्ज करें - "lsiArray", और पथ का चयन करें - "डिवाइस में सर्वर"।

उसके बाद, एक विंडो तीन भागों में विभाजित दिखाई देगी: डेटा स्रोत, ट्रेशोल्ड और ग्राफ़ परिभाषाएँ। हमें पहले दो की आवश्यकता होगी:

इन सभी कार्यों के बाद, हमारे पास एक टेम्प्लेट होता है जो मेगाएड कंट्रोलर की निगरानी करता है और इसके साथ समस्याओं के मामले में एक घटना उत्पन्न करता है।
मैं पाठक के लिए एक अभ्यास के रूप में दूसरे टेम्पलेट के कॉन्फ़िगरेशन को छोड़ दूंगा: इस बारे में कुछ भी जटिल नहीं है।
हम इस ईवेंट के लिए संदेश भेजना कॉन्फ़िगर कर सकते हैं। उन्नत -> सेटिंग्स -> उपयोगकर्ता -> $ आपका उपयोगकर्ता -> नियमों में परिवर्तन करें और वहां एक नया नियम जोड़ें। हम सही करते हैं और भावना में कुछ हासिल करते हैं:
चेतावनी का विन्यास

घटना के "महत्व" और उस घटना के लिए कक्षा श्रृंखला की शुरुआत के संकेतों पर ध्यान दें, जिसके लिए एक अलर्ट उत्पन्न होता है।

इस स्तर पर, आप डिवाइस के एक विशिष्ट वर्ग पर परिणामी टेम्पलेट को लटका सकते हैं और शांत कर सकते हैं। लेकिन यह हमारा तरीका नहीं है। इसके अलावा, सबसे दिलचस्प: इसका सरलतम मॉडलर और जेनपैक।

एक मॉडलर प्लगइन बनाना।

यह सबसे दिलचस्प है। अपना खुद का ज़ेनपैक बनाएं! ज़ेनपैक हमारे लिए आवश्यक निर्देशिका संरचना बनाएगा जिसमें हम मॉडलर के लिए प्लगइन का स्रोत कोड डालेंगे। इसके अलावा, हम इस ज़ेनपैक के हिस्से के रूप में सिस्टम से अपने प्लगइन को अनलोड कर सकते हैं।
तो, हम उन्नत -> सेटिंग्स -> ज़ेनपैक पर जाते हैं और वहां हम गियर पर क्लिक करते हैं। दिखाई देने वाले मेनू में, "जेनपैक बनाएँ" चुनें। नाम के साथ एक विंडो दिखाई देती है। मैंने ZenPacks.HW.Store.LSIArray को चुना। हालांकि, जैसा कि बाद में पता चला, यह बिल्कुल सही नाम नहीं है: आपको कम से कम शब्द समुदाय में एचडब्ल्यू के सामने दर्ज करना था।

ज़ेंपाका बनाने के बाद, स्क्रू पर एक मानक फ़ाइल ट्री दिखाई देगा। हमें निम्नलिखित सामग्रियों के साथ एक फ़ाइल /opt/zenoss/ZenPacks/ZenPacks.HW.Store.LSIArray-*egg/ZenPacks/HW/Store/LSIArray/modreer/plugins/LSIArray.py (सही तारांकन सही बनाने के लिए) बनाने की आवश्यकता होगी।
__doc__="""LSIArray LSIArray modeller maps sas and sasir (mptsas) specific templates $Id: LSIArray.py,v 2.00 2012/04/15 16:01 Exp $""" __version__ = '$Revision: 2.15 $' from Products.DataCollector.plugins.CollectorPlugin import SnmpPlugin, GetTableMap, GetMap from Products.DataCollector.plugins.DataMaps import ObjectMap class LSIArray(SnmpPlugin): deviceProperties = SnmpPlugin.deviceProperties + ('zDeviceTemplates',) mibDesc = { '.1.3.6.1.4.1.3582.4.1.4.1.2.1.19.0': 'lsiArray', '.1.3.6.1.4.1.3582.5.1.4.1.1.3.1.20.0': 'lsiirArray', } snmpGetMap = GetMap( mibDesc ) def process(self, device, results, log): """collect snmp information from this device""" log.debug(str(self.deviceProperties)) log.info('processing %s for device %s', self.name(), device.id) getdata, tabledata = results log.debug(str(device.zDeviceTemplates)) newTemplates = [] rmTemplates = [] log.debug('getdata %s mibDesc %s', str(getdata),str(LSIArray.mibDesc)) if len(getdata.keys()) == getdata.values().count(None): log.info('no data') return for each in LSIArray.mibDesc.values(): if getdata.has_key(each) and getdata[each] != None: newTemplates.append(each) log.debug('newTemplates append: %s' % each) else: rmTemplates.append(each) log.debug('rmTemplates append: %s' % each) log.info('Current zDeviceTemplaces: %s' % str(device.zDeviceTemplates)) for each in device.zDeviceTemplates: if each not in newTemplates and each not in rmTemplates: newTemplates.insert(0,each) log.debug('adding to newTemplaces: %s' % str(each)) device.zDeviceTemplates=sorted(newTemplates) log.info('New zDeviceTemplates: %s' % str(device.zDeviceTemplates)) om = self.objectMap({'bindTemplates': newTemplates}) return om 


स्रोत कोड में, सब कुछ काफी सरल है।
शुरुआत में एक टिप्पणी यह ​​वर्णन करती है कि वर्ग क्या करता है।
फिर डिवाइस मॉडल का वर्णन करने के लिए कुछ ज़ेनॉस कक्षाओं का आयात करें।
MibDesc ऑब्जेक्ट सबसे दिलचस्प है। इसमें oids की सूची और उनके अनुरूप निगरानी टेम्प्लेट शामिल हैं। यदि डिवाइस के मतदान के दौरान सही ओड पाया गया था, तो डिवाइस पर एक नया मॉनिटरिंग टेम्पलेट लटका दिया जाएगा।
जब आप अपने लिए उदाहरण संपादित करते हैं, तो पाठ में सभी विराम चिह्नों को याद न करने का प्रयास करें।
अगला एक तरीका है जो सभी जांच और तुलना करता है, साथ ही पिछले सभी निगरानी टेम्प्लेट को बचाता है और इसे सूची में जोड़ता है। इस पद्धति का परिणाम एक ऑब्जेक्ट मॉडल (ओम) है।

प्लगइन की जाँच करें

आपके द्वारा मॉडलर के पाठ को कॉपी करने, ठीक करने और सहेजने के बाद, आपको zenoss (उन्नत -> सेटिंग्स -> डेमोंस में zopectl प्रक्रिया) को पुनः आरंभ करना होगा और जांचना होगा कि मॉडलर प्लग इन की सूची में एक नया दिखाई देता है, जिसे LSIArray कहा जाता है (किसी भी डिवाइस वर्ग या मॉडलर प्लग इन के मॉडल क्लास में) किसी भी उपकरण में)। प्लगइन को सक्रिय लोगों को स्थानांतरित करने और डिवाइस को मॉडलिंग करने के लिए शुरू करने की आवश्यकता है।
स्क्रीन पर दिखाई देने वाली खिड़की में, आपको यह जांचने की आवश्यकता है कि मॉडलर डिवाइस के लिए उपयोग की गई सूची में है। इसके अलावा, हार्ड डिस्क पर LSIArray.py फ़ाइल बनाई जाएगी, जो स्क्रिप्ट के सफल संकलन का संकेत देती है।
यदि स्क्रिप्ट संकलित नहीं की गई है, तो अजगर कोड की शुद्धता की जांच करें।
यदि स्क्रिप्ट सक्रिय या उपलब्ध मॉडलर की सूची में नहीं दिखाई देती है, तो ज़ेनॉस को पुनरारंभ करें।

सिमुलेशन प्रक्रिया के बाद, डिवाइस में एक नया मॉनिटरिंग टेम्प्लेट जोड़ा जाना चाहिए। अब आप परीक्षण सर्वर से हार्ड ड्राइव को जा सकते हैं और हटा सकते हैं, जो सरणी की स्थिति को "सामान्य" से "अपमानित" कर देगा। (जब तक आपके पास RAID0 है, निश्चित रूप से)। अपमानित तार्किक संस्करणों की संख्या में वृद्धि होगी, सीमा पार हो जाएगी और सिस्टम हमारे लिए एक घटना उत्पन्न करेगा। यदि आपने अलर्ट कॉन्फ़िगर किया है, तो यह आ जाएगा।

निष्कर्ष

ऊपर वर्णित विधि आपको कई महत्वपूर्ण परिणाम प्राप्त करने की अनुमति देती है:


मुझे अच्छी तरह से पता है कि आपके ज़ेनपैक और मॉडलर लिखने के लिए अधिक पूर्ण और "सही" मार्गदर्शक हैं। हालाँकि, मुझे आशा है कि यह पाठ कई सिस्टम प्रशासकों के लिए एक प्रेरणा के रूप में काम करेगा, ताकि वे अपने सिस्टम में जेनोस का अध्ययन और उपयोग शुरू कर सकें।

Source: https://habr.com/ru/post/In142974/


All Articles