使用 ruby 过滤器将纪元时间转换为 logstash 中的日期

Converting epoch time to date in logstash using ruby filter

我的配置中有一个字段名称 "timestamp"。它以纪元时间(毫秒)保存一组数据。我想使用 Ruby 过滤器将数组中的每个纪元时间转换为 Kibana 可使用的日期格式。我正在尝试转换每个日期字段并将其作为数组存储在新字段中。我收到语法错误。谁能帮我吗 ?我是 Ruby.

的新手
ruby {
code => {'
event.get("timestamp").each do |x| {    
event["timestamp1"] = Time.at(x)
    } 
'}
}

我不知道 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) } 
'}
}

//这将采用一个时间戳数组,其中包含从纪元时间开始的以毫秒为单位的值,并创建一个具有解析时间的新字段。此代码是 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)
  '