Logstash正在解析我的事件的事件时间(@timestamp)。但是,我希望还拥有ELK摄取活动的日期。
我知道date
可以很好地提取时间戳。但是,我不知道怎么说"把当前时间放在任意字段中#34;
我正在做以下事情,但必须有更好的方法。
ruby {
code => "event['ingest_time'] = Time.now.utc.strftime '%FT%TZ'"
}
答案 0 :(得分:2)
对于logstash 5.x或更高版本,您需要使用:
es:
attributes:
password: Contraseña
name: Nombre
activerecord:
attributes:
user:
license_number: Numero de licencia
如果您的数据中没有时间戳,则可以使用下面的行,因为logstash如果缺少则添加一个
ruby {
code => "event.set('logstash_time' , Time.now.utc.strftime('%FT%TZ'))"
}
但是如果你已经有了,那么就不能使用这种方法。请注意,如果您稍后设置了add_field => [ "received_at", "%{@timestamp}" ]
的时间戳,则可能会在此之前完成...
我在使用第一个时没有看到任何性能问题而且它一直有效,因此建议使用一个
答案 1 :(得分:0)
以下内容创建了一个由Elasticsearch正确识别的ISO8601格式日期。
filter {
ruby {
code => "event.set('ingested_time' , Time.now.utc)"
}
}
_source:
"ingested_time" : "2019-01-24T17:40:07.990Z",
映射:
"ingested_time" : {
"type" : "date"
},
答案 2 :(得分:-4)
add_field => [ "received_at", "%{@timestamp}" ]