我在Ubuntu 16.0中使用5.5版本的麋鹿堆栈
我的日志坏了并且无法正确写入 flex 文件,这导致json.erros
像下面
Error decoding JSON: invalid character 'e' in literal null (expecting 'u')"
变得json.errors非常频繁,并且那些日志没有读入或正确写入Elasticsearch?
每5到10分钟就会发生一次。请帮我解决。
screenshot of broken logs in kibana
我的示例日志是:
{"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 heartbeat\n","stream":"stdout","time":"2019-10-01T07:18:26.85462769Z"}
最佳答案
既然您已经声明json日志打印得不好,所以我认为您的输入配置的多行设置导致了问题。
在我看来,当您以jsont格式和的格式记录日志时,不需要任何多行设置,这意味着整个json对象(= log事件)都写在一行中。
您已经指定
json.message_key: log
这完全可以完成工作。
总结一下:
删除多行设置,然后重试。您的配置应如下所示:
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
关于elasticsearch - 在Elastic Search中解码JSON和损坏的日志时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58299154/