簡體   English   中英

為什么不根據grok'd字段Logstash多行合並行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM