Logstash解析合法JSON文件失败,如何修复?
Logstash JSON解析错误(org.jruby.RubyHash转RubyIO)修复方案
你遇到的类型转换错误和_jsonparsefailure标记,大概率是Logstash管道配置的问题(既然你确认JSON日志本身合法),以下是具体修改方向:
检查
json过滤器的source字段配置
错误原因:如果source指定的是一个哈希类型的字段(比如误写为数组格式source => [message],或者字段已经被之前的插件转成了哈希),json过滤器会尝试解析哈希而非原始JSON字符串,触发类型转换错误。
修改方式:确保source指向存储原始JSON文本的字符串字段(通常是message):filter { json { source => "message" # 这里必须是字符串类型的字段 target => "parsed_data" # 可选,指定解析后数据的存储位置 } }避免重复解析JSON
错误原因:如果输入插件(比如file)已经配置了codec => "json",会自动把每行日志解析成哈希结构,此时再用json过滤器解析已有的哈希字段,就会报错。
修改方式:二选一即可:- 移除
filter块中的json过滤器; - 将输入插件的
codec改为plain,让json过滤器负责解析原始字符串:input { file { path => "/path/to/your/logs.json" codec => "plain" } }
- 移除
强制转换字段类型为字符串
如果之前的插件逻辑意外将目标字段转成了哈希,可以在json过滤器前添加mutate插件强制转换字段类型:filter { mutate { convert => { "message" => "string" } } json { source => "message" } }
内容的提问来源于stack exchange,提问作者Eugene Goldberg
相关产品推荐
相关产品推荐

