2016-09-01 54 views
0
input 
{ 
    file 
    { 
    path => ["D:/logstash-2.3.4/temp/logs/localhost_access_log.2016-08-24.log"] 
    start_position => "beginning" 
    } 
} 

filter 
{ 
    date 
    { 
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] 
    } 
} 

output 
{ 
    stdout { codec => rubydebug } 
} 

現在運行logstash後,我無法在logstash命令窗口上看到任何輸出。這就是給定文件內的日誌不會獲取。使用logstash從給定路徑讀取日誌文件

一些我localhost_access_log.2016-08-24日誌文件的抽樣日誌都低於:

127.0.0.1 - - [24/Aug/2016:10:07:54 +0530] "GET/HTTP/1.1" 200 11452  
0:0:0:0:0:0:0:1 - - [24/Aug/2016:10:08:09 +0530] "GET /Migration/firstpage.jsp HTTP/1.1" 404 1040  
127.0.0.1 - - [24/Aug/2016:10:08:39 +0530] "GET/HTTP/1.1" 200 11452  
0:0:0:0:0:0:0:1 - - [24/Aug/2016:10:08:41 +0530] "GET /Migration/firstpage.jsp HTTP/1.1" 500 3750  
0:0:0:0:0:0:0:1 - - [24/Aug/2016:10:09:38 +0530] "GET /Mortgage/faces/NewFile.jsp HTTP/1.1" 404 1046 

是否存在與輸入代碼或日期過濾器代碼的任何問題嗎? 任何人都可以幫助我在哪裏犯錯?

+1

您的日期過濾器是無用的,因爲外地'timestamp'不存在。您將首先使用COMMONAPACHELOG模式使用grok過濾器,從時間戳字段中的日誌行中提取日期。但我不知道你爲什麼沒有任何輸出。 – baudsp

+0

謝謝。我會嘗試並讓你知道。 – keerthi

回答

0

您是否嘗試在您的conf文件的output部分保留stdout {}爲空,以檢查logstash控制檯的輸出?

正如@baudsp提到的,在處理日誌文件時最好使用grok過濾器。事情是這樣的:

filter { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG}"} 
    } 
} 

來源:Parsing Logs with Logstash