如何在摄取管道(弹性堆栈)中使用条件添加自定义字段?

How to add custom fields using conditions in ingest pipeline (Elastic stack)?

需要为 filebeat 添加一个名为 app_statuscode 的新字段。条件是如果消息字段包含 404 或 502,则 app_statuscode 的值必须设置为失败。 如果 Message 字段包含 200 OK,则该值必须设置为成功。 有人可以帮我吗?

可以在摄取节点管道中使用多个处理器来实现这一点。这取决于日志格式,如果它是 JSON 然后使用 json 处理器,因为它将 json 消息分解为 json 对象。完成后,我们可以使用点运算符访问每个值。

  1. 使用 json 处理器并提及目标字段名称作为消息信息
  2. 使用设置处理器并提及条件 ctx.messageinfo.status==200 然后成功添加一个名为 status_code 的新字段。

Grok 模式是解决此问题的另一种方法。如果消息是字符串格式,则使用 grok 模式,然后设置运算符以插入状态值。