2015-07-01 91 views
0

進出口試圖使用logstash解析一個動態文本和我遇到這樣的問題:解析動態使用Logstash

例如,看看這樣的文字:

號碼1

如果我只有一個號碼,我可以很容易地把它變成一個變量, 解析將是這樣的:

grok { 
    match => [ "message", "number(s) %{NUMBER:NumberValue}" ] 
} 

但我怎麼能動態解析多個數字到相同的變量(作爲整數列表)?例如:

號碼1 2 3

+0

你想捕獲一個整數列表''[1,2,3]'或者字符串'「1 2 3」'嗎? –

+0

整數列表 –

回答

0

我不認爲你可以獨自一神交過濾器做到這一點。最簡單的方法可能是將所有整數提取到空格分隔的字符串中,將其與mutate filter分開,然後使用ruby filter將每個元素從一個字符串轉換爲一個整數。

filter { 
    grok { 
    match => ["message", "number\(s\) (?<numbers>\d+(?: \d+)*)"] 
    } 
    mutate { 
    split => { 
     "numbers" => " " 
    } 
    } 
    ruby { 
    code => " 
     event['numbers'] = event['numbers'].collect { |i| i.to_i } 
    " 
    } 
}