Событие Logstash @ timestamp корректировка - PullRequest
0 голосов
/ 15 октября 2019

Я хочу вычислить "event.start" из "event.end" и "event.duration", поэтому вычитание "event.end" и "event.duration"

"event.end":" 2019-10-15T07: 34: 14.000Z ",

" event.duration ": 30, (с.)

После этого event.duration преобразуется в наносекундыто есть умножение * 1000000000.

Я смотрел на использование плагина ruby, но мои знания о ruby ​​равны нулю.

Моя первая попытка такая:

if !([event.duration] == 0) {
    mutate  {
        add_field => {"event.end" => "%{@timestamp}" }
            }
            ruby {
#                   init => "require 'time'"
#                   code => "
#                           diff = event.get('start_date') - event.get('end_date')
#                           event.set('timediff') = diff;
#                           "
                        code => "event.set('event.duration', event.get('event.duration').to_i * 1000000000))"   
            }
        }

Но получите следующее сообщение об ошибке:

[2019-10-15T12:11:05,640][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SyntaxError) (ruby filter code):2: syntax error, unexpected ')'
 event.set('event.duration', event.get('event.duration').to_i * 1000000000)) 
                                                                           ^

Спасибо за любую помощь.

1 Ответ

1 голос
/ 15 октября 2019

event.set ('event.duration', event.get ('event.duration'). To_i * 1000000000))

У вас есть 2 открытия ( и 3закрытие ), что приводит к ошибке unexpected ')'. Просто удалите последние закрывающие скобки, которые компилятор указал с помощью ^.

...