You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash解析Python日志出现_jsonparsefailure错误如何解决

你出现_jsonparsefailure的核心原因是配置冲突:你在Logstash的UDP输入中指定了json codec,要求输入内容必须是标准JSON格式,但你手动配置了自定义的日志字符串格式,python-logstash发送到Logstash的内容是格式化后的纯文本,而非JSON,因此JSON解析失败。

方案1:无需写Grok,直接使用python-logstash原生能力(推荐)

这是成本最低的方案,操作如下:

  • 删掉你的日志配置中自定义的format字段,python-logstash的LogstashHandler默认会自动将日志级别、行号、方法名、自定义extra字段全部序列化为标准JSON结构发送。
  • 你现有的logstash.conf的UDP输入JSON codec可以直接正常工作,所有字段包括extra里的自定义参数都会被自动解析为Elasticsearch的独立字段,无需额外处理。

方案2:保留自定义日志格式,编写Grok规则解析

如果你必须保留当前的自定义日志格式,按以下步骤修改配置:

  1. 修改logstash.conf的UDP输入配置,移除JSON codec,使用默认的纯文本编码:
input {
  udp {
      port => 9010
  }
}
  1. 新增filter段,添加Grok匹配规则和extra字段解析逻辑:
filter {
  # 匹配你的自定义日志格式
  grok {
    match => { "message" => "\[%{DATA:asctime}\] - %{LOGLEVEL:level} - %{DATA:logger_name} - %{DATA:function_name}:%{NUMBER:line_number:int} : %{DATA:content} %{GREEDYDATA:extra}" }
    remove_field => "message"
  }
  # 解析extra字段为独立KV
  json {
    source => "extra"
    remove_field => "extra"
  }
}

按照你使用的python-logstash库的实现逻辑,extra字段本身会被序列化为标准JSON,上面的json filter会自动将extra里的所有键值对拆为独立字段存入Elasticsearch。

内容的提问来源于stack exchange,提问作者Eilon Reif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:45:04