filebeat @timestamp 未被覆盖

Let*_*zee 5 json elasticsearch logstash kibana filebeat

我用来filebeat将日志写入elasticsearch服务器。我的日志是json格式的。每行都是一个 json 字符串,如下所示

{"@timestamp": "2017-04-11T07:52:480,230", "user_id": "1", "delay": 12}
Run Code Online (Sandbox Code Playgroud)

我希望@timestamp日志中的字段替换@timestampfilebeat 在读取日志时创建的字段。在我的 kibana 仪表板上我总是得到

json_error:@timestamp 未覆盖(2017-04-11T07:52:48,230 解析错误)

最后看到@timestampfilebeat 创建的字段

我的 filebeat conf 包含有关覆盖字段的那些行

json.keys_under_root: true
json.overwrite_keys: true
json.add_error_key: true
Run Code Online (Sandbox Code Playgroud)

另外,从我的log4jconf中@timestamp,我的日志中创建的字段是ISO8601格式化的。知道问题是什么以及为什么该@timestamp字段没有被覆盖吗?

Let*_*zee 4

问题在于生成的时间戳的格式log4j"2017-04-11T09:38:33.365Z"Filebeat 期望其必须T在末尾中间采用某种形式Z,并在毫秒之前使用点而不是逗号。

我发现最快(而且有点脏)的方法是使用以下模式

pattern='{"@timestamp": "%d{YYYY-MM-dd}T%d{HH:mm:ss.SSS}Z"}
Run Code Online (Sandbox Code Playgroud)

可以在这里找到类似的问题。建议的解决方案并不能解决 filebeat 问题,因为它使用逗号!