共用方式為


監視 Windows VM 的排程事件

適用於:VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集

每天都會將更新套用到 Azure 的不同部分,以確保執行服務的安全並保持在最新狀態。 除了已規劃的更新之外,也可能包含未在規劃中的事件。 例如,如果偵測到任何硬體效能降低或錯誤,則 Azure 服務可能需要執行未在規劃中的維護。 使用即時移轉、記憶體保留更新,並嚴格限制更新的影響,讓這些事件對客戶幾乎透明。 最多可能會造成幾秒的虛擬機凍結。 不過,對於某些應用程式,即使幾秒的虛擬機凍結也可能造成影響。 事先瞭解即將進行的 Azure 維護,對於確保這些應用程式的最佳體驗非常重要。 排程的事件服務 會提供程式設計介面來通知您即將進行的維護,並可讓您正常處理維護。

本文說明如何使用排程事件來通知可能會影響 VM 的維護事件,並建置一些可協助監視和分析的基本自動化。

將 Scheduled Events 路由傳送至 Log Analytics

Scheduled Events 是 Azure Instance Metadata Service 的一部分,可在所有 Azure 虛擬機器上使用。 客戶可撰寫自動化來查詢虛擬機器的端點,以尋找已排程的維護通知並執行風險降低措施,例如儲存狀態並讓虛擬機器結束輪替。 建議建置自動化來記錄 Scheduled Events,如此即可取得 Azure 維護事件的稽核記錄。

在本文中,我們會逐步引導您瞭解如何將維護排程的事件擷取至Log Analytics。 然後,我們會觸發一些基本通知動作,例如傳送電子郵件給您的小組,並取得影響虛擬機之所有事件的歷程記錄檢視。 針對事件匯總和自動化,我們使用 Log Analytics,但您可以使用任何監視解決方案來收集這些記錄和觸發自動化。

顯示事件生命週期的圖表

必要條件

在此範例中,您必須在可用性設定組中建立 Windows 虛擬機。 針對會影響可用性設定組、雲端服務、虛擬機器擴展集或獨立 VM 中所有虛擬機器的變更,Scheduled Events 可提供相關通知。 服務會執行,以輪詢作為收集器之一 VM 上的排程事件,以取得可用性設定組中所有其他 VM 的事件。

請勿在教學課程結束時刪除群組資源群組。

您也需要 建立Log Analytics工作區 ,以便用來匯總可用性設定組中 VM 的資訊。

設定環境

在可用性設定組中,現在應該有兩部初始 VM。 現在,我們需要在相同的可用性設定組中建立第 3 部名為 myCollectorVM 的 VM。

New-AzVm `
   -ResourceGroupName "myResourceGroupAvailability" `
   -Name "myCollectorVM" `
   -Location "East US" `
   -VirtualNetworkName "myVnet" `
   -SubnetName "mySubnet" `
   -SecurityGroupName "myNetworkSecurityGroup" `
   -OpenPorts 3389 `
   -PublicIpAddressName "myPublicIpAddress3" `
   -AvailabilitySetName "myAvailabilitySet" `
   -Credential $cred
  1. GitHub 下載專案的 .zip 安裝檔案。

  2. 連線到 myCollectorVM,並將 .zip 檔案複製到虛擬機器,然後解壓縮所有檔案。 在 VM 上,開啟 PowerShell 提示字元。 將提示字元移至包含 SchService.ps1 的資料夾,例如:PS C:\Users\azureuser\AzureScheduledEventsService-master\AzureScheduledEventsService-master\Powershell>,然後設定服務。

    .\SchService.ps1 -Setup
    
  3. 啟動服務。

    .\SchService.ps1 -Start
    
  4. 驗證服務狀態,並確定服務正在執行。

    .\SchService.ps1 -status  
    

    認證命令應該傳回 Running

服務現在開始隔每 10 秒會輪詢所有 Scheduled Events,並核准這些事件以加快維護速度。 凍結、重新開機、重新部署以及先佔都是由 Scheduled Events 所擷取的事件。 在核准事件之前,您可擴充指令碼以觸發風險降低措施。

當 Scheduled Event 服務擷取了上述任何事件後,其會記錄在應用程式事件記錄檔的事件狀態、事件類型、資源 (虛擬機器名稱) 和 NotBefore (最小通知週期) 中。 您可在應用程式事件記錄檔中找到識別碼為 1234 的事件。

一旦設定並啟動服務,其會將事件記錄在 Windows 應用程式記錄檔中。 若要確認此功能是否正常,請重新啟動可用性設定組中的其中一部虛擬機器,您應該會在事件檢視器的 [Windows 記錄檔] > [應用程式] 記錄檔中看到正在記錄的事件,並顯示 VM 已重新啟動。

事件查看器的螢幕快照。

當 Scheduled Event 服務擷取了事件後,其會記錄在應用程式事件記錄檔,包含事件狀態、事件類型、資源 (VM 名稱) 和 NotBefore (最小通知週期) 中。 您可在應用程式事件記錄檔中找到識別碼為 1234 的事件。

注意

在本範例中,虛擬機器位於可用性設定組中,其可供指定單一虛擬機器作為收集器,以接聽並將 Scheduled Events 路由傳送至 Log Analytics 工作區。 如果有獨立的虛擬機器,即可在每部虛擬機器上執行服務,然後將其個別連線到 Log Analytics 工作區。

