Logstash事件@timestamp调整
Logstash event @timestamp adjustment
我想从"event.end"和"event.duration"计算"event.start",所以减去"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))
^
感谢您的帮助。
event.set('event.duration', event.get('event.duration').to_i * 1000000000))
您有 2 个打开 (
和 3 个关闭 )
,这会导致 unexpected ')'
错误。只需删除编译器用 ^
.
指示的最后一个右括号
我想从"event.end"和"event.duration"计算"event.start",所以减去"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))
^
感谢您的帮助。
event.set('event.duration', event.get('event.duration').to_i * 1000000000))
您有 2 个打开 (
和 3 个关闭 )
,这会导致 unexpected ')'
错误。只需删除编译器用 ^
.