расчет разницы во времени elasticsearch-logstash (ELK 5.3)

Мне нужно рассчитать разницу во времени вручную без плагина с истекшим сроком действия, так как время окончания варьируется и может достигать 24 часов с очень большим количеством журналов. Мне удалось получить время начала из старого журнала:

elasticsearch {
                query => "Event:'Sent' AND ID:%{[ID]}"
                index => "mylog*"
                result_size => "1"
                enable_sort => "false"
                fields => { "@timestamp" => "SentTime" }
        }

На самом деле он отлично работает и возвращает правильную дату в формате «2017-03-29T22:00:03.000Z».

А вот с: возвращаем значения в таком формате "18 января 1970, 08:07:09.056"

 ruby {
          code => "event.set('[SecondsToDeliver]', event.get('@timestamp').to_f - event.get('SentTime').to_f)"
          add_tag => [ "rubyfilter" ]
         }

Я уверен, что это тривиальная синтаксическая ошибка, но я не могу ее поймать.


person Michael Eino    schedule 10.04.2017    source источник


Ответы (1)


решается по этой математике:

elasticsearch {
                        hosts => ["Your elastic host"]
                        query => 'Event:"Sent" AND ID:"%{ID}"'
                        fields => { "@timestamp" => "SentTime" }
                        tag_on_failure => [ "NoSent_ID" ]
                }

             date {
                match => ["[SentTime]", "ISO8601"]
                target => "[SentTime]"
             }
        ruby {
                    init => "require 'time'"
                    code => "duration = (event.get('@timestamp') - event.get('SentTime')) rescue nil; event.set('Log_duration', duration); "
                 }
person Michael Eino    schedule 27.04.2017