Logstash 事件@timestamp 调整

Logstash 事件@timestamp 调整

我有标准的 Windows IIS 日志文件,其中包含事件日期/时间戳信息和所用时间(以毫秒为单位)。

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

我曾经考虑过使用 ruby​​ 插件,但是我对 ruby​​ 的了解为零。

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

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

但是,这会将时间戳转换为数字,如何将其恢复为日期?

一些示例日期:(对敏感数据进行了删节和篡改)

{
"@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_adj 记录 22:59:48.880

任何一个:

如何将现在的“数字”时间戳转换回 Elasticsearch 可以识别的时间字符串?或者如何在不破坏日期/时间编码的情况下进行日期/时间数学运算?提前致谢。

答案1

您可以使用时间戳创建一个新的时间对象,然后减去所用的时间,如下所示

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

相关内容