Logstash过滤器从日志消息中复制一些文本



我目前正在登录这样的文本消息:

"Some text: some variable text"
"Some other text: some other variable text"

我需要将消息的变量部分复制到一个新字段,以便有两个像这样的新字段

"field1" : " some variable text"
"field2" : "some other variable text"

到目前为止,只能使用filebeat处理器将整个文本消息复制到一个新字段,对于logstash也是如此。我做了一些研究,我看到我可以使用条件,并与变异过滤器:

filter {
if "Some text" in [message] {
mutate { add_field =>{ "field1" => }}}

但是我不知道如何复制"一些变量文本"进入新的领域。有人知道怎么做吗?

一种解决方案是像这样直接使用grok过滤器:

filter{
grok {
match => { 
"message" => "^Some text: %{GREEDYDATA:field1}" 
}
}
grok {
match => { 
"message" => "^Some other text: %{GREEDYDATA:field2}" 
}
}
}

的优点是它比if条件更容易读,更容易维护。

你可以改变grok,让它在一行中处理所有的大小写:

filter{
grok {
match => { 
"message" => "^(Some text: %{GREEDYDATA:field1}|Some other text: %{GREEDYDATA:field2})" 
}
}
}

相关内容

  • 没有找到相关文章

最新更新