2017-04-15 157 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,然后您将按照事件到达日志文件的顺序重新排序。

相关问题