Você pode criar um novo objeto de hora com o registro de data e hora e subtrair o tempo gasto como este
Time.new(event['@timestamp_adj']) - (event['timetaken'] / 1000)
Eu tenho arquivos de log padrão do Windows com informações de carimbo de data / hora do evento e timetaken (em milissegundos).
Eu gostaria de poder ajustar o tempo do evento (@timestamp) subtraindo o "timetaken" para poder gravar quando o evento começou, e não quando ele foi concluído.
Eu olhei para usar o plug-in ruby mas meu conhecimento de rubi é zero.
Minha primeira tentativa é esta:
ruby {
code => "event['@timestamp_adj'] = (event['@timestamp'].to_f - (event['timetaken'].to_f/1000)))"
}
No entanto, isso atribui o registro de data e hora a um valor numérico, como é possível recuperá-lo para uma data?
Alguma data da amostra: (com redações e manchetes para dados sensíveis)
{
"@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
}
Neste caso (confeccionado), o tempo do evento é 22: 59: 49.000 e leva 2,120 segundos (2,120 milissegundos) para ser concluído. O que eu quero é @timestamp_adj para gravar 22: 59: 48.880
Ou:
Como converter o registro de data e hora "numérico" agora em uma string de tempo que o Elasticsearch reconhecerá? ou como faço a data / hora matemática sem corromper a data / hora de codificação? Agradecemos antecipadamente.
Você pode criar um novo objeto de hora com o registro de data e hora e subtrair o tempo gasto como este
Time.new(event['@timestamp_adj']) - (event['timetaken'] / 1000)