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

编辑

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

编辑

您可以在配置中定义处理器,以便在将事件发送到已配置的输出之前对其进行处理。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"]