Compartir a través de

使用 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 日志目标的配置的屏幕截图。

后续步骤