我有标准的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)