排查写入数据的问题
了解如何在写入 InfluxDB 时避免意外结果并从错误中恢复。
处理 write
和 delete
响应
如果 InfluxDB OSS 成功地将所有请求数据写入 Bucket,InfluxDB 将返回成功(HTTP 204
状态码)。批处理中的第一个被拒绝的点会导致 InfluxDB 拒绝整个批处理,并使用 HTTP 错误状态 响应。
查看 HTTP 状态码
InfluxDB 使用传统的 HTTP 状态码来指示请求的成功或失败。写入请求返回以下状态码
204
成功:所有请求数据已写入 Bucket。400
错误请求:请求中的 line protocol 数据格式错误。响应正文包含数据中的第一个格式错误的行。所有请求数据都被拒绝,未写入。401
未授权:可能指示以下情况之一Authorization: Token
标头 缺失或格式错误。- API 令牌 值从标头中缺失。
- API 令牌没有足够的权限写入组织和 Bucket。有关令牌类型和权限的更多信息,请参阅 管理 API 令牌。
404
未找到:请求的资源(例如组织或 Bucket)未找到。响应正文包含请求的资源类型,例如“organization”和资源名称。413
请求实体过大:所有请求数据都被拒绝,未写入。仅当 Go (golang)ioutil.ReadAll()
函数引发错误时,InfluxDB OSS 才会返回此错误。500
内部服务器错误:错误的默认 HTTP 状态。503
服务不可用:服务器暂时不可用,无法接受写入。Retry-After
标头描述了何时再次尝试写入。
响应正文的 message
属性可能包含有关错误的更多详细信息。如果您的某些数据未写入 Bucket,请参阅如何 排查被拒绝的点。
排查故障
如果您注意到 Bucket 中缺少数据,请执行以下操作
- 检查响应正文中的
message
属性,以获取有关错误的详细信息。 - 如果
message
描述了字段错误,请 排查被拒绝的点。 - 验证所有行是否包含有效的语法 (line protocol 或 CSV)。
- 验证时间戳是否与 精度参数 匹配。
- 通过 优化写入,最大限度地减少有效负载大小和网络错误。
排查被拒绝的点
InfluxDB 由于以下原因拒绝点
- 批处理包含另一个具有相同序列的点,但其中一个字段具有不同的值类型。
- Bucket 包含另一个具有相同序列的点,但其中一个字段具有不同的值类型。
检查缺失数据点与具有相同 序列 的其他点之间的 字段类型 差异——例如,您是否尝试将 string
数据写入 int
字段?
此页面是否对您有帮助?
感谢您的反馈!