首页/数据/NoSQL 速查//api/v2/write 写入接口

/api/v2/write 写入接口

InfluxDB 2.x 用 HTTP 接口写数据:POST /api/v2/write 带 org、bucket 与 precision 参数,Authorization 用 Token;成功返回 204,无返回体。

NoSQL 速查数据更新于 2026-10-13

写入接口怎么用

InfluxDB 2.x 对外只有一个写入入口:POST /api/v2/write,查询参数声明 org、bucket 与 precision,请求头用 Token 鉴权,请求体是行协议文本,一行代表一个数据点。写入成功返回 204 且没有响应体,参数或行协议出错时返回 400,响应体会说明具体原因。官方客户端、Telegraf 与自研采集器走的都是这个接口,批量与压缩策略直接决定写入吞吐。

批量与压缩

采集器通常按批发送,一次几百到几千行,请求体支持 gzip,压缩后带宽占用通常能降到三分之一左右。自研采集器守住三件事就够了:复用连接、批量发送、开启压缩。行协议里标签值与字段值中的空格、逗号、等号需要转义,否则整行会被解析成错误的测量或字段。

基本信息

接口POST /api/v2/write?org=<org>&bucket=<bucket>&precision=ns
请求头Authorization: Token <token>;Content-Type: text/plain; charset=utf-8;压缩时加 Content-Encoding: gzip
请求体行协议文本:measurement,tag=value field=value timestamp
返回码204 成功;400 行协议或参数错误;401 鉴权失败;404 bucket 不存在;413 请求体超限
适用版本InfluxDB 2.x;1.x 的写入接口是 POST /write?db=<db>

最小示例

最小示例
# 写一个点:measurement,tag=value field=value timestamp
curl -i -XPOST "http://127.0.0.1:8086/api/v2/write?org=my-org&bucket=my-bucket&precision=s" \
  -H "Authorization: Token $INFLUX_TOKEN" \
  --data-binary 'cpu,host=web-1 usage=0.73 1719792000'

# 压缩上传:先 gzip 再发送,省带宽
gzip -c data.lp | curl -XPOST "http://127.0.0.1:8086/api/v2/write?org=my-org&bucket=my-bucket&precision=ns" \
  -H "Authorization: Token $INFLUX_TOKEN" -H "Content-Encoding: gzip" --data-binary @-

# 时间戳单位由 precision 决定,写毫秒数据必须传 ms
curl -i -XPOST "http://127.0.0.1:8086/api/v2/write?org=my-org&bucket=my-bucket&precision=ms" \
  -H "Authorization: Token $INFLUX_TOKEN" --data-binary 'mem,host=web-1 used=1024 1719792000000'

典型使用场景

  • 自研采集器按批推送指标,避免逐点发送带来的连接开销
  • 历史数据导入:把行协议文件批量灌进 bucket
  • 联调排查:命令行手工写一条数据,验证 Token 与 bucket 是否正确
  • 压测验证:用同一接口测写入吞吐与存储引擎压力
  • 数据回填:补写缺失时间段的数据,保持时间线连续

返回码处理

返回码含义处理方式
204写入成功且无响应体按批次继续写
400行协议或参数错误响应体给出行级原因,记录原文
401Token 无效或权限不足检查 Token 的写权限与有效期
404bucket 不存在核对 bucket 名称与 org
413请求体超过上限缩小批次体积后重发
precision 决定时间戳的解释单位,与数据实际单位错配时写入依然返回 204,数据却会落到错误的时间点,只能靠查询时间范围来核对。
忽略非 204 返回码继续写入会静默丢数据:400 记录原文并告警,401 与 404 停止重试,只有 5xx 才值得退避重试。

易错点

  • precision 与时间戳单位不匹配会让数据落到错误的时间点,上线前必须用小批量数据核对写入后的时间范围
  • 400 的响应体会给出具体行号与错误原因,采集器应把原文一起写进日志,否则只能靠猜来修正行协议
  • 忽略非 204 返回码继续写入会静默丢数据,重试策略要按状态码区分,鉴权与参数类错误重试多少次都不会成功
  • 批次体积过大触发 413 之后仍按原大小重发会陷入无效循环,应按响应调小批次行数

数据来源与参考

  • InfluxData Docs: /api/v2/write
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