Logstash:无法识别的@timestamp值,将当前时间设置为@timestamp,_ @ timestamp字段中的原始时间

时间:2017-08-10 09:40:44

标签: logstash elastic-stack logstash-configuration

我有发送到logstash的json日志消息,如下所示:

{"@timestamp":"2017-08-10 11:32:14.619","level":"DEBUG","logger_name":"application","message":"Request processed in 1 ms"}

使用以下命令配置logstash:

json {
    source => "message"
}

date {
  match => ["@timestamp", "yyyy-MM-dd HH:mm:ss.SSS"]
  timezone => "Europe/Paris"
}

但我在日志中有这个警告:

[2017-08-10T11:21:16,739][WARN ][logstash.filters.json    ] Unrecognized @timestamp value, setting current time to @timestamp, original in _@timestamp field {:value=>"\"2017-08-10 11:20:34.527\""}

我尝试了不同的配置,比如在空格周围添加引号,在日期过滤器之前使用mutate重命名字段(结果具有相同的警告,并且错误表示时间戳丢失)等等......

在弹性搜索中存储的值中,时间戳是解析日志的时间而不是原始时间(2/3秒后)。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我认为问题是源消息中的字段名为@timestamp,就像默认情况一样。

我们通过重命名源中的字段来解决它,将配置添加到:

    date {
  match => ["apptimestamp", "yyyy-MM-dd HH:mm:ss.SSS"]
  timezone => "Europe/Paris"
}