अपने कनेक्टर का उपयोग करके सिस्टम सेंटर ऑपरेशन मैनेजर में अलर्ट के साथ काम करना

यह लेख उन लोगों के लिए है जो सिस्टम सेंटर ऑपरेशन मैनेजर उत्पाद से परिचित हैं।

शब्दावली:
SCOM - पूर्ण नाम के बजाय;
एक चेतावनी के रूप में एक चेतावनी है। रूसी में बस कोई अच्छा एनालॉग नहीं है।

परिचय

SCOM में, कई अन्य निगरानी प्रणालियों के विपरीत, एक चेतावनी एक स्वतंत्र वस्तु है। सेटिंग्स के आधार पर, चेक पहले से ही हरा हो सकता है, लेकिन अलर्ट सक्रिय रहेगा। अलर्ट का उपयोग और संसाधित किया जाता है:

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

कनेक्टर बनाने के लिए, हम Powershell का उपयोग करते हैं। क्योंकि:

SCOM SDK पुस्तकालयों का भी उपयोग किया जाएगा। आमतौर पर वे किसी SCOM सर्वर पर C: \ Program Files \ Microsoft सिस्टम सेंटर 2012 R2 \ ऑपरेशन मैनेजर \ Server \ SDK बायनेरीज़ में स्थित होते हैं।

कनेक्टर स्थापना

सबसे पहले, आपको एक बाहरी कनेक्टर बनाने की आवश्यकता है, इसके लिए हम एक स्क्रिप्ट का उपयोग भी करते हैं। मैं इसे विस्तार से नहीं बताऊंगा, क्योंकि हम मुख्य स्क्रिप्ट में समान वस्तुओं का उपयोग करेंगे। इसमें मुख्य भाग:

$connectorGuid = New-Object Guid("{6A1F8C0E-B8F1-4147-8C9B-5A2F98F10007}"); if ($action -eq "InstallConnector") { #   SCOM $mg = New-Object Microsoft.EnterpriseManagement.ManagementGroup($ManagementServer); $icfm = $mg.ConnectorFramework; $info = New-Object Microsoft.EnterpriseManagement.ConnectorFramework.ConnectorInfo; $info.Description = "..."; $info.DisplayName = $ConnectorName; $info.Name = $ConnectorName; $connector = $icfm.Setup($info, $connectorGuid); $connector.Initialize(); } 

हम एक मनमाना GUID चुनते हैं, मुख्य बात मुख्य कनेक्टर स्क्रिप्ट में उसी का उपयोग करना है। वैसे, आप लिंक से स्क्रिप्ट द्वारा कनेक्टर को हटा सकते हैं।

यह महत्वपूर्ण है। एक बार बनाने के बाद, कनेक्टर SCOM ग्राफिकल कंसोल में उपलब्ध होगा। वहां आप अलर्ट को सदस्यता को कॉन्फ़िगर कर सकते हैं - प्रक्रिया मानक कनेक्टर के लिए लगभग समान है। यदि ऐसा नहीं किया जाता है, तो आपके कनेक्टर को अलर्ट नहीं भेजा जाएगा।

संबंधक तर्क

चलिए मुख्य स्क्रिप्ट करते हैं। चलो कॉन्फ़िगरेशन मापदंडों को परिभाषित करके शुरू करते हैं:

 #      ,       $ScriptPath = $MyInvocation.MyCommand.Path -replace $MyInvocation.MyCommand.Name; #      SCOM $ManagementServer = "scom.contoso.com"; # GUID  ,     $strGuid = "{6A1F8C0E-B8F1-4147-8C9B-5A2F98F10007}"; # email    $emailTo = 'azat.khadiev@contoso.com'; $emailFrom = 'scom@contoso.com'; # smtp server  $Smtp = 'mail.contoso.com'; 

अपने संगठन के बुनियादी ढांचे के अनुसार ईमेल पते और सर्वर पते बदलें।

 #   SDK,          $DLLs = ("Microsoft.EnterpriseManagement.Core.dll","Microsoft.EnterpriseManagement.OperationsManager.dll","Microsoft.EnterpriseManagement.Runtime.dll"); foreach ($lib in $DLLs) { [Reflection.Assembly]::LoadFile($ScriptPath + $lib) | Out-Null } 

इन पुस्तकालयों का उपयोग करके, हम SCOM सिस्टम ऑब्जेक्ट बनाने में सक्षम होंगे, जिससे इसके साथ काम किया जा सके। अगला:

 try { #    $mg = New-Object Microsoft.EnterpriseManagement.ManagementGroup($ManagementServer); $icfm = $mg.ConnectorFramework; $connectorGuid = New-Object Guid($strGuid); $connector = $icfm.GetConnector($connectorGuid); #     $alerts = $connector.GetMonitoringAlerts(); } catch { Write-Host $_.Exception.Message.ToString(); exit 2; } #     $connector.AcknowledgeMonitoringAlerts($alerts); 

इस तरह से चिह्नित एक चेतावनी हमारे कनेक्टर में तब तक नहीं मिलेगी जब तक कि इसे संशोधित नहीं किया जाता है - यह या तो स्थिति में बदलाव है या विशेषता में बदलाव है। अगला:

 foreach ($alert in $alerts) { try { #     ,   ,   $alertContext = [xml]$alert.Context; $alertResolutionStateName = @{0="New";255="Closed"}; #     xml,    XPATH $monitorClass = $alertContext.SelectNodes("//Property[@Name='__CLASS']/text()").Value; $subject = "This is an alert message from SCOM"; $emailBody = "`n" + $alertResolutionStateName[[int]$alert.ResolutionState] + "`n" + $alert.MonitoringObjectFullName + "`n" + $alert.TimeRaised + "`n" + $monitorClass; #    Send-MailMessage -SmtpServer $Smtp -Subject $subject -From $emailFrom -To $emailTo -Body $emailBody #     #$alert.CustomField1 = "Notification sent."; #$alert.Update(); } catch { Write-Host $_.Exception.Message.ToString(); } } 

इस प्रकार, हमने SCOM में प्रत्येक अलर्ट को एक संदेश भेजा। प्रभावशाली नहीं है, है ना? हालांकि, कोशिश ब्लॉक में अंतिम 3 लाइनों पर ध्यान दें। दरअसल, इस तरह, आप किसी भी जानकारी को अलर्ट विशेषताओं में लिख सकते हैं या इसे बंद भी कर सकते हैं (यानी बंद स्थिति सेट करें)। यह पहले से अधिक दिलचस्प है। सच है, एक बिंदु है: यदि आप इस तरह से अलर्ट बदलते हैं, तो अगली बार जब आप स्क्रिप्ट चलाते हैं, तो यह फिर से कनेक्टर में गिर जाएगा (जैसा कि यह बदल गया है) और आप अंतहीन प्रसंस्करण प्राप्त कर सकते हैं। इसलिए, संशोधन से पहले, इसी स्थिति के लिए एक अलर्ट की जांच की जानी चाहिए। हमारे उदाहरण में, आप यह सत्यापित कर सकते हैं कि CustomField1 विशेषता खाली है, अन्यथा, संशोधन न करें।

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

आवेदन क्षेत्रों

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

यह सब, आपके ध्यान के लिए धन्यवाद।

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


All Articles