使用 Azure 監視器代理程式從虛擬機器收集事件和效能計數器

本文說明如何使用 Azure 監視器代理程式,以收集虛擬機器的事件和效能計數器。

必要條件

為完成此程序,您必須:

建立資料收集規則

您可以定義資料收集規則,將資料從多部機器傳送至多個 Log Analytics 工作區,包括不同區域或租用戶中的工作區。 在與 Log Analytics 工作區相同的區域中建立資料收集端點。 您只能將 Windows 事件和 Syslog 資料傳送至 Azure 監視器記錄。 您可以將效能計數器傳送至 Azure 監視器計量和 Azure 監視器記錄。

注意

目前,Microsoft.HybridCompute(已啟用 Azure Arc 的伺服器)資源無法在計量瀏覽器中檢視 (Azure 入口網站 UX),但可以透過計量 REST API (計量命名空間 - 清單、計量定義 - 列表和計量 - 清單 - 清單) 來取得。

注意

若要跨租用戶傳送資料,您必須先啟用 Azure Lighthouse

  1. 在 [監視器] 功能表上,選取 [資料收集規則]

  2. 選取 [建立],以建立新的資料收集規則與關聯。

    顯示 [數據收集規則] 畫面上 [建立] 按鈕的螢幕快照。

  3. 輸入 [規則名稱],並指定 [訂用帳戶]、[資源群組]、[區域] 和 [平台類型]

    • [區域] 會指定將建立 DCR 的位置。 虛擬機器與其關聯可位於租用戶的任何訂用帳戶或資源群組中。
    • [平台類型] 會指定此規則可套用的目標資源類型。 [自訂] 選項同時允許 Windows 和 Linux 類型。

    顯示 [數據收集規則] 畫面 [基本] 索引標籤的螢幕快照。

  4. 選取 [資源] 索引標籤:

    1. 選取 [+ 新增資源],然後將資源關聯至資料收集規則。 資源可以是虛擬機器、虛擬機器擴展集,以及適用於伺服器的 Azure Arc。 Azure 入口網站會在尚未安裝 Azure 監視器代理程式的資源上安裝該代理程式。

      重要

      除了現有的使用者指派身分識別以外 (若有),入口網站也會在目標資源上啟用系統指派的受控識別。 針對現有應用程式,除非您在要求中指定使用者指派的身分識別,否則機器預設會改用系統指派的身分識別。

      若必須使用私人連結的網路隔離,各資源應分別選取相同區域的現有端點,或建立新端點

    2. 選取 [啟用資料收集端點]

    3. 針對與資料收集規則相關聯的每個資源選取資料收集端點。

    顯示 [數據收集規則] 畫面之 [資源] 索引標籤的螢幕快照。

  5. 在 [收集並傳遞] 索引標籤上,選取 [新增資料來源],以新增資料來源並設定目的地。

  6. 選取資料來源類型。

  7. 選取您要收集的資料。 針對效能計數器,您可以從一組預先定義的物件與其取樣速率中進行選取。 針對事件,您可以從一組記錄與嚴重性層級中進行選取。

    顯示 Azure 入口網站 表單以選取資料收集規則中基本性能計數器的螢幕快照。

  8. 選取 [自訂],以收集並非目前支援資料來源的記錄和效能計數器,或使用 XPath 查詢來篩選事件。 您便可指定 XPath 以收集任何特定值。 如需範例,請參閱範例 DCR

    此螢幕快照顯示 Azure 入口網站 表單,以選取數據收集規則中的自定義性能計數器。

  9. 在 [目的地] 索引標籤上,為資料來源新增一或多個目的地。 您可以選取相同或不同類型的多個目的地。 例如,您可以選取多個 Log Analytics 工作區,亦稱為多路連接。

    您只能將 Windows 事件與 Syslog 資料來源傳送至 Azure 監視器記錄。 您可以將效能計數器傳送至 Azure 監視器計量和 Azure 監視器記錄。 目前,混合式計算 (Arc for Server) 資源不會支援 Azure 監視器計量 (預覽) 目的地。

    顯示 Azure 入口網站 表單以在資料收集規則中新增數據源的螢幕快照。

  10. 選取 [新增資料來源],然後選取 [檢閱 + 建立],以檢閱資料收集規則的詳細資料和與該組虛擬機器的關聯。

  11. 選取 [建立] 以建立資料收集規則。

參數檔案
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "value": "my-azure-vm"
    },
    "associationName": {
      "value": "my-windows-vm-my-dcr"
    },
    "dataCollectionRuleId": {
      "value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
    }
   }
}

注意

建立資料收集規則後,最多可能需要 5 分鐘的時間,資料才會傳送至目的地。

使用 XPath 查詢篩選事件

Log Analytics 工作區中收集的任何資料皆須付費。 因此,您應該僅收集所需的事件資料。 Azure 入口網站中的基本設定提供您篩選事件的有限功能。

提示

如需降低 Azure 監視器成本的策略,請參閱成本最佳化和 Azure 監視器

