使用 Azure Monitor 代理收集 Windows 事件
Windows 事件是数据收集规则 (DCR) 中使用的数据源之一。 有关创建 DCR 的详细信息,请参阅使用 Azure Monitor 代理收集数据。 本文提供有关 Windows 事件数据源类型的其他详细信息。
Windows 事件日志是具有 Azure Monitor 代理的 Windows 计算机最常见的数据源之一,因为它是 Windows 操作系统及其上运行的应用程序的运行状况和信息的常见来源。 除了由需要监视的应用程序创建的任意自定义日志,还可以从标准日志(如“系统”和“应用程序”)中收集事件。
先决条件
- Log Analytics 工作区,你在其中至少拥有参与者权限。 Windows 事件会发送到事件表。
- 使用 Azure Monitor 代理收集数据中所述的新 DCR 或现有 DCR。
配置 Windows 事件数据源
在 DCR 的“收集和传递”步骤中,从“数据源类型”下拉列表中选择“Windows 事件日志”。 从一组日志和严重性级别中进行选择以进行收集。
选择“自定义”以使用 XPath 查询筛选事件。 然后,可以指定 XPath 来收集任何特定值。
安全性事件
有两种方法可用于通过 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 步中所示),必须附加日志类型类别,后跟感叹号 (!)。
提示
你也可以将 PowerShell cmdlet Get-WinEvent
与 FilterXPath
参数配合使用,先在计算机本地测试 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 代理收集文本日志。
- 详细了解 Azure Monitor 代理。
- 详细了解数据收集规则。