使用处理器过滤和增强数据

编辑

使用处理器过滤和增强数据

编辑

您可以在配置中定义处理器,以便在事件发送到配置的输出之前对其进行处理。libbeat 库提供了以下处理器:

  • 减少导出的字段数量
  • 使用其他元数据增强事件
  • 执行额外的处理和解码

每个处理器接收一个事件,对该事件应用定义的操作,然后返回该事件。如果您定义了一个处理器列表,它们将按照在 Packetbeat 配置文件中定义的顺序执行。

event -> processor 1 -> event1 -> processor 2 -> event2 ...

建议在处理器配置中,将所有删除和重命名现有字段的操作作为最后一步。这是因为删除或重命名字段可能会移除链中下一个处理器所需的数据,例如删除 source.ip 字段将移除 community_id 处理器正常工作所需的字段之一。如果需要删除、重命名或覆盖现有的事件字段,请确保通过位于输入配置中定义的处理器列表末尾的相应处理器(drop_fieldsrenameadd_fields)来完成。

例如,以下配置包括 Packetbeat DNS 字段的一个子集,以便仅报告请求及其响应代码

processors:
  - include_fields:
      fields:
        - client.bytes
        - server.bytes
        - client.ip
        - server.ip
        - dns.question.name
        - dns.question.etld_plus_one
        - dns.response_code

过滤后的事件将类似于这样

{
  "@timestamp": "2019-01-19T03:41:11.798Z",
  "client": {
    "bytes": 28,
    "ip": "10.100.6.82"
  },
  "server": {
    "bytes": 271,
    "ip": "10.100.4.1"
  },
  "dns": {
    "question": {
      "name": "www.elastic.co",
      "etld_plus_one": "elastic.co"
    },
    "response_code": "NOERROR"
  },
  "type": "dns"
}

如果您想删除所有成功的事务,可以使用以下配置

processors:
  - drop_event:
      when:
        equals:
          http.response.status_code: 200

如果您不想导出成功事务的原始数据

processors:
  - drop_fields:
      when:
        equals:
          http.response.status_code: 200
      fields: ["request", "response"]