【问题标题】:Converting epoch time to date in logstash using ruby filter使用 ruby 过滤器在logstash中将纪元时间转换为日期
【发布时间】:2018-02-22 18:32:47
【问题描述】:
我的配置中有一个字段名称“时间戳”。它以纪元时间(毫秒)保存一组数据。我想使用 Ruby 过滤器将数组中的每个纪元时间转换为 Kibana 可使用的日期格式。我正在尝试转换每个日期字段并将其作为数组存储在一个新字段中。我收到语法错误。谁能帮我吗 ?我是 Ruby 新手。
ruby {
code => {'
event.get("timestamp").each do |x| {
event["timestamp1"] = Time.at(x)
}
'}
}
【问题讨论】:
标签:
ruby
logstash
logstash-configuration
【解决方案1】:
我不了解logstash,但您在引号中包含的Ruby 代码是无效的。试试这个:
ruby {
code => {'
event.get("timestamp").each { |x| event["timestamp1"] = Time.at(x) }
'}
}
如果你想让你的时间戳键增加,那么你需要包含一个索引:
ruby {
code => {'
event.get("timestamp").each_with_index { |x, i| event["timestamp#{i}"] = Time.at(x) }
'}
}
【解决方案2】:
//这将采用时间戳数组,其值从纪元时间开始以毫秒为单位,并创建一个具有解析时间的新字段。此代码是 ruby 过滤器的一部分注意:这不会转换为日期字段格式
code => '
timestamps = Array.new
event.get("timestamp").each_with_index { |x, i|
timestamps.push(Time.at(x.to_i / 1000)) }
event.set( "timestamp1" , timestamps)
'