使用处理器过滤和增强数据
编辑使用处理器过滤和增强数据
编辑您的用例可能只需要 Filebeat 导出的数据子集,或者您可能需要增强导出的数据(例如,添加元数据)。Filebeat 提供了几种用于过滤和增强导出数据的选项。
您可以配置每个输入以包含或排除特定的行或文件。这允许您为每个输入指定不同的过滤条件。为此,您可以使用配置文件 filebeat.inputs
部分下的 include_lines
、exclude_lines
和 exclude_files
选项(请参阅 输入)。这种方法的缺点是,您需要为您需要的每个过滤条件实现一个配置选项。
另一种方法(此处描述的方法)是定义处理器,以配置 Filebeat 导出的所有数据的全局处理。
处理器
编辑您可以在配置中定义处理器,以便在事件发送到配置的输出之前对其进行处理。 libbeat 库提供了以下处理器:
- 减少导出的字段数量
- 使用额外的元数据增强事件
- 执行额外的处理和解码
每个处理器接收一个事件,对该事件应用定义的操作,然后返回该事件。如果您定义了一个处理器列表,它们将按照在 Filebeat 配置文件中定义的顺序执行。
event -> processor 1 -> event1 -> processor 2 -> event2 ...
建议在处理器配置的最后一步完成所有删除和重命名字段的操作。这是因为删除或重命名字段可能会删除链中下一个处理器所需的数据,例如,删除 source.ip
字段将删除 community_id
处理器运行所需的字段之一。如果必须删除、重命名或覆盖现有的事件字段,请确保由相应的处理器(drop_fields
、rename
或 add_fields
)在输入配置中定义的处理器列表末尾执行此操作。
删除事件示例
编辑以下配置将删除所有 DEBUG 消息。
processors: - drop_event: when: regexp: message: "^DBG:"
要删除来自特定日志文件的所有日志消息
processors: - drop_event: when: contains: source: "test"
解码 JSON 示例
编辑在以下示例中,Filebeat 导出的字段包含一个名为 inner
的字段,其值是编码为字符串的 JSON 对象
{ "outer": "value", "inner": "{\"data\": \"value\"}" }
以下配置将解码内部 JSON 对象
filebeat.inputs: - type: log paths: - input.json json.keys_under_root: true processors: - decode_json_fields: fields: ["inner"] output.console.pretty: true
生成的输出如下所示
{ "@timestamp": "2016-12-06T17:38:11.541Z", "beat": { "hostname": "host.example.com", "name": "host.example.com", "version": "8.17.0" }, "inner": { "data": "value" }, "input": { "type": "log", }, "offset": 55, "outer": "value", "source": "input.json", "type": "log" }