我們在設定方面選擇 Windows,但您也可以在 Linux 上設計類似的解決方案。

您可隨時使用參數 –stop–remove 來停止/移除 Scheduled Event 服務。

聯機到 Log Analytics 工作區

我們現在想要將 Log Analytics 工作區連線到收集器 VM。 Log Analytics 工作區會作為存放庫,我們會設定事件記錄檔集合,以從收集器 VM 中擷取應用程式記錄檔。

若要將排程的事件路由傳送至服務儲存為應用程式記錄的事件記錄檔,您必須將虛擬機連線到 Log Analytics 工作區。

設定數據收集

  1. 開啟 Azure 入口網站。

  2. 在頂端的搜尋列中,輸入 Log Analytics 工作區 ,然後從搜尋結果中選取它。

  3. 選擇您建立的工作區以開啟其頁面。

  4. 在 [設定] 底下,選取 [代理程式],然後按兩下 [虛擬機器]。

  5. 在 [ Windows 伺服器] 索引標籤下,按兩下,按兩下 [資料收集規則]。

  6. 輸入 [ 收集並傳遞 ] 索引標籤,然後按兩下 [ 新增數據源][收集並傳遞] 索引標籤的螢幕快照,其中含有空白數據源區段。

  7. 在 [ 數據源] 索引 標籤下,從下拉式清單中選取 [Windows 事件記錄 檔]。

  8. 選取您想要收集的事件記錄檔。 確定 已選取 [錯誤]、 [警告] 和 [資訊 ]。 [新增數據源] 索引標籤的螢幕快照,其中顯示數個選取的複選框。

  9. [下一步]:目的地 >

  10. 在 [ 目的地] 索引標籤下,按兩下 [ 新增目的地]。

  11. 使用收集器 VM 及其訂用帳戶的詳細數據填寫 [目的地類型]、[訂用帳戶] 和 [目的地詳細數據] 區段。 [目的地] 索引標籤的螢幕快照,其中顯示類型、訂用帳戶和目的地詳細數據。

  12. 選取正確的 VM 之後, Microsoft監視代理程式 會自動安裝在虛擬機上。 將 VM 連線至工作區並安裝延伸模組需要幾分鐘的時間。

注意

有一些延遲,可能需要最多 10 分鐘的時間才能使用記錄。

使用 Azure 監視器建立警示規則

將事件推送至 Log Analytics 之後,即可執行下列查詢來尋找 Scheduled Events。

  1. 在頁面頂端,選取 [記錄檔] 並將下列內容貼入文字方塊中:

    Event
    | where EventLog == "Application" and Source contains "AzureScheduledEvents" and RenderedDescription contains "Scheduled" and RenderedDescription contains "EventStatus" 
    | project TimeGenerated, RenderedDescription
    | extend ReqJson= parse_json(RenderedDescription)
    | extend EventId = ReqJson["EventId"]
    ,EventStatus = ReqJson["EventStatus"]
    ,EventType = ReqJson["EventType"]
    ,NotBefore = ReqJson["NotBefore"]
    ,ResourceType = ReqJson["ResourceType"]
    ,Resources = ReqJson["Resources"]
    | project-away RenderedDescription,ReqJson
    
  2. 選取 [儲存],然後在 [名稱] 中鍵入 ogQuery、將 [查詢] 保留為 [類型],鍵入 VMLogs 做為 [類別],然後選取 [儲存]

    儲存查詢

  3. 選取 [新增警示規則]。

  4. 在 [建立規則] 頁面上,將 [資源] 保持為 collectorworkspace

  5. 在 [條件] 底下,選取 [每當客戶記錄搜尋為 <未定義登入> 時] 輸入。 [設定訊號邏輯] 頁面隨即開啟。

  6. 在 [閾值] 中,輸入 0,然後選取 [完成]

  7. 在 [動作] 底下,選取 [建立動作群組]。 [新增動作群組] 頁面隨即開啟。

  8. 在 [動作群組名稱] 中,鍵入 myActionGroup

  9. 在 [簡短名稱] 中,輸入 myActionGroup

  10. 在 [資源群組]中,選取 [myResourceGroupAvailability]

  11. 在 [動作] 下的 [動作名稱] 中鍵入 Email,然後選取 [電子郵件/SMS/推播/語音。 [電子郵件/SMS/推播/語音] 頁面隨即開啟。

  12. 選取 [電子郵件],鍵入電子郵件地址,然後選取 [確定]

  13. 在 [新增動作群組] 頁面中,選取 [確定]

  14. 在 [建立規則] 頁面的 [警示詳細資料] 下,鍵入 myAlert 作為 [警示規則名稱],然後在 [描述] 中鍵入「電子郵件警示規則」

  15. 當您完成時,選取 [建立警示規則]

  16. 重新啟動可用性設定組中的其中一部 VM。 您應該會在幾分鐘內收到警示已觸發的電子郵件。

若要管理警示規則,請前往資源群組,在左側功能表中選取 [警示],然後在頁面頂端選取 [管理警示規則]

下一步

若要深入了解,請參閱 GitHub 上的 Scheduled Events 服務 (英文) 頁面。