添加摄取Logstash事件的日期

时间:2015-02-16 21:24:51

标签: elasticsearch logstash

Logstash正在解析我的事件的事件时间(@timestamp)。但是,我希望拥有ELK摄取活动的日期。

我知道date可以很好地提取时间戳。但是,我不知道怎么说"把当前时间放在任意字段中#34;

我正在做以下事情,但必须有更好的方法。

 ruby {
   code => "event['ingest_time'] = Time.now.utc.strftime '%FT%TZ'"
 }

3 个答案:

答案 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}" ]