2017-04-15 159 views

回答

0

這不是一個容易解決的問題。有兩個日期是Logstash可以利用:

  1. 該事件被攝入
  2. 事件本身的編碼時間的確切時間。

這裏最好的辦法是將攝取時間存儲到一個字段;對於連續讀取的日誌文件,同一秒內的事件將在稍微不同的時間被攝取,因此按攝取時間排序會重新排列日誌。您的過濾器流可以是這個樣子:

filter { 
    mutate { 
    add_field => { "ingest_timestamp" => "%{@timestamp}" } 
    } 
    grok { some things } 
    date { 
    match = [ "SYSLOGTIMESTAMP", ISO8601 ] 
    } 
} 

在這種情況下,@timestamp將被設置爲在事件中編碼的時間,ingest_timestamp將被設置爲攝取的時間戳。先訂購@timestamp,然後訂購ingest_timestamp,然後您將按照事件到達日誌文件的順序重新排序。

相關問題