[英]elasticsearch-logstash time difference calculation (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”格式返回正确的日期
但这很糟糕:以这种格式返回值“ 1970年1月18日,08:07:09.056”
ruby {
code => "event.set('[SecondsToDeliver]', event.get('@timestamp').to_f - event.get('SentTime').to_f)"
add_tag => [ "rubyfilter" ]
}
我敢肯定这是一个琐碎的语法错误,但我无法抓住它。
通过这个数学解决:
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); "
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.