ETW 输入

编辑

此功能处于测试阶段,可能随时更改。其设计和代码不如正式 GA 功能成熟,按“原样”提供,不提供任何担保。测试版功能不受正式 GA 功能的支持服务等级协议 (SLA) 约束。

Windows 事件跟踪 是 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将存储为输出文档中的顶级字段,而不是在 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 个事件中聚合。