MS OMS 和 SCOM 之間的 Control management pack 更新

概要: 學習如何從 OMS 到 SCOM 停用 automatic management pack 的更新並將更新限制在特定的時間間隔內。

當您將 SCOM 中的 management group 連結到 OMS 中的 Log Analytics,多個 management pack 將會自動安裝到您的  management group 中。除了有一套核心的 management packs 來支援連結和基本的數據收集,其他將會針對您添加到 OMS 工作區的方案進行安裝。您可以透過在 Administration workspace 中的 Management Packs 下搜尋 Advisor 來查看整個列表。

 

在初始安裝後,SCOM 會定期檢查 OMS 來獲得這些 management packs 的更新,並在可用時自動下載和導入。這在很多環境中都運作的很好,因為您在 OMS 和 SCOM 的結合會自動保持更新而您無須花費任何心力。儘管在低頻寬或是嚴格變更控制過程中,這可能會是一個問題。在這些情況下,您可能會想要關掉此自動更新,如此才能讓頻寬不會在高峰時斷消耗,並讓變更不會在您批准的時間間隔之外產生。

此更新過程被以下兩種規則所控制:

  • Microsoft.SystemCenter.Advisor.MPUpdate

更新基本的 OMS management packs。預設每12小時執行。

  • Microsoft.SystemCenter.Advisor.Core.GetIntelligencePacksRule

更新您工作區中方案的 management packs。預設每5分鐘執行。

您可以輕易地利用 建立覆寫 來停用自動更新並停用上兩個規則。您可以撤銷覆寫來重新啟用並允許執行更新。您應該定期將其啟用來保持您的管理群組是最新的。

覆寫更新規則

您可能已經對在 SCOM 中建立覆寫很熟悉,但若沒有,接下來將會重頭描述一次。

上述的兩個規則都以名為 Operations Manager Management Group 的類別為目標。您可以依照以下步驟在 Operations Console 中查看:

  1. 選擇 Authoring 工作區 > Rules
  2. 選擇右上方的 Change Scope
  3. 選擇 View all targets
  4. 輸入 management group 來過濾列表並選擇 Operations Manager Management Group

執行上述步驟後,您可以得到一個所有目標為 management group 類別的規則的列表,其中會看到以上兩個規則。

 

依照以下步驟建立覆蓋以停用規則:

  1. 對該規則按下右鍵並選擇 Overrides > Override the Rule >  For all objects of class: Operations Manager Management Group
  2. 選擇 Enabled 屬性並將其覆蓋值改為 False
  3. 選擇一個現存的 destination management pack 來儲存新的覆蓋,或是建立一個新的。

您可以依照相同的步驟將值改為 True 來重新啟用規則。

因為 MPUpdate 規則每 12 小時執行一次,若您想短時間內啟用此規則,您可能會想減少這個時間,否則它可能無法在您啟用的時間內被執行。例如:您可能會將其頻率改為每10分鐘執行,並將其啟用約一小時。

 

自動化覆蓋

要啟用和停用規則來控制 MPUpdate 過程並不困難,但仍有幾個小步驟需要執行。若能將整個步驟透過指令自動化將會非常有幫助。漸漸的會想將此邏輯放入 management pack 中,如此便能完全透過 SCOM 來控制。同時,我們便能利用  Windows PowerShell 指令來控制覆蓋。
建立覆蓋的指令。以上連結中的指令能夠讓您指定要覆蓋的規則、屬性和期望值、和用來儲存覆蓋的 management pack。若該 management pack 不存在,它還會將其建立。

以下範例利用指令來啟用 MPUpdate 規則,並將覆蓋儲存在名為 OMS.Overrides 的 management pack 中。

CreateOverride.ps1 –ManagementServer scom01.contoso.com –ManagementPackID OMS.Overrides –WorkflowID Microsoft.SystemCenter.Advisor.MPUpdate –ContextID Microsoft.SystemCenter.ManagementGroup –PropertyName Enabled –PropertyValue True –Enforced False

將指令排程

若能將指令排程使其在特定時間執行,便能讓更新在特定的時間間隔內發生。例如:您可能會想讓更新預設為停用,在每晚 1 AM時啟用,2 Am時停用。

如先前所提,希望在某個時間將此功能納入 management pack 中。有一個簡單的方法是將指令排成執行,如 management sever 中的排程任務。您可以在任何有安裝 SCOM console 的機器上執行,但 management server 是有道理的因為這是指令必須連接的。

您可以利用可從 Administrative Tools 中取得的 Task Scheduler 在 Windows 中建立排程任務。

因為需要執行每個規則的指令,且需要給它非常多的屬性,所以此範例建立了兩個額外的指令來封裝長的指令。

 

這簡化了我需要在我的排程任務動作中傳遞給 PowerShell.exe 的 argument。argument 如下:

–file “c:\scripts\DisableOMSUpdates.ps1”

 

建立一個排程任務來在適當的時間啟用和停用。