2015-05-08 55 views
-1

我在日誌文件中的下列信息...如何從LogStash活動中刪除日期

2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.jobs.AutomatedJob: Found 0 suggested order events 

這是我在Logstash/Kibana看到(日期和消息選擇)...

May 8th 2015, 12:16:19.691 2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.pcmsgroup.v21.star2.application.maintenance.jobs.AutomatedSuggestedOrderingScheduledJob: Found 0 suggested order events 

Kibana左邊的日期是插入日期。 (2015年5月8日,12:16:19.691)

下一個日期是從日誌聲明(2015-05-07 12:00:00,648064070)

接下來是記錄的信息級別。

然後終於消息。

我想將它們拆分成組件,以便記錄的級別是它自己的字段in kibana,並刪除消息部分中的日期或使其成爲實際日期(而不是插入日期)。

有人可以幫我一把。我認爲我需要一個grok過濾器?

這是我迄今爲止...

input 
{ 
    file { 
     debug => true 
     path => "C:/office-log*" 
     sincedb_path => "c:/tools/logstash-1.4.2/.sincedb" 
     sincedb_write_interval => 1 
     start_position => "beginning" 
     tags => ["product_qa"] 
     type => "log4j" 
    } 
} 
filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601}: %{LOGLEVEL}" ] 
    } 
} 

output { 
    elasticsearch {   
    protocol => "http" 
    host => "0.0.0.x" 
    } 
} 

這神交過濾器似乎並沒有改變Kibana所示的事件。 我還只看到主機/路徑/類型等。

我一直在使用http://grokdebug.herokuapp.com/摸出我神交語法

回答

4

您需要的名字,你從神交回來,然後使用日期過濾器設置@timestamp,使所記錄的時間將被使用的結果而不是插入時間。

基於你有什麼到目前爲止,你可以這樣做:

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:logdate}: %{LOGLEVEL:loglevel} (?<logmessage>.*)" ] 
    } 
    date { 
    match => [ "logdate", "ISO8601" ] 
    } 
    #logdate is now parsed into timestamp, remove original log message too 
    mutate { 
    remove_field => ['message', 'logdate' ] 
    } 
} 
+0

的remove_field參數可用於所有的插件,所以你可能只是把它摺疊成日期過濾器。 –

+0

你先生,是天才!謝謝! –