コネクタを使用してSystem Center Operations Managerでアラートを操作する

この記事は、System Center Operations Manager製品に精通しているユーザーを対象としています。



用語:

SCOM-フルネームの代わり。

アラートはアラートと同じです。 ロシア語には単に良い類似物はありません。



はじめに


SCOMでは、他の多くの監視システムとは異なり、アラートは独立したオブジェクトです。 設定によっては、チェックが既に緑色になっている場合がありますが、アラートはアクティブなままです。 アラートが使用および処理されます。



コマンドチャネルの存在は、アラートを処理するための十分な機会を既に与えていますが、このアプローチは、第一に、あまり美しくなく、第二に、パフォーマンスにおいて最高ではありません。 したがって、出現したアラートに文字を送信する独自​​の外部コネクタを作成しましょう。 はい、これには標準がありますが、ストーリーの過程で、コネクタの機能が事実上無制限であることが明らかになります。 せっかちな人のために:スクリプトは完全にここにあります



コネクタを作成するには、Powershellを使用します。 なぜなら:



SCOM SDKライブラリも使用されます。 これらは通常、 C:\ Program Files \ Microsoft System Center 2012 R2 \ Operations Manager \ Server \ SDK Binaries on SCOM serverにあります。



コネクタの取り付け


まず、外部コネクタを作成する必要があります 。このため、 スクリプトも使用します 。 メインスクリプトで同じオブジェクトを使用するため、詳細には分解しません。 その主な部分:



$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の各アラートにメッセージを送信しました。 印象的ではありませんか? ただし、tryブロックの最後の3行に注意してください。 実際、この方法で、アラート属性にいくつかの情報を書き込むか、それを閉じることさえできます(つまり、Closedステータスを設定します)。 これはすでにもっと面白いです。 確かに、1つのポイントがあります。この方法でアラートを変更すると、次回スクリプトを実行したときに、(変更されたように)再びコネクタに落ち、無限の処理を取得できます。 したがって、変更する前に、対応する条件についてアラートをチェックする必要があります。 この例では、CustomField1属性が空であることを確認できます。それ以外の場合は、変更を加えないでください。



したがって、一般的に、コネクタは準備ができています。 1回のスクリプト実行で、その時点で利用可能なすべてのアラートが処理されます。 連続操作の場合は、無限ループで実行するか、タスクスケジューラで定期的な実行を構成できます。 これは、C#で記述されたサービスを維持するよりもはるかに簡単です。



適用分野


オプション1。 組織にはサービスデスクシステムがあります。 APIがあり、あなたはそれに精通しています。 このコネクタを使用して、SCOMとシステム間の統合を構成できます。 必要に応じて、両面にすることができます。チケットを閉じるとき、アラートを閉じます。

オプション2。 組織では、インフラストラクチャは責任の領域に分割されます。 たとえば、機器およびシステムのリストと責任者のリストは、1つのドキュメントに統合されます。 このコネクタとこのドキュメントを使用して、特定の情報でアラート属性を更新できます。 したがって、オペレーターがそれを正しく処理しやすくなります。



それだけです、ご清聴ありがとうございました。



All Articles