ETW 输入编辑

此功能处于测试阶段,可能会发生变化。其设计和代码不如正式的 GA 功能成熟,并按原样提供,不作任何保证。测试版功能不受正式 GA 功能的支持 SLA 的约束。

Windows 事件跟踪 (ETW) 是 Windows 操作系统内置的一种强大的日志记录和跟踪机制。它提供了应用程序和系统行为、性能问题和运行时诊断的详细视图。跟踪事件包含事件标头和提供程序定义的数据,这些数据描述了应用程序或操作的当前状态。您可以使用这些事件来调试应用程序并执行容量和性能分析。

ETW 输入可以通过三种不同的方式与 ETW 交互:它可以创建一个新会话以从用户模式提供程序捕获事件,附加到已存在的会话以收集正在进行的事件数据,或者从预先录制的 .etl 文件中读取事件。此功能使模块能够适应不同的场景,例如实时事件监控或分析历史数据。

此输入当前支持基于清单的、MOF(经典)和 TraceLogging 提供程序,但不支持 WPP 提供程序。您可以在此处找到有关可用提供程序类型的更多信息。

它已经在 Filebeat 支持的 Windows 版本中进行了测试,从 Windows 10 和 Windows Server 2016 开始。此外,控制事件跟踪会话需要管理员权限。

示例配置

按名称从提供程序读取

filebeat.inputs:
- type: etw
  id: etw-dnsserver
  enabled: true
  provider.name: Microsoft-Windows-DNSServer
  session_name: DNSServer-Analytical
  trace_level: verbose
  match_any_keyword: 0x8000000000000000
  match_all_keyword: 0

按 GUID 从提供程序读取

filebeat.inputs:
- type: etw
  id: etw-dnsserver
  enabled: true
  provider.guid: {EB79061A-A566-4698-9119-3ED2807060E7}
  session_name: DNSServer-Analytical
  trace_level: verbose
  match_any_keyword: 0x8000000000000000
  match_all_keyword: 0

从现有会话读取

filebeat.inputs:
- type: etw
  enabled: true
  id: etw-dnsserver-session
  session: UAL_Usermode_Provider

从 .etl 文件读取

filebeat.inputs:
- type: etw
  enabled: true
  id: etw-dnsserver-session
  file: "C\Windows\System32\Winevt\Logs\Logfile.etl"

上面显示的示例是互斥的,选项 provider.nameprovider.guidsessionfile 不能同时出现。但是,其中一个必须出现。

多个提供程序示例

filebeat.inputs:
- type: etw
  id: etw-dnsserver
  enabled: true
  provider.name: Microsoft-Windows-DNSServer
  session_name: DNSServer-Analytical
  trace_level: verbose
  match_any_keyword: 0xffffffffffffffff
  match_all_keyword: 0
- type: etw
  id: etw-security
  enabled: true
  provider.name: Microsoft-Windows-Security-Auditing
  session_name: Security-Auditing
  trace_level: warning
  match_any_keyword: 0xfffffffffffffff
  match_all_keyword: 0

配置选项编辑

etw 输入支持以下配置选项以及稍后描述的通用选项

file编辑

指定要从中读取 ETW 事件的 .etl 文件的路径。此文件格式通常用于存储 ETW 事件日志。

provider.guid编辑

标识 ETW 提供程序的 GUID。要查看可用的提供程序,请使用命令 logman query providers

provider.name编辑

指定 ETW 提供程序的名称。可以使用 logman query providers 列出可用的提供程序。

session_name编辑

指定提供程序时,将创建一个新会话。这将控制它将创建的新 ETW 会话的名称。如果未指定,则会话将使用以 Elastic- 为前缀的提供程序 ID 命名。

trace_level编辑

根据严重性定义事件的过滤级别。有效选项包括 critical、error、warning、information 和 verbose。

match_any_keyword编辑

一个 8 字节的位掩码,用于根据关键字匹配从特定提供程序子组件过滤事件。任何匹配的关键字都将启用该事件的写入。默认值为 0xffffffffffffffff,因此它匹配每个可用的关键字。

运行 logman query providers "<provider.name>" 以列出特定提供程序的可用关键字。

match_all_keyword编辑

与 MatchAnyKeyword 类似,此 8 字节位掩码过滤与所有指定关键字位匹配的事件。默认值为 0,以允许每个事件通过。

运行 logman query providers "<provider.name>" 以列出特定提供程序的可用关键字。

session编辑

命名要从中读取的现有 ETW 会话。可以使用 logman query -ets 列出现有会话。

通用选项编辑

所有输入都支持以下配置选项。

enabled编辑

使用 enabled 选项启用和禁用输入。默认情况下,enabled 设置为 true。

tags编辑

Filebeat 包含在每个已发布事件的 tags 字段中的标记列表。标记可以轻松地在 Kibana 中选择特定事件或在 Logstash 中应用条件过滤。这些标记将附加到常规配置中指定的标记列表中。

示例

filebeat.inputs:
- type: etw
  . . .
  tags: ["json"]
fields编辑

您可以指定可选字段以向输出添加其他信息。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值、数组、字典或这些的任何嵌套组合。默认情况下,您在此处指定的字段将在输出文档中的 fields 子字典下分组。要将自定义字段存储为顶级字段,请将 fields_under_root 选项设置为 true。如果在常规配置中声明了重复字段,则其值将被此处声明的值覆盖。

filebeat.inputs:
- type: etw
  . . .
  fields:
    app_id: query_engine_12
fields_under_root编辑

如果此选项设置为 true,则自定义 字段 将作为顶级字段存储在输出文档中,而不是分组在 fields 子字典下。如果自定义字段名称与 Filebeat 添加的其他字段名称冲突,则自定义字段将覆盖其他字段。

processors编辑

要应用于输入数据的处理器列表。

有关在配置中指定处理器的信息,请参阅处理器

pipeline编辑

要为此输入生成的事件设置的摄取管道 ID。

管道 ID 也可以在 Elasticsearch 输出中配置,但此选项通常会导致配置文件更简单。如果在输入和输出中都配置了管道,则使用来自输入的选项。

keep_null编辑

如果此选项设置为 true,则值为 null 的字段将在输出文档中发布。默认情况下,keep_null 设置为 false

index编辑

如果存在,则此格式字符串将覆盖此输入事件的索引(对于 elasticsearch 输出),或设置事件元数据的 raw_index 字段(对于其他输出)。此字符串只能引用代理名称和版本以及事件时间戳;要访问动态字段,请使用 output.elasticsearch.index 或处理器。

示例值:"%{[agent.name]}-myindex-%{+yyyy.MM.dd}" 可能会扩展为 "filebeat-myindex-2019.11.01"

publisher_pipeline.disable_host编辑

默认情况下,所有事件都包含 host.name。可以将此选项设置为 true 以禁用将此字段添加到所有事件。默认值为 false

指标编辑

此输入在HTTP 监控端点下公开指标。这些指标在 /inputs/ 路径下公开。它们可用于观察输入的活动。

您必须为输入分配唯一的 id 才能公开指标。

指标 描述

session

ETW 会话的名称。

received_events_total

收到的事件总数。

discarded_events_total

已丢弃事件的总数。

errors_total

错误总数。

source_lag_time

时间戳事件的创建时间与读取时间之间差异的直方图。

arrival_period

事件通知回调之间经过时间的直方图。

processing_time

从事件通知回调到发布到内部队列之间经过时间的直方图。

直方图指标汇总了过去 1024 个事件。