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

标签 elasticsearch logstash filebeat

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

相关文章:

elasticsearch - 尝试启动Logstash时如何解决问题 'Unsupported major.minor version 52.0'

elasticsearch - 从日志消息中提取时间戳

ElasticSearch似乎不支持数组查找

indexing - Logstash 未将数据从外部文件写入Elasticsearch

elasticsearch - 将 Logstash 与 Elasticsearch 输出结合使用时,.raw 字段从何而来?

datetime - Logstash配置文件中的日期解析错误

elasticsearch - 带有 filebeat 的 K8s Elasticsearch 在重启后保持 'not ready'

elasticsearch - 使用 Homebrew 软件升级Elasticsearch 7.3

elasticsearch - Elasticsearch范围查询字符串格式的数字

elasticsearch - 当所有嵌套文档均匹配术语条件时,过滤elasticsearch父文档