elasticsearch 在弹性搜索中解码JSON和断开的日志时出错,elasticsearch,logstash,filebeat,elasticsearch,Logstash,Filebeat" /> elasticsearch 在弹性搜索中解码JSON和断开的日志时出错,elasticsearch,logstash,filebeat,elasticsearch,Logstash,Filebeat" />

elasticsearch 在弹性搜索中解码JSON和断开的日志时出错

elasticsearch 在弹性搜索中解码JSON和断开的日志时出错,elasticsearch,logstash,filebeat,elasticsearch,Logstash,Filebeat,我正在ubuntu 16.0中使用5.5版的elk堆栈 我的日志被破坏了,没有正确地写入elastic,这导致了json.erros 如下 Error decoding JSON: invalid character 'e' in literal null (expecting 'u')" 频繁地获取json.errors,并且这些日志没有正确地读写到elasticsearch中 每5到10分钟就会发生一次。请帮我解决它 我的示例日志是: {“log”:“2019-10-01 07:18

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

我的日志被破坏了,没有正确地写入elastic,这导致了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*连接*usereventtrigged*连接[cassandraclient/10.3.254.137:9042-1,inFlight=0,closed=false]未激活30秒,发送心跳信号\n”,“流”:“stdout”,“时间”:“2019-10-01T07:18:26.85462769Z”}

既然您已经声明json日志没有很好地打印出来,那么我假设是输入配置的多行设置导致了这些问题

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

您已经指定了

json.message_键: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

是的,这已经被修复,但你必须升级es版本。看一看:你能为那个特定的文件共享filebeat浏览配置吗?还有:日志文件中的JSON对象是否打印得很好,这意味着它们跨越多行?感谢您的回复@apt-get\u install\u skill以下是我的filebeat配置:
filebeat.registry\u文件:/var/log/containers/filebeat\u registry filebeat.inputs:-键入:日志路径:-“/var/log/containers/*.log”标记:[“kube日志”]symlinks:true json.message\u key:log json.keys\u根下:true json.add\u error\u key:true multiline.pattern:'^[0-9]{4}-[0-9]{2}-[0-9]{2}'multiline.negate:true multiline.match:after
日志文件中的JSON对象是否打印得很好,这意味着它们跨越多行?@apt-get\u install\u skill我已经这样做了,但它显示了以下弹出消息:记录信誉低于15的人的投票,但不更改公开显示的帖子分数。