2013-12-17 103 views
12

尋找一點幫助入門...我已經安裝Logstash(以及ElasticSearch),但我正在努力與我的第一個過濾器。Logstash過濾器入門

作爲一項測試,我已配置爲從包含6行的修剪日誌文件讀取,每行以時間戳開頭,例如[11/5/13 4:09:21:327 PST]通過一堆其他數據。

現在我有我的conf文件設置爲讀取此文件,我試圖做一個非常基本的grok過濾器來匹配行,也許搶到時間戳,然後其餘的數據(從我可以從哪裏開始分裂它)。

以下是我有:

input { 
    file { 
    type => "chris" 
    path => "/home/chris/Documents/test.log" 
    } 
} 
filter { 
    grok { 
    type => "chris" 
    pattern => "%{GREEDYDATA:logline}" 
    } 
} 
output { 
    stdout {debug => true debug_format => "json"} 
} 

我是那種希望(希望),當我跑Logstash它會匹配每一行,並輸出它,然後我可以開始打破線和篩選我調整模式,但因爲我不能得到這個第一個基本的工作,我有點難住。

有沒有人有類似的conf文件,他們會沒事的分享?我能找到的大多數例子都比較先進,而且我似乎試圖走出困境。

謝謝,

Chris。

+0

您正在運行哪個版本的Logstash? [Grok](http://logstash.net/docs/1.3.1/filters/grok)自1.2左右開始沒有「模式」參數。 – rutter

回答

12

開始刪除過濾器的內容。

爲logstash神交過濾器插件的最新版本(1.3.2)的文檔是在這裏 http://logstash.net/docs/1.3.2/filters/grok

確保你正在尋找正確版本的文檔爲logstash的版本你下載。

一個例子神交過濾器應爲:

filter { 
    grok { 
    match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ] 
    } 
} 

但這不太可能,以配合您的數據。

「消息」是您的整個日誌結束的默認字段,因此可能也是您的不錯選擇。

接下來的部分通過讀取logline和匹配的部分以及預定義的Grok模式(如IP,WORD等)創建5個新字段,客戶端,方法,請求,字節和持續時間。這需要更改。

filter { 
    grok { 
    match => [ "message", "%{GREEDYDATA:logline}" ] 
    } 
} 

這將實際上只是複製的消息字段到一個單獨的logline場,但地方開始啓動了。當您向過濾器添加更多Grok模式時,logline字段將只包含任何不被grokked的內容。

您可以測試出在這裏你神交模式 http://grokdebug.herokuapp.com/

你可能會希望使用神交過濾神交了時間戳到它自己的域,然後使用日期過濾器實際使用,作爲日誌時間戳。

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:syslog_timestamp} %{GREEDYDATA:syslog5424_msg}" ] 
    } 
    date { 
    match => [ "syslog_timestamp", "ISO8601" ] 
    } 
} 

TIMESTAMP_ISO8601匹配時間戳在一個非常詳細的格式(http://grokdebug.herokuapp.com/patterns#),這可能不是爲你工作。

ISO8601與預先指定的日期過濾器格式相同,您可能需要在此處手動指定日期格式。 參閱文檔: http://logstash.net/docs/1.3.2/filters/date