在Elastic Search中解码JSON和损坏的日志时出错

时间:2019-10-09 07:34:21

标签: elasticsearch logstash filebeat

我正在Ubuntu 16.0中使用5.5版本的麋鹿堆栈

我的日志坏了,无法正确写入弹性文件,导致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"}

1 个答案:

答案 0 :(得分:1)

由于您已经说过json日志打印得不好,所以我认为输入配置的多行设置会引起问题。

在我看来,当您以json格式记录日志时,不需要任何多行设置,而且的打印效果不是很好,这意味着整个json对象(=日志事件)都写在一行中

您已经指定

  

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