排查写入数据的问题
了解如何在写入 InfluxDB Clustered 时避免意外结果和从错误中恢复。
处理写入响应
当您发送写入请求时,InfluxDB Clustered 会执行以下操作
验证请求。
如果成功,则尝试从请求正文中摄取数据;否则,使用错误状态响应。
摄取或拒绝批处理中的数据,并返回以下 HTTP 状态码之一
204 No Content
:批处理中的所有数据均已摄取。400 Bad Request
:部分或全部数据已被拒绝。未被拒绝的数据将被摄取并可查询。
响应正文包含有关被拒绝的点的错误详细信息,最多 100 个点。
写入是同步的——响应状态指示写入的最终状态,并且所有摄取的数据均可查询。
为确保 InfluxDB 按照您请求的顺序处理写入,请在发送下一个请求之前等待响应。
查看 HTTP 状态码
InfluxDB 使用传统的 HTTP 状态码来指示请求的成功或失败。响应正文的 message
属性可能包含有关错误的更多详细信息。写入请求返回以下状态码
HTTP 响应代码 | 消息 | 描述 |
---|---|---|
204 “成功” | 如果 InfluxDB 摄取了数据 | |
400 “错误请求” | 有关被拒绝的点的错误详细信息,最多 100 个点:line 包含第一个被拒绝的行,message 描述拒绝原因 | 如果部分或全部请求数据不被允许(例如,如果格式错误或超出存储桶的保留期)——响应正文指示是否发生了部分写入,或者是否所有数据都被拒绝 |
401 “未授权” | 如果缺少或格式错误的 Authorization 标头,或者 令牌 没有写入数据库的权限。请参阅写入请求中使用凭据的示例。 | |
404 “未找到” | 请求的资源类型(例如,“组织”或“数据库”)和资源名称 | 如果未找到请求的资源(例如,组织或数据库) |
500 “内部服务器错误” | 错误的默认状态 | |
503 “服务不可用” | 如果服务器暂时不可用以接受写入。Retry-After 标头描述了何时再次尝试写入。 |
如果您的数据未写入数据库,请参阅如何排查被拒绝的点。
排查失败问题
如果您注意到数据库中缺少数据,请执行以下操作
- 检查响应正文中的
message
属性,以获取有关错误的详细信息。 - 如果
message
描述字段错误,请排查被拒绝的点。 - 验证所有行是否包含有效的语法 (Line Protocol)。
- 验证数据中的时间戳是否与请求中的精度参数匹配。
- 通过优化写入,最大限度地减少有效负载大小和网络错误。
排查被拒绝的点
InfluxDB 拒绝与现有存储桶数据位于同一分区(默认分区是按 measurement 和天)内的点,并且这些点与现有字段的数据类型不同。
检查被拒绝的数据点与同一数据库和分区内的点之间是否存在字段数据类型差异——例如,您是否尝试将 string
数据写入 int
字段?
此页内容是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。