Apache Drill HTTP存储JSON解析失败问题求助
排查Apache Drill HTTP存储JSON解析失败的方案
根据报错信息Unexpected character('<' (code 60),核心问题是API返回的内容不是有效的JSON,而是以<开头的HTML内容(比如错误页、重定向页面),以下是具体排查步骤:
1. 直接验证API返回的实际内容
用curl或Postman直接请求配置中的URL,查看返回结果:
curl http://.../api/v1/query
如果返回HTML(比如400错误页、登录提示),说明API本身没有返回JSON,哪怕Content-Type头标注为application/json,这是最常见的原因。
2. 检查Prometheus API请求参数是否完整
Prometheus的/api/v1/query接口必须携带query参数(比如?query=up),如果没有传这个参数,部分Prometheus实例会返回HTML格式的错误页面,而非JSON响应。确认你的URL是否包含了必要的查询参数。
3. 调整requireTail配置
你的配置中requireTail: true,这个参数是用于处理流式输出的JSON数据源(比如持续推送的日志流),但Prometheus的query接口是单次返回完整JSON的接口,开启这个参数会导致Drill错误地处理响应内容,建议改为false。
4. 排查请求是否被拦截或重定向
检查是否存在反向代理、防火墙或身份验证网关,将请求重定向到HTML格式的登录页面,或者返回HTML格式的错误响应(比如500内部错误),这种情况下Content-Type头可能被错误设置为application/json,但实际内容是HTML。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

