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

edit

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

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