我目前正在登录这样的文本消息:
"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})"
}
}
}