使用 Azure Monitor 代理收集 Windows 事件

Windows 事件是数据收集规则 (DCR) 中使用的数据源之一。 有关创建 DCR 的详细信息,请参阅使用 Azure Monitor 代理收集数据。 本文提供有关 Windows 事件数据源类型的其他详细信息。

Windows 事件日志是具有 Azure Monitor 代理的 Windows 计算机最常见的数据源之一,因为它是 Windows 操作系统及其上运行的应用程序的运行状况和信息的常见来源。 除了由需要监视的应用程序创建的任意自定义日志,还可以从标准日志(如“系统”和“应用程序”)中收集事件。

先决条件

配置 Windows 事件数据源

在 DCR 的“收集和传递”步骤中,从“数据源类型”下拉列表中选择“Windows 事件日志”。 从一组日志和严重性级别中进行选择以进行收集。

显示数据收集规则中 Windows 事件数据源的配置的屏幕截图。

选择“自定义”以使用 XPath 查询筛选事件。 然后,可以指定 XPath 来收集任何特定值。

显示数据收集规则中 Windows 事件数据源的自定义配置的屏幕截图。

安全性事件

有两种方法可用于通过 Azure Monitor 代理收集安全事件:

  • 选择 DCR 中的安全事件日志,就像选择系统日志和应用程序日志一样。 这些事件将与其他事件一起发送到 Log Analytics 工作区中的事件表。
  • 在同样使用 Azure Monitor 代理收集事件的工作区上启用 Microsoft Sentinel。 安全事件将发送到 SecurityEvent

使用 XPath 查询筛选事件

需要为在 Log Analytics 工作区中收集的任何数据支付费用。 因此,你应该只收集需要的事件数据。 Azure 门户中的基本配置提供的筛选事件的权力有限。 若要指定更多筛选器,请使用自定义配置,并指定用于筛选出不需要的事件的 XPath。

XPath 条目以 LogName!XPathQuery 形式进行编写。 例如,你可能只希望从应用程序事件日志中返回事件 ID 为 1035 的事件。 这些事件的 XPathQuery 将为 *[System[EventID=1035]]。 由于要从应用程序事件日志中检索事件,因此 XPath 为 Application!*[System[EventID=1035]]

提示

有关降低 Azure Monitor 成本的策略,请参阅成本优化和 Azure Monitor

注意

AMA 使用 EvtSubscribe 系统 API 订阅 Windows 事件日志。 Windows OS 不允许订阅类型为“分析”/“调试”通道的 Windows 事件日志。 因此,无法从“分析”和“调试”通道收集数据或将数据导出到 Log Analytics 工作区。

从 Windows 事件查看器提取 XPath 查询

在 Windows 中,可使用事件查看器提取 XPath 查询,如以下屏幕截图中所示。

将 XPath 查询粘贴到“添加数据源”屏幕上的字段中时(如第 5 步中所示),必须附加日志类型类别,后跟感叹号 (!)。

显示在 Windows 事件查看器中创建 XPath 查询的步骤的屏幕截图。

提示

你也可以将 PowerShell cmdlet Get-WinEventFilterXPath 参数配合使用,先在计算机本地测试 XPath 查询的有效性。 有关详细信息,请参阅 Windows 基于代理的连接说明中提供的提示。 Get-WinEvent PowerShell cmdlet 最多支持 23 个表达式。 Azure Monitor 数据收集规则最多支持 20 个。 以下脚本显示了一个示例:

$XPath = '*[System[EventID=1035]]'
Get-WinEvent -LogName 'Application' -FilterXPath $XPath
  • 在前面的 cmdlet 中,-LogName 参数的值是 XPath 查询的初始部分,直到感叹号 (!)。 XPath 查询的其余部分将进入 $XPath 参数。
  • 如果脚本返回事件,则查询有效。
  • 如果收到消息“找不到任何与指定的选择条件匹配的事件。”,则查询可能有效,但在本地计算机上没有匹配的事件。
  • 如果收到消息“指定的查询无效”,则查询语法无效。

使用自定义 XPath 筛选事件的示例:

说明 XPath
仅收集事件 ID = 4648 的系统事件 System!*[System[EventID=4648]]
收集事件 ID = 4648 且进程名称为 consent.exe 的安全日志事件 Security!*[System[(EventID=4648)]] and *[EventData[Data[@Name='ProcessName']='C:\Windows\System32\consent.exe']]
从系统事件日志中收集所有严重、错误、警告和信息事件,事件 ID 6(驱动程序已加载)除外 System!*[System[(Level=1 or Level=2 or Level=3) and (EventID != 6)]]
收集所有成功和失败安全事件,事件 ID 4624(成功登录)除外 Security!*[System[(band(Keywords,13510798882111488)) and (EventID != 4624)]]

注意

要了解 Windows 事件日志支持的 XPath 中的限制列表,请参阅 XPath 1.0 限制。 例如,可以在查询中使用“position”、“Band”和“timediff”函数,但“starts-with”和“contains”等其他函数目前不受支持。

目标

Windows 事件数据可以发送到以下位置。

目标 表/命名空间
Log Analytics 工作区 事件

显示数据收集规则中 Azure Monitor 日志目标的配置的屏幕截图。

后续步骤