2016-12-06 93 views
0

我有两个来自不同源的日志,我通过logstash将其拖入elasticsearch中,然后使用kibana进行可视化。我的问题是,每个日志的开始时间应该是相同的,但是其中一个日志会在30分钟前错误地记录条目。如何在logstash或kibana中同步日志时间

如何纠正这个时间问题,有没有可以从时间减去30分钟的logstash过滤器,或者我可以在Kibana中添加一些高级查询?

我更喜欢更新logstash中的日志条目。

+1

哪里日期从何而来?从文件解析或仅由logstash添加的@timestamp。你使用一个或两个logstash?如果两个,他们在同一台机器上? – baudsp

+0

@baudsp日期来自日志文件本身。我只是像批处理作业一样在每个日志文件上运行一个logstash,所以我没有连续运行logstash。 – binarylegit

+0

我试图找到一种方法来更改值@timestamp字段与红宝石过滤器,但没有成功,所以我试图看看问题是否来自您的设置。 – baudsp

回答

1

理想情况下,您可能需要修复日志,以便在文件中列出正确的时间。如果您的问题存在于数据中,那么修复它就比较容易,而不是在下游使用额外规则进行摔跤。

但是,如果需要,您可以操纵Logstash时间戳。

每个事件的@timestamp字段与Ruby的Time类有很多相同之处。特别是,它实现了相同的+-运营商允许您添加或减去一定的秒数:

filter { 
    ruby { 
     code => " 
       event['@timestamp'] = LogStash::Timestamp.new(event['@timestamp'] + (30 * 60)) 
     " 
    } 
} 
+0

不适用于Logstash 2.2:发生Ruby异常:'@timestamp'字段必须是(LogStash :: Timestamp,不是时间' – baudsp

+0

哎呦。我不喜欢'ruby'过滤器的一点是它们是在Logstash版本之间往往会变得脆弱我已经编辑了代码片段以便它能在2.2 – rutter

+0

中工作我们不知道在这个问题中使用了哪个版本,所以你以前的答案也可以适用。无论如何,你的答案是比我的更好,所以我会删除它,并且我学到了一些东西,谢谢。 – baudsp

相关问题