2014-06-10 90 views
3

當我使用stdin作爲輸入流時,我得到正確的輸出。但是,無論何時將該文件用作輸入,輸出都會在以下消息之後凍結。文件輸入不能用於logstash

"Using milestone 2 input plugin 'file'. This plugin should be stable but if you see strange behavior, please let us know." 

這是我的配置文件。

input { 
    file { 
    path => ["c:/users/a/b/c/logstash-1.4.1/bin/logs/logfile.log"] 
    start_position => beginning 
    } 
} 

filter { 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{MY_DATE:my_date}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{DATE:date}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{TIME:time}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{LOG_LEVEL:log_level}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{SERVER:server}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{CLASS_NAME:class_name}"] 
     } 

} 

output { 
    stdout { codec => rubydebug } 
    elasticsearch { host => localhost } 
} 

我的文件路徑格式錯誤嗎?

+0

你能解決這個問題嗎? –

回答

5

您是否將新日誌寫入日誌文件?

start_position選項僅修改「第一次接觸」的情況,其中a file is new and not seen before。這是因爲Logstash會爲每個文件保存一個sincedb以跟蹤受監控日誌文件的當前位置。因此,下次您重新啓動Logstash時,Logstash將開始基於sincedb記錄監視文件,並且start_position將不起作用。

因此,如果您要導入舊日誌,則必須先刪除所有.sincedb文件,然後再啓動logstash並添加start_position選項。

+0

我從主目錄中刪除了所有以前的sincedb文件,甚至將我的配置文件簡化爲只使用grok過濾器中的構建。但是在展示里程碑信息之後,它仍然處於凍結狀態。 – anshk9

+0

我切換到Linux和Im仍然有相同的問題。 – anshk9

4

兩個問題在這裏:

  1. 的sincedb PROCESSS跟蹤讀取位置在文件中 打破目前在Windows中: https://logstash.jira.com/browse/LOGSTASH-429。有一個補丁但 其他人已經證實,這仍然是截至版本1.4.1
  2. 我相信你需要引號開頭 - 根據 文件其「開始」或「結束」,默認爲「結束」爲 start_position。所以我懷疑這只是無視你的指示。

START_POSITION

Value can be any of: "beginning", "end" 
Default value is "end" 

選擇在何處Logstash最初開始讀取文件:在開始 或結束。默認行爲像直播流一樣對待文件,因此從最後開始。如果你有舊的數據要導入,設置 這「開始」

的組合很可能導致你總是在文件的末尾開始。

我現在無法在windows下測試(在工作時無法訪問),但想把它交給你。

0

我在mac上使用logstash-1.5.4。我遇到了類似的問題,並通過在conf文件中明確設置sincedb_path來解決它。

sincedb_path => "your sincedb path"

我不知道,因爲我們使用的是不同版本logstash和不同的操作系統的這種解決方案能夠解決您的問題。

您可以使用調試模式運行命令以查看發生了什麼。

./bin/logstash -f my_logstash.conf --debug