Logstash事件@timestamp调整

我有标准的Windows IIS日志文件与事件date/时间戳记信息和timetaken(以毫秒为单位)。

我希望能够通过减去“timetaken”来调整事件时间(@timestamp),以便能够logging事件何时开始,而不是什么时候完成。

我已经看过使用ruby插件,但我的ruby知识是零。

我的第一个尝试是这样的:

ruby { code => "event['@timestamp_adj'] = (event['@timestamp'].to_f - (event['timetaken'].to_f/1000)))" } 

但是,这将时间戳转换为数字,如何将其返回到date?

一些样本date:(与敏感数据的redactions和mangles)

 { "@timestamp" => "2015-10-22T22:59:49.000Z", "timestamp" => "2015-10-22 23:59:49", "method" => "GET", "page" => "/spacer.gif", "response" => "200", "timetaken" => "2120", "@timestamp_adj" => 1445554789.0 } 

在这个(组成)的情况下,事件时间是22:59:49.000,花了2.120秒(2,120毫秒)来完成。 我想要的是@timestamp_adjlogging22:59:48.880

或者:

如何将现在的“数字”时间戳转换回Elasticsearch将识别的时间string? 或者如何做date/时间math而不破坏date/时间编码? 提前致谢。

您可以使用时间戳创build一个新的时间对象,并减去这样的时间

 Time.new(event['@timestamp_adj']) - (event['timetaken'] / 1000)