Logstash event @timestamp adjustment

3

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.

    
por Guy 09.11.2015 / 16:38

1 resposta

1

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)
    
por 05.04.2016 / 18:25