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

Logstash JSON插件解析日志时出现Unexpected end-of-input in VALUE_STRING错误的原因排查

Logstash JSON解析报错:Unexpected end-of-input in VALUE_STRING 的根源分析

先还原下你的问题场景:
你有一条日志行:

{"code":200,"message":"ok","responseBody":{"token":"asdadqwrqwkjrqwejr"},"time":"4545425244"}

但用Logstash的JSON插件解析时,logstash-plain.log里抛出了错误:

exception=>#< "LogStash" ::Json::ParserError: Unexpected end-of-input in VALUE_STRING

这个报错的核心原因是Logstash接收到的JSON内容不完整,解析器在读取字符串值的过程中突然遇到了输入结束的位置,具体可能有这几个常见情况:

  • 日志传输/写入时被截断拆分:你贴出来的日志是完整合法的JSON,但实际Logstash读取到的可能是不完整的片段——比如日志在写入文件时被中断、或者通过网络传输时丢包,导致某行JSON的字符串部分(比如token的取值、message的内容)还没写完就被截断了,解析器自然会报错“字符串还没结束就到输入末尾”。
  • 日志包含隐藏的特殊字符:有些日志生成时会混入不可见的控制字符、乱码或者不规范的换行符,表面看是完整的JSON,但这些特殊字符会干扰解析器的判断,让它误以为字符串还没结束,实际却已经到了日志末尾。
  • Logstash输入配置没处理好多行日志:如果你的日志生成时偶尔会把单条JSON拆成多行(比如某些应用日志会自动换行),但你没有在Logstash的输入插件(比如file输入)里配置multiline插件来合并这些多行内容,Logstash就会把每一行单独当作一条日志来解析,其中不完整的行就会触发这个报错。

你可以按这几个方向排查:

  1. 直接去Logstash读取的原始日志文件里,找到对应时间点的日志,确认是不是真的完整;
  2. 用jq命令(或者本地的JSON校验工具)把有问题的日志行丢进去校验,看是否真的是合法JSON;
  3. 检查Logstash的输入配置,确认是否需要配置多行合并规则来处理可能被拆分的JSON日志。

内容的提问来源于stack exchange,提问作者Ali farahzadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:09:09