[英]Why won't Logstash multiline merge lines based on grok'd field?
我正在嘗試使用logstash multiline來處理以下測試文件:
val=abc
123 abc
test
並使用以下配置過濾器:
filter
{
if [message] =~ "val"
{
match => ["message", "val=%{WORD:calc}"
}
multiline
{
pattern => [calc]
what => "next"
}
}
輸出顯示如下(其他字段被剝離):
"message" => "val=abc"
"calc" => "abc"
...
"message" => "123 abc"
上面讓我知道grok匹配(因此“calc”字段),但我不確定為什么多行不合並第一行和第二行
你的意思是如果calc
字段存在,第一行和第二行將合並為一個envet?
如果是,以下答案可以幫助您。 您的多線模式不正確。 請參考此配置:
input {
stdin{}
}
filter {
if [message] =~ "val"
{
grok {
match => ["message", "val=%{WORD:calc}"]
}
}
multiline
{
pattern => "(val)"
what => "next"
}
}
output {
stdout {
codec => "rubydebug"
}
}
多行中的模式是當message
字段具有val
字時,您滿足模式並且它將與第二行進行多行合並。 在您的示例中,您使用[cal]
,這意味着當message
字段具有cal
字時,但是, message
字段中沒有任何cal
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.