Dot-Net

監控消息隊列

  • February 20, 2012

我正在尋找一種從 SCOM 監控 RabbitMQ 隊列的簡單方法。特別是,我希望在特定隊列(我們用於“死信”的隊列)不為空時收到通知。

RabbitMQ 有一個 RESTful Web API(RabbitMQ 管理 HTTP API),它將返回所需的數據;它只支持 JSON。我已經在 .NET 庫中封裝了對它的呼叫。我編寫了一個 PowerShell 腳本來連接它和 SCOM,但我們的網路管理員無法讓它工作。他更喜歡 VBScript 解決方案。

我可以向 COM 公開 .NET 庫並從 VBScript 呼叫它。這似乎是荒謬的複雜。有沒有更簡單的方法?

您的網路管理員不只是從 VBScript 呼叫您的 powershell 腳本有什麼原因嗎?我知道這對荒謬的複雜性沒有幫助,但它可能是最簡單的解決方案。告訴他編寫一個包含這個簡單 vbs 的自定義監視器:

Set objShell = CreateObject("WScript.Shell")
strPoSHCmd = "powershell.exe -noprofile -command C:\path\to\script.ps1"
objShell.Run strPoSHCmd

編輯C:\path\to\script.ps1以適合您的需要。您還可以通過創建 MOM.ScriptAPI propertyBag 讓 vbscript 從 PowerShell(假設您的 PS 腳本返回一個值)返回值到 SCOM,如下所示:

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()

Set objShell = CreateObject("WScript.Shell")
strPoSHCmd = "powershell.exe -noprofile -command C:\path\to\script.ps1"
PSReturn = objShell.Run strPoSHCmd

Call oBag.AddValue("Output",PSReturn)
Call oAPI.Return(oBag)

引用自:https://serverfault.com/questions/355129