在弹性搜索中解码 JSON 和损坏的日志时出错



我在 Ubuntu 5.5 中使用 16.0 版的 elk 堆栈

我的日志被破坏并且无法正确写入弹性,这导致 json.erros

像下面一样

Error decoding JSON: invalid character 'e' in literal null (expecting 'u')"  

经常收到json.errors,而这些日志没有正确读取或写入elasticsearch?

这种情况每 5 到 10 分钟发生一次。请帮我解决。

木花中损坏的原木截图

我的示例日志是:

{"log":"2019-10-01 07:18:26:854*[DEBUG]*cluster2-nio-worker-0*Connection*userEventTriggered*Connection[cassandraclient/10.3.254.137:9042-1, inFlight=0, closed=false] was inactive for 30 seconds, sending heartbeatn","stream":"stdout","time":"2019-10-01T07:18:26.85462769Z"}

既然你已经说过 json 日志没有很好地打印出来,我假设你的输入配置的多行设置导致了问题。

在我看来,当您拥有 json 格式的日志并且它们没有很好地打印时,您不需要任何多行设置,这意味着整个 json 对象 (= log event( 都写在一行中。

您已经指定了

json.message_key:日志

这应该只完成工作。

所以总结一下:

删除多行设置,然后重试。您的配置应如下所示:

filebeat.inputs: 
- type: log 
paths: 
- "/var/log/containers/*.log"
tags: ["kube-logs"]
symlinks: true 
json.message_key: log
json.keys_under_root: true 
json.add_error_key: true

最新更新