是否可以提取字符串字段的特定部分并将其转换为其他类型?

Is it possible to extract a certain part of a string field and cast it to some other type?

我在 logstash 中有一个 file 输入,它从 /var/log/syslog 读取。日志消息进入 message 字段。我没想过事先提取消息的某些部分,但现在我想找到所有带有 message 字段且其中包含单词 WORD 的条目,并从该字符串中提取一个数字,我想将该数字提供给 Kibana,以基于它构建折线图。

更具体地说:消息如下所示:

{
  //... timestamp, id etc
  "message" : "User used WORD approximately 10 times"
  //
}

我想要:

{
  // timestamp, ...
  "message" : 10
}

没有一些非常钝的力量可能吗?我能想到的最糟糕的事情是通过新的 logstash 输入重新提供所有消息,这将构建消息,但这看起来是一个非常糟糕的方法。

如果您还没有走得太远,将新模式添加到 logstash 并重新提供日志是最简单的解决方案,让您准备好在新日志到达时对其进行解析。

如果您确实需要重新 grok 现有记录,请查看 logstash 中的 elasticsearch{} 输入,它可以查询您的旧记录并重新处理它们。