У меня есть стандартные файлы журнала Windows IIS с информацией о дате / времени события и затраченном времени (в миллисекундах).
Я хотел бы иметь возможность настраивать время события (@timestamp), вычитая «затраченное время», чтобы иметь возможность записывать, когда событие началось, а не когда оно было завершено.
Я смотрел на использование рубинового плагина, но мои знания рубина равны нулю.
Моя первая попытка такова:
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 секунды (2120 миллисекунд). Я хочу иметь @timestamp_adj для записи 22: 59: 48.880
Либо:
Как преобразовать теперь «числовую» метку времени обратно в строку времени, которую распознает Elasticsearch? или как мне выполнить математику даты / времени без нарушения кодировки даты / времени? Заранее спасибо.
Вы можете создать новый объект времени с меткой времени и вычесть затраченное время следующим образом
Time.new(event['@timestamp_adj']) - (event['timetaken'] / 1000)