2016-11-02 84 views
0

我有以下格式的文件:Logstash千伏過濾

10302\t<document>.....</document> 
12303\t<document>.....</document> 
10054\t<document>.....</document> 
10034\t<document>.....</document> 

,你可以看到有由製表字符分隔的兩個值。我需要

  • 索引中的第一令牌(例如10302,12303 ...)作爲ID
  • 提取物(和然後索引)從所述第二令牌的一些信息(XML文檔)。換句話說,第二個標記將與xml過濾器一起用於提取一些信息

是否可以使用kv過濾器分離兩個值?理想情況下,我應該結束,每行,像這樣的文件:

id:10302  
msg:<document>....</document> 

我可以用一個神交過濾器,但我想,以避免任何正則表達式作爲現場檢測是很容易的,可以用完成簡單的鍵值邏輯。然而,使用普通的kv檢測我以下列結尾:

"10302": <document>.....</document> 
"12303": <document>.....</document> 
"10054": <document>.....</document> 
"10034": <document>.....</document> 

並且這不是我想要的。

+0

您可以加入您的KV過濾器的配置? – baudsp

+0

我沒有它,因爲我不知道如何說「拿鑰匙,並創建和作爲價值屬性id,然後採取的價值,並創建一個屬性消息與該值」 – Andrea

+1

好的。我不認爲有可能使用kv來完成你想要做的工作,因爲這個id沒有可能的鍵(10302,10303,10304 ...)。但grok完全可以用'%{INT:ID} \ t%{GREEDYDATA:msg}' – baudsp

回答

0

據我所知,不可能使用kv作爲你想要做的工作,因爲沒有可能的id(10302,10303,10304 ......)鍵。沒有可能的鑰匙,因爲ID之前什麼也沒有。

這種神交配置會工作,假設每個ID +文件是在同一行:

grok { 
    match => { "message" => "^%{INT:ID}\t%{GREEDYDATA:msg}"} 
}