我在 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