filebeat 可以剖析带空格的日志行吗?

Can filebeat dissect a log line with spaces?

所以我有一个格式如下的日志行:

2020-04-15 12:16:44,936 WARN c.e.d.c.p.p.BasePooledObjectFactory [main] Caution - XML schema validation has been disabled! Validation is only available when using XML.

我正在使用 filebeat 将其直接发送到 elasticsearch,它确实这样做了,但是 log.level 没有设置,整行变成了消息。

阅读我打算使用的解剖:

processors:
  - add_host_metadata: ~
  - dissect:
     tokenizer: "%{} %{} %{log.level} %{} [%{}] %{message}"
     field: "message"
     target_prefix: ""

我希望分成:

{ 
  log.level: WARN
  message: Caution - XML schema validation has been disabled! Validation is only available when using XML.
}

相反,我得到了与没有解剖时相同的输出:

{
  message: 2020-04-15 12:16:44,936 WARN c.e.d.c.p.p.BasePooledObjectFactory [main] Caution - XML schema validation has been disabled! Validation is only available when using XML.
}

我刚刚开始掌握 filebeat,我已经尝试查看使它看起来足够简单的文档。但是我的解剖目前没有做任何事情。正在添加主机元数据,因此我相信正在调用处理器。

如何从日志行中获取日志级别? (最好不改变日志本身的格式)

您需要在剖析标记化中选择 message 以外的字段名称,因为这是包含原始日志消息的字段名称:

processors:
  - add_host_metadata: ~
  - dissect:
     tokenizer: "%{} %{} %{log.level} %{} [%{}] %{msg}"
     field: "message"
     target_prefix: ""