若要指定其他篩選條件,則須使用自訂設定,並指定 XPath 以篩選出不需要的事件。 XPath 項目是以格式 LogName!XPathQuery 撰寫。 例如,您可能只想從應用程式事件記錄檔傳回事件識別碼為 1035 的事件。 這些事件的 XPathQuery 會是 *[System[EventID=1035]]。 因為您要擷取應用程式事件記錄檔的事件,所以 XPath 為 Application!*[System[EventID=1035]]

從 Windows 事件檢視器擷取 XPath 查詢

在 Windows 中,您可使用事件檢視器來擷取 XPath 查詢,如螢幕擷取畫面所示。

將 XPath 查詢貼至 [新增資料來源] 畫面上的欄位時,如步驟 5 所示,您必須附加後面加上驚嘆號 (!) 的記錄類型類別。

此螢幕快照顯示在 Windows 事件檢視器 中建立 XPath 查詢的步驟。

提示

您可以使用 PowerShell Cmdlet Get-WinEvent 搭配 FilterXPath 參數,先在本機電腦上測試 XPath 查詢的有效性。 如需詳細資訊,請參閱 Windows 代理程式型連線指示中提供的提示。 Get-WinEvent PowerShell Cmdlet 最多可支援 23 個運算式。 Azure 監視器資料收集規則支援多達 20 個項目。 下列指令碼即為範例:

$XPath = '*[System[EventID=1035]]'
Get-WinEvent -LogName 'Application' -FilterXPath $XPath
  • 在上述 cmdlet 中,-LogName 參數值為 XPath 查詢的初始部分 (到驚嘆號 (!) 為止)。 XPath 查詢的其餘部分會進入 $XPath 參數。
  • 若指令碼傳回事件,則查詢有效。
  • 如果您收到「找不到符合指定選擇準則的事件」訊息,查詢可能有效,但本機電腦上沒有相符的事件。
  • 如果您收到訊息內容為「指定的查詢無效」,則查詢語法無效。

使用自訂 XPath 來篩選事件的範例:

描述 XPath
僅收集事件識別碼 = 4648 的系統事件 System!*[System[EventID=4648]]
收集安全性記錄事件,事件識別碼 = 4648,且處理序名稱為 consent.exe Security!*[System[(EventID=4648)]] and *[EventData[Data[@Name='ProcessName']='C:\Windows\System32\consent.exe']]
從系統事件記錄檔收集所有嚴重、錯誤、警告和資訊事件,但事件識別碼 = 6 (驅動程式載入) 的事件除外 System!*[System[(Level=1 or Level=2 or Level=3) and (EventID != 6)]]
收集所有成功和失敗的安全性事件,但事件識別碼 4624 (成功登入) 的事件除外 Security!*[System[(band(Keywords,13510798882111488)) and (EventID != 4624)]]

注意

如需 Windows 事件記錄檔支援的 XPath 限制清單,請參閱 XPath 1.0 限制
例如,您可以在查詢中使用「position」、「Band」和「timediff」函式,但目前不支援「start-with」和「contains」等其他函式。

常見問題集

本節提供常見問題的答案。

如何藉由使用 Azure 監視器代理程式來收集 Windows 安全性事件?

傳送至 Log Analytics 工作區時,有兩種方式可使用新的代理程式來收集安全性事件:

  • 您可以使用 Azure 監視器代理程式,以原生方式收集安全性事件,與其他 Windows 事件相同。 這些會流入您 Log Analytics 工作區中的 'Event' 資料表。
  • 如果您已在工作區上啟用 Microsoft Sentinel,則安全性事件會透過 Azure 監視器代理程式流入 SecurityEvent 資料表 (與使用 Log Analytics 代理程式相同)。 此情境一律會需要先啟用解決方案。

如果我在同一部電腦上使用 Azure 監視器代理程式和 Log Analytics 代理程式,是否會重複事件?

如果您要使用這兩個代理程式收集相同的事件,將會發生重複。 這項重複可能是舊版代理程式會從工作區設定資料收集備援資料,其中由資料收集規則所收集。 或者,您可能會使用舊版代理程式收集安全性事件,並在 Microsoft Sentinel 中使用 Azure 監視器代理程式連接器啟用Windows 安全性事件。

將重複事件限制為僅在從一個代理程式轉換到另一個的時候。 完全測試資料收集規則並驗證其資料收集後,停用工作區的收集,並中斷任何 Microsoft Monitoring Agent 資料連接器的連線。

Azure 監視器代理程式是否提供 Xpath 查詢和指定效能計數器以外的更細微的事件篩選選項?

針對 Linux 上的 Syslog 活動,您可以為每個設備選擇設備和記錄層級。

如果我建立包含相同事件識別碼的資料收集規則,並將它與相同的 VM 產生關聯,事件是否會重複?

是。 若要避免重複,確定您在資料收集規則中所做的事件選取項目不包含重複的事件。

下一步