2017-01-25 35 views
0

我是新來的ELK堆棧和grok過濾器。logstash模式用於過濾我的日誌數據

想關於logstash的conf文件,以顯示kibana數據(餅圖)

我的日誌文件中的位置C上可用的幫助:\ ELK \測試\ reviewoutput.log

wf_review1 FAILED 
wf_review2 PASS 
wf_review3 PASS 
wf_review4 PASS 
wf_review5 FAILED 

和這裏是我的conf文件

input{ 
file{ 
path=>"C:/ELK/Test/codereview.log" 
} 
} 
filter{ 
grok{ 
match=>{"message"=>"%{WORD:workflow} %{WORD:status}"} 
} 
} 
#output{ 
#elasticsearch{ 
#hosts=>["localhost"] 
#index=>"logstash-*" 
#} 
output{stdout{codec=>rubydebug} 
} 

上述代碼沒有將解析的日誌回顯到控制檯。如果我將輸入類型更改爲「stdin」並在控制檯中傳遞值,它會將日誌回顯到stdout/console。不知道我在這裏錯過了什麼。

我只是想過濾上述日誌數據來尋找關鍵字PASS或FAILED並將過濾後的數據泵入elasticsearch。後來在kibana儀表板中,我想在餅圖中顯示工作流的成功和失敗(PASS/FAILED)。

我在Windows機器上運行ELK堆棧。

你的幫助/建議將有很大的幫助。

回答

0

我通過在我的文件過濾器中添加下面的行來解決這個問題。幾個小時尋找解決的辦法:) https://discuss.elastic.co/t/reading-a-log-file-into-logstash/24514 https://github.com/elastic/logstash/issues/3115

但儘管如此,它不是讀取日誌文件的最後一行上述邏輯後

sincedb_path => "/dev/null" 

input{ 
    file{ 
     path => "C:/ELK/Test/codereview.log" 
     start_position => "beginning" 
     sincedb_path => "/dev/null" 
    } 
} 

這兩個環節實際上幫助了我。(你需要按最後一行後面的輸入來讀取完整的日誌條目),但我不確定它爲什麼不讀取最後一個日誌條目,因爲它!