Назад | Перейти на главную страницу

Корректировка события @timestamp в Logstash

У меня есть стандартные файлы журнала 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)