filebeat @timestamp 未被覆盖
filebeat @timestamp not overwritten
我使用 filebeat
将日志写入 elasticsearch
服务器。我的日志采用 json 格式。每行都是一个 json 字符串,看起来像这样
{"@timestamp": "2017-04-11T07:52:480,230", "user_id": "1", "delay": 12}
我希望日志中的 @timestamp
字段替换 filebeat 在读取日志时创建的 @timestamp
字段。在我的 kibana 仪表板上,我总是得到
json_error:@timestamp not overwritten (parse error on 2017-04-11T07:52:48,230)
并最终看到由 filebeat
创建的 @timestamp
字段
我的 filebeat conf 包括那些关于覆盖字段的行
json.keys_under_root: true
json.overwrite_keys: true
json.add_error_key: true
另外,根据我的 log4j
conf,在我的日志中创建的 @timestamp
字段采用 ISO8601
格式。知道问题出在哪里以及为什么 @timestamp
字段没有被覆盖吗?
问题是 log4j
生成的时间戳的格式。
Filebeat 期望某种形式的 "2017-04-11T09:38:33.365Z"
它必须在中间 T
最后 Z
并且在毫秒之前用点而不是逗号。
我发现最快(也有点脏)的方法是使用以下模式
pattern='{"@timestamp": "%d{YYYY-MM-dd}T%d{HH:mm:ss.SSS}Z"}
可以找到类似的问题 here。建议的解决方案不能解决 filebeat 问题,因为它使用逗号!
我使用 filebeat
将日志写入 elasticsearch
服务器。我的日志采用 json 格式。每行都是一个 json 字符串,看起来像这样
{"@timestamp": "2017-04-11T07:52:480,230", "user_id": "1", "delay": 12}
我希望日志中的 @timestamp
字段替换 filebeat 在读取日志时创建的 @timestamp
字段。在我的 kibana 仪表板上,我总是得到
json_error:@timestamp not overwritten (parse error on 2017-04-11T07:52:48,230)
并最终看到由 filebeat
创建的@timestamp
字段
我的 filebeat conf 包括那些关于覆盖字段的行
json.keys_under_root: true
json.overwrite_keys: true
json.add_error_key: true
另外,根据我的 log4j
conf,在我的日志中创建的 @timestamp
字段采用 ISO8601
格式。知道问题出在哪里以及为什么 @timestamp
字段没有被覆盖吗?
问题是 log4j
生成的时间戳的格式。
Filebeat 期望某种形式的 "2017-04-11T09:38:33.365Z"
它必须在中间 T
最后 Z
并且在毫秒之前用点而不是逗号。
我发现最快(也有点脏)的方法是使用以下模式
pattern='{"@timestamp": "%d{YYYY-MM-dd}T%d{HH:mm:ss.SSS}Z"}
可以找到类似的问题 here。建议的解决方案不能解决 filebeat 问题,因为它使用逗号